Skip to main content

Topic: "hotness" (Read 161667 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • hit_ny
  • [*][*]
"hotness"
Reply #25
Quote
Rating is all fine and dandy,


Taken on thier own sure, but what if you take it a step further by averaging track ratings into an album rating. Now you know which albums are hot or not at a glance, which in a big library can be very useful. I think of best of's by series, by artist, by year etc.


Quote
When a song is played, its hotness should be given a boost (the amount of this boost is detailed below). As time passes since the last time a song was played, that song's hotness should decrease. So now we've got to define a decay period: the time it takes before a song's hotness dwindles to 0 again. The two factors that determine the length of this decay period are rating and play frequency.


I see this being useful when there are many users accessing a common library. But what about one user with a large library. Chances that you would have heard a particular good track would be far and between. OK once we skip ahead many months and play count gets increased it might have some relevance.

What i'm saying is how long will it take for the "hotness" concept to be useful ? Rating took forever, now that its done, have to listen to lots of stuff repeatedly to see results.

I find this subject interesting, just trying to offer some intelligent critiques.

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #26
Quote
Taken on thier own sure, but what if you take it a step further by averaging track ratings into an album rating. Now you know which albums are hot or not at a glance, which in a big library can be very useful. I think of best of's by series, by artist, by year etc.

Not possible with current formatting-strings. Strings can only see one track at once and cannot look ahead or behind.
  • Last Edit: 18 February, 2005, 02:38:23 PM by Lyx
I am arrogant and I can afford it because I deliver.

  • falconfox
  • [*][*][*]
"hotness"
Reply #27
i am still not getting any colors for my dots, i have an %added% tag in YYYYMMDD and %play_date% in YYYYMMDD , i have a %play_counter% tage and i have a column of hotness with "$blend(FFFFFF,0000FF,%_hotness%,100)●" in display for the column. then i have the code pasted just at the bottom of the column -> globals ->variables section. i have "use global variables for display checked as well as "make date info available" checked. I really want this to work, but i don't see what i am doing wrong.
Could this be because i don't use ratings at all?

@topdownjimmy: it would be helpful to maybe have a link to playcounter plugin as well as the rating plugin on your first post, it will make it easier for everyone.
  • Last Edit: 18 February, 2005, 05:15:52 PM by falconfox

"hotness"
Reply #28
Quote
i am still not getting any colors for my dots, i have an %added% tag in YYYYMMDD and %play_date% in YYYYMMDD , i have a %play_counter% tage and i have a column of hotness with "$blend(FFFFFF,0000FF,%_hotness%,100)●" in display for the column. then i have the code pasted just at the bottom of the column -> globals ->variables section. i have "use global variables for display checked as well as "make date info available" checked. I really want this to work, but i don't see what i am doing wrong.
Could this be because i don't use ratings at all?

@topdownjimmy: it would be helpful to maybe have a link to playcounter plugin as well as the rating plugin on your first post, it will make it easier for everyone.
[a href="index.php?act=findpost&pid=274905"][{POST_SNAPBACK}][/a]

Ratings aren't necessary for this to work (unrated tracks get a default rating, which is configurable in the code).

I'm not sure if $blend(FFFFFF,0000FF,%_hotness%,100)● is valid code for the display tab, I just threw that together quickly to illustrate what I was getting at.  I've updated the first post with some code that should work; try that.

"hotness"
Reply #29
Quote
Quote
When a song is played, its hotness should be given a boost (the amount of this boost is detailed below). As time passes since the last time a song was played, that song's hotness should decrease. So now we've got to define a decay period: the time it takes before a song's hotness dwindles to 0 again. The two factors that determine the length of this decay period are rating and play frequency.


I see this being useful when there are many users accessing a common library. But what about one user with a large library. Chances that you would have heard a particular good track would be far and between. OK once we skip ahead many months and play count gets increased it might have some relevance.

What i'm saying is how long will it take for the "hotness" concept to be useful ? Rating took forever, now that its done, have to listen to lots of stuff repeatedly to see results.

I find this subject interesting, just trying to offer some intelligent critiques.
[a href="index.php?act=findpost&pid=274854"][{POST_SNAPBACK}][/a]

I don't see what you're saying about "having heard a particular good track"...granted people have different listening habits, and that's what the baseline settings are for.  And, hotness will work the same no matter how low or high a song's playcount is; remember, the algorithm bases hotness on play frequency, not playcount alone.  So if you add a song to your library today and play it twice, it already has a frequency of twice the baseline frequency.

I hope that explains things better...when I first started planning for this algorithm, a lot of things weren't making sense to me.  Example: "If the baselinefrequency is 28 and baselinedecay is 7, that's a ratio of 4:1...instead of having to set both blfrequency and bldecay, why not just make the ratio configurable?"  That sounds logical (or at least it did to me), but turns out it doesn't work that way.  Then I had a hard time wrapping my head around what baselinedecay and baselinefrequency MEAN, what they should be set at, and why they should be set that way.  And in fact, the conclusion I came to is very counterintuitive (i.e., baselineFREQUENCY should be lowered if songs stay hot too long...shouldn't it be baselineDECAY that's lowered if songs are staying hot too long?  No.)

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #30
Maybe i will implement this idea later if PLAY_FIRST becomes a reality. Anything else - at least for a public FCS - would be quite exotic requirements. Anyways, the reason why i'm posting is that i will probably translate the counterintuitive technical description into a more intuitive practical description in the config (i.e. not explaining how it works, but instead directly asking the user for his listening habits). Of course thats just the plan - i dunno if i will succeed in doing so

After i dig through the code and make me familiar with it, i will probably also change the way how "new songs" are weighted, because my personal opinion is that it should take a while for a track to become hot, even if its played 5 times in the first 2 days. Else, whenever someone gives a new track a more close listen (so, not just one time) it would automatically be threated like a fav. So in short, i'll probably go for a more conservative approach - a bit like that tracks have to "become worthy" before getting a high-rating. So, not a linear but instead a logarithmic approach.

But don't get your hopes up too soon - may take from 2 weeks to 6 weeks until i implement that.

- Lyx
  • Last Edit: 18 February, 2005, 06:16:23 PM by Lyx
I am arrogant and I can afford it because I deliver.

  • falconfox
  • [*][*][*]
"hotness"
Reply #31
still nothing, even with the new formatting. i am really confused on how i am not getting this to work. with the new code in the color tab, i only  get a ● on the currently played track. i also checked the use custom colors tab. so you changed the required tags to added YYYYMMDD and now last_played to YYYY-MM-DD .
  • Last Edit: 18 February, 2005, 06:24:15 PM by falconfox

"hotness"
Reply #32
Quote
After i dig through the code and make me familiar with it, i will probably also change the way how "new songs" are weighted, because my personal opinion is that it should take a while for a track to become hot, even if its played 5 times in the first 2 days. Else, whenever someone gives a new track a more close listen (so, not just one time) it would automatically be threated like a fav. So in short, i'll probably go for a more conservative approach - a bit like that tracks have to "become worthy" before getting a high-rating. So, not a linear but instead a logarithmic approach.
[a href="index.php?act=findpost&pid=274921"][{POST_SNAPBACK}][/a]


I want to make clear (in case I didn't before) that if you play a song twice on the same day you add it, the algorithm doesn't assign it a frequency of 2 plays per day.  It assigns it a frequency of 2 plays per baselinefrequency.  In code:
Code: [Select]
$max($get(baselinefrequency),$get(age))

This doesn't entirely solve the issue you bring up (because songs still tend to get played more when they're first added), but it's certainly better than not taking newness into account at all.

I also want to make clear that as time passes since a song's last play, not only does it decay, but its decay accelerates.  Say you add a song to your library and play it five times, thus giving it a decay period of one month.  So its hotness is, say, 95%, and in one month, it will be 0%.  Right?  Not necessarily...its decay period is based on its frequency of play.  So, once its age surpasses the baselinefrequency, its play frequency begins to deline, as does its decay period.  As time-since-last-play increases, decay period decreases, and they collide somewhere in the middle, sooner than was predicted the last time you played it.

  • Last Edit: 18 February, 2005, 06:34:41 PM by topdownjimmy

"hotness"
Reply #33
Quote
still nothing, even with the new formatting. i am really confused on how i am not getting this to work. with the new code in the color tab, i only  get a ● on the currently played track. i also checked the use custom colors tab. so you changed the required tags to added YYYYMMDD and now last_played to YYYY-MM-DD .
[a href="index.php?act=findpost&pid=274922"][{POST_SNAPBACK}][/a]


Try this...make a new column, and in the "Display" tab, put:
Code: [Select]
%_hotness%

This will give you the hotness as a number from 0-100.  See what number is displayed and you might get a clue to your problem.

  • falconfox
  • [*][*][*]
"hotness"
Reply #34
i get ? when i just put in _hotness
I'm not giving up!
  • Last Edit: 18 February, 2005, 06:42:08 PM by falconfox

  • upNorth
  • [*][*][*][*][*]
"hotness"
Reply #35
@falconfox: Make sure there is a square at the end of the last line:
Code: [Select]
$get(recentness),$get(begindecaynow))),0),100),$get(decay))

