|
I apologize if I'm not using the correct terminology in this question -- I'm fairly new to this stuff, so please correct me if I'm wrong. I have a list of results I want to show the user. Each result has about 5 different scores indicating how good it is. Right now I'm just summing those scores to sort the results. However, I'd like to weight some of those scores more heavily. Given that I know which items the user ended up selecting, how can I discover what weights I should be using to put the best results up at the top of the list? Obviously the position I showed the result to the user is a big influence as well. What is the simplest way to do something like this? |
|
The simplest thing I can think of that should work is learning a linear classifier (such as a linear SVM or a regularized logistic regression classifier) that predicts which item the user eventually clicked using features for each of the scores plus features for the position in the list (to control for the position in the list). Then you can use the weights assigned by the classifier to your five features to rank the elements. |
|
Try a ranking svm http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html |
|
Easiest might be to do ridge regression. Here's an example with 3 datapoints assuming the user told you rank of each. $lambda$ is regularization parameter (small means less regularization). If x is your vector of scores, x.coefs is the predicted rank. I got formula from wikipedia
|