I use the “favorite story” lists of people who seem to have similar tastes in stories as me.
I have automated this method, but my current weighing scheme isn’t very good. In case anyone can suggest a better one, below is my setup.
Each user has a rank that describes how similar their taste is to mine. Each story has a rank that describes how much I like it. We start with user ranks being all 0, and with story ranks reflecting my preferences. First we set each user’s rank to be the average of the ranks of the stories he likes (‘average’ can be replaced by any other function of the number of those stories and the sum of their ranks). Then we set each story’s rank to be the sum of the ranks of the users that like it. Then we normalize, so that the sum of all story ranks is, say, 100. Then we repeat.
The main problem with the above is that any user who likes only the top-ranked story will come on top. If instead of using the average of the story ranks we use the sum, people who like more stories will have an advantage. When I have the time, I’ll try functions like sum/(sqrt(a^2+n^2)-a+1), where n is the number of stories the user likes. I’m open to other suggestions. But note that the ranking procedure takes ~5s per repeat, so fiddling with parameters until it works isn’t a good option.
I have automated this method, but my current weighing scheme isn’t very good. In case anyone can suggest a better one, below is my setup.
Each user has a rank that describes how similar their taste is to mine. Each story has a rank that describes how much I like it. We start with user ranks being all 0, and with story ranks reflecting my preferences. First we set each user’s rank to be the average of the ranks of the stories he likes (‘average’ can be replaced by any other function of the number of those stories and the sum of their ranks). Then we set each story’s rank to be the sum of the ranks of the users that like it. Then we normalize, so that the sum of all story ranks is, say, 100. Then we repeat.
The main problem with the above is that any user who likes only the top-ranked story will come on top. If instead of using the average of the story ranks we use the sum, people who like more stories will have an advantage. When I have the time, I’ll try functions like sum/(sqrt(a^2+n^2)-a+1), where n is the number of stories the user likes. I’m open to other suggestions. But note that the ranking procedure takes ~5s per repeat, so fiddling with parameters until it works isn’t a good option.