The square is available at the top right corner in Columns UI config.

Edit: In the "Globals" part of the config, that is...
Each global variable assignment has to end with a square.
  • Last Edit: 18 February, 2005, 06:45:28 PM by upNorth

  • falconfox
  • [*][*][*]
"hotness"
Reply #36
yeah it is all there, i mean i copied the entire code, including the last line of //////// so there is nothing missing

"hotness"
Reply #37
Quote
i get ? when i just put in _hotness
I'm not giving up!
[a href="index.php?act=findpost&pid=274925"][{POST_SNAPBACK}][/a]


If you're getting a question mark, that means the main code was copied and pasted incorrectly.  Try copying and pasting again.  If it doesn't work, there might be some conflict with the surrounding Navigator Suite code.

edit: MAKE SURE that you have %last_played% as YYYY-MM-DD and %play_counter%.
  • Last Edit: 18 February, 2005, 06:46:19 PM by topdownjimmy

  • falconfox
  • [*][*][*]
"hotness"
Reply #38
yeah i just repasted it and i am getting ? still. i am using azrael 's formatting, and all i did was paste your code to the end of the global -> variable section. maybe there is some conflict?

"hotness"
Reply #39
Quote
Else, whenever someone gives a new track a more close listen (so, not just one time) it would automatically be threated like a fav.

