How does Anime Hint work: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{eyecatch| | {{eyecatch|Note|The '''Anime Hint''' feature has been disabled for now due to the high amount of server load it produces. | ||
We will hopefully be able to provide a new version which is not as heavy on the server | We will hopefully be able to provide a new version which is not as heavy on the server one day. | ||
Sorry.}}{{TOCright}} | Sorry.}}{{TOCright}} | ||
Line 9: | Line 9: | ||
First a list is made of all the anime with your votes. Temporary and permanent votes are treated the same (if somehow there are multiple votes on an anime the permanent is taken).<br> | First a list is made of all the anime with your votes. Temporary and permanent votes are treated the same (if somehow there are multiple votes on an anime the permanent is taken).<br> | ||
Next a list of all users that have at least 50 [permanent?] votes for anime, 500 anime in their | Next a list of all users that have at least 50 [permanent?] votes for anime, 500 anime in their MyList and have a permanent vote for any anime in your vote list is made. Temporary votes are not used. Note, although both you and another user have voted for at least 30-50 anime, they may still show up in this list with only 1 anime in common.<br> | ||
A weight is created for each of these users in this list. The weight is calculated by taking the list of anime that you have in common for that user, and calculating the difference between your permanent or temporary vote and their permanent vote, and assigning a value for that difference. These values are then added up to create the users weight. The lookup table used to determine the value are listed below and depend on if you chose a ‘strict’ or ‘loose’ weight style (default is ‘strict’).<br> | A weight is created for each of these users in this list. The weight is calculated by taking the list of anime that you have in common for that user, and calculating the difference between your permanent or temporary vote and their permanent vote, and assigning a value for that difference. These values are then added up to create the users weight. The lookup table used to determine the value are listed below and depend on if you chose a ‘strict’ or ‘loose’ weight style (default is ‘strict’).<br> |
Revision as of 15:21, 24 April 2009
Note | The Anime Hint feature has been disabled for now due to the high amount of server load it produces.
We will hopefully be able to provide a new version which is not as heavy on the server one day. Sorry. |
The anime hint page tries to get a list of possible anime recommendations by first comparing all YOUR anime votes with the anime votes of all other AniDB users. This is used to create a weight (or score) for each user in relation to you.
Step #1, Find Similar Users and Assign a Relative Weight
First a list is made of all the anime with your votes. Temporary and permanent votes are treated the same (if somehow there are multiple votes on an anime the permanent is taken).
Next a list of all users that have at least 50 [permanent?] votes for anime, 500 anime in their MyList and have a permanent vote for any anime in your vote list is made. Temporary votes are not used. Note, although both you and another user have voted for at least 30-50 anime, they may still show up in this list with only 1 anime in common.
A weight is created for each of these users in this list. The weight is calculated by taking the list of anime that you have in common for that user, and calculating the difference between your permanent or temporary vote and their permanent vote, and assigning a value for that difference. These values are then added up to create the users weight. The lookup table used to determine the value are listed below and depend on if you chose a ‘strict’ or ‘loose’ weight style (default is ‘strict’).
Here is the weight style lookup table.
strict: 0 => 40, 1 => 5, 2 => -20, 3 => -40, 4 => -60, 5 => -60, 6 => -60, 7 => -60, 8 => -60, 9 => -60, loose: 0 => 10, 1 => 1, 2 => -1, 3 => -2, 4 => -4, 5 => -6, 6 => -8, 7 => -10, 8 => -12, 9 => -15
For instance if you voted 10 on anime1, 9 on anime2 and 7 on anime3 and another user voted 9 on anime1, 9 on anime2 and 4 on anime3, the weight on the strict style would be 5 + 40 – 40 = 5.
After the weights are calculated then all of the users with a score less than the min. weight (default is 100) you specify are filtered out.
Step #2, Find Recommended Anime
Using the final list of users, now a list of anime is created.
The initial list is all anime the list of users voted on with a vote >= min. vote (default = 3, old logic was hard coded to 8) specified by the user. This is a change from before, the original idea was just to get a list of anime that had high votes, and use the following logic to determine the relative ranking of these anime. The issue with this is it ignores the low votes of users that have similar tastes, so an anime with a few users that voted high and many users that vote low would still get recommended. The min. value remains so that people can use the old logic, if desired, and because many users believe that extreme votes should be filtered out.
Now a score is created for each anime by taking the sum of (user weight*((vote-rec. vote)/5)) for every user that voted for that anime. Where rec. vote (default 8, old logic was hard coded to 5) is the recommended vote level. What this does is make votes the recommended vote level the point at which higher votes will give an anime a higher score, and lower votes will lower the score of an anime.
For instance, if 3 users are voting on the same anime, user1 has a weight of 200 and a vote of 5, user2 has a weight of 100 and a vote of 9 and user3 has a weight of 100 and a vote of 10, the score is (200*((5-8)/5)) + (100*((9-8)/5) + (100*((10-8)/5) = 200*(-.6) + 100*.2 + 100*.4 = -120 + 20 + 40 = -60. Since the user that had the closest match with you voted fairly low on the anime, the overall score is low even though two other users recommended it. Lowering the rec. vote value diminishes the impact low votes have on the overall score.
Now the scores have been calculated, an averaging scheme is applied. This makes the scores less dependant on the number of users that have voted on an anime, otherwise an anime with a lot of moderate votes can outweigh an anime with fewer very high votes. The following formula is used to average the scores, animescore = score/(avg. adjustment + numberofvotes*avg. scale). Avg. adjustment (default 5) is used to balance out the average somewhat, this prevents an anime with a single 10 vote (although highly rated, if not many users have voted for it there must be a reason) to outweigh an anime with a few high votes. Anime with low votes will have very low scores, but anime with more votes will not be affected as much. Avg. scale (default 0.5) is how much of an average you want, a value of 1 is a strict average and a value of 0 does not average.
Below are examples of how the averages act. Assume that we have a scenario with anime whose average score would be 100 (regardless of the number of users). The following tables show the affects of the average scale and average adjustment.
Average Adjustment = 1 1 2 3 5 10 15 20 30 40 50 75 100 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- 0.00 100 200 300 500 1000 1500 2000 3000 4000 5000 7500 10000 0.25 80 133 171 222 286 316 333 353 364 370 380 385 0.50 67 100 120 143 167 176 182 188 190 192 195 196 0.75 57 80 92 105 118 122 125 128 129 130 131 132 1.00 50 67 75 83 91 94 95 97 98 98 99 99 Average Adjustment = 5 1 2 3 5 10 15 20 30 40 50 75 100 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- 0.00 20 40 60 100 200 300 400 600 800 1000 1500 2000 0.25 19 36 52 80 133 171 200 240 267 286 316 333 0.50 18 33 46 67 100 120 133 150 160 167 176 182 0.75 17 31 41 57 80 92 100 109 114 118 122 125 1.00 17 29 38 50 67 75 80 86 89 91 94 95 Average Adjustment = 10 1 2 3 5 10 15 20 30 40 50 75 100 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- 0.00 10 20 30 50 100 150 200 300 400 500 750 1000 0.25 10 19 28 44 80 109 133 171 200 222 261 286 0.50 10 18 26 40 67 86 100 120 133 143 158 167 0.75 9 17 24 36 57 71 80 92 100 105 113 118 1.00 9 17 23 33 50 60 67 75 80 83 88 91
The default values, Average Adjustment = 5 and Average Scale = 0.5 have results in the middle of the middle table. Anime with only a couple of votes are significantly reduced, anime with 5-9 votes would get slightly reduced, anime with more than 10 votes get somewhat higher scores. This has the benefits of averaging, without allowing a just few votes to put over-rank a particular anime.
Note: You cannot assign 0 to both avg. adjustment and avg. scale at the same time. A strict average would set avg. adjustment to 0 and avg. scale to 1. To have no averaging set avg. adjustment to 1 and avg. scale to 0.
Step #3, Filter Anime
Now that a list of scores has been created, these are now filtered based on the criteria chosen.
The resulting list is shown ordered by score.
[Note, technically step 3 actually happens before step 2 for performance reasons, but it is easier to explain it this way.]