Well, hotness isn't intended to measure how much you like a song (that's what rating is for).  I don't really have a problem with a song being "hot" that I don't like.  Besides, if on the second listen I decide I don't like it, I can always rate it a 1, thus decreasing its decay period by more than half.

I think a more accurate description of "hotness" is that it measures how fresh a song is in your mind.  With that in mind, a song you download and play twice should be pretty "hot."

Quote
So in short, i'll probably go for a more conservative approach - a bit like that tracks have to "become worthy" before getting a high-rating. So, not a linear but instead a logarithmic approach.
[a href="index.php?act=findpost&pid=274921"][{POST_SNAPBACK}][/a]


I'm really curious to see how you're going to account for "worthiness."  What did you have in mind?  "Don't assign any hotness unless play_counter > 5?"

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #40
Quote
I also want to make clear that as time passes since a song's last play, not only does it decay, but its decay accelerates.  Say you add a song to your library and play it five times, thus giving it a decay period of one month.  So its hotness is, say, 95%, and in one month, it will be 0%.  Right?  Not necessarily...its decay period is based on its frequency of play.  So, once its age surpasses the baselinefrequency, its play frequency begins to deline, as does its decay period.


But isn't that the opposite of how listening-patterns work in practice? Such a scheme may work for people who listen to music like fast-food. But with people who listen more "deep" it works the opposite way: They may totally dig a track in the first month.... then it becomes boring because of overdose......after 4 months, the play-frequency begins to increase again. But in the third months, its hotness would be displayed lower than it actually is - because although the listener may not listen to it right now because of previous saturation, he still likes it and will play it again later - the track is just "sleeping".

At this point in this post, there would be an explanation of how it imho should work. But i deleted so often what i wrote, because i noticed that i cannot explain what i mean, that i guess it makes sense to explain it when the day comes where i draft a more concrete model.

edit: what i mean is that a track which is new should be at a disadvantage - and a track which is old but has a high playcount should decay slower than it normally would. Or in other words: when a song is new, then better rate it too bad than too good, when a highly played track is old, then better rate it too good than too bad.

- Lyx
  • Last Edit: 18 February, 2005, 07:00:04 PM by Lyx
I am arrogant and I can afford it because I deliver.

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #41
falcon: which browser do you use? You may have a charset-problem.
I am arrogant and I can afford it because I deliver.

  • falconfox
  • [*][*][*]
"hotness"
Reply #42
Quote
falcon: which browser do you use? You may have a charset-problem.
[a href="index.php?act=findpost&pid=274933"][{POST_SNAPBACK}][/a]


firefox MOOX build

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #43
Quote
firefox MOOX build
[a href="index.php?act=findpost&pid=274935"][{POST_SNAPBACK}][/a]

Then i dunno - FX should treat unicode-stuff and charsets perfectly. And moox's builds were absolutely okay during the time when i used FX in the past.
I am arrogant and I can afford it because I deliver.

"hotness"
Reply #44
Quote
because although the listener may not listen to it right now because of previous saturation, he still likes it and will play it again later - the track is just "sleeping".
[a href="index.php?act=findpost&pid=274932"][{POST_SNAPBACK}][/a]


This is, in fact, exactly how I intended hotness to operate.  Like I said, it's not a measure of how much you like a song, it's a measure of how "hot" the song is.  A song that hasn't been played in four months most certainly shouldn't be considered "hot."  Five-stars, maybe, but not "hot."  It sounds like you're arguing against any implementation of decay at all, when decay is what makes hotness interesting.  We already have a measure of how much you like a song, called %rating%.

"hotness"
Reply #45
Quote
edit: what i mean is that a track which is new should be at a disadvantage - and a track which is old but has a high playcount should decay slower than it normally would.

This is why play frequency affects how long a song's decay period is.

Quote
Or in other words: when a song is new, then better rate it too bad than too good, when a highly played track is old, then better rate it too good than too bad.

- Lyx
[a href="index.php?act=findpost&pid=274932"][{POST_SNAPBACK}][/a]


If a new song is bad, you will rate it a 1, which will decrease its decay period (i.e., speed up its decay), and it will arrive at zero hotness in about two days, although it should be hot for those two days simply because you listened to it recently.

  • falconfox
  • [*][*][*]
"hotness"
Reply #46
I don't know, i think i am doing everything correctly. Hopefully there isn't any conflict with azrael or firefox.
for the column with %_hotness% , all i get is ?
for the column with [dot] in the display, and the color code in the colour, i get nothing. so i don't know what is wrong with my foobar.. ill try to fix the problem later i guess.

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #47
Okay, now i get it - your idea is to rate the "freshness" - the current - only.... while i was trying to make it gauge how "interesting" a song may be for playback.

While you "rate" the result - my idea was create a gauge for the listener which tracks may be interesting to him. The different is that you dont try to guess anything - you just display the result of the current - while i would try to guess a little bit beforehand what may be interesting to the listener in the future.

- Lyx
I am arrogant and I can afford it because I deliver.

  • Lyx
  • [*][*][*][*][*]
"hotness"
Reply #48
Quote
If a new song is bad, you will rate it a 1, which will decrease its decay period

Good point - i didn't think of that. Pardon me, you have already all those thoughts behind you already which i've yet to go through.

- Lyx
I am arrogant and I can afford it because I deliver.

  • falconfox
  • [*][*][*]
"hotness"
Reply #49
it is wierd, when i have that code in my column display and color, when i have use custom color selected, nothing shows up, but when i unselect it, the [dot] shows up. this is really annoying....