I have a problem concerning Data Science and Machine Learning, and maybe somebody could share a hint on how to accomplish or where to begin with. Thanks in advance. The thing is I have an application that crunches a similarity ranking for every item in the system. The ranking is based on a set of customizable weights that apply to every feature of the item. Currently these weights are defined ad hoc.

In order to change the ranking (because I think certain items should be on top and others on bottom, instead of where they are actually) I need to change those weights. But I want to do that using Machine Learning, with no human interaction. I am being thinking about using perturbation theory and monte carlo stochastic methods to find those perfect ideal weights... Do you think this is the right thing to do? Any alternative ideas? Thanks a lot!

  • $\begingroup$ There's a disconnect here: You state you want to change the weight based on what "you think," but then you ask for an algorithm "with no human interaction." Is it supposed to read your mind? Seriously, though, how do you propose providing information about what you think the ranking should be? $\endgroup$
    – whuber
    Jun 20 '16 at 17:35
  • 1
    $\begingroup$ Thanks for the comment. Probably I explained myself incorrectly. It must be a supervised machine learning system, meaning there is a human input with ranking suggestions such as increase or decrease current position of a given item. The weights should then be re-fitted in order to achieve new ranking suggestions. So, changes in ranking are human-based but changes in weights are machine-learning based accordingly. $\endgroup$ Jun 20 '16 at 19:15
  • $\begingroup$ That is interesting, because there is an important aspect of your problem that precedes any consideration of machine learning: you need to develop a set of examples that (a) is small enough to make it practicable for a human to evaluate correctly while (b) being rich enough to make identification of appropriate weights possible. If you could say something about how you are addressing that part of the problem within the question itself, it might help clarify it. $\endgroup$
    – whuber
    Jun 20 '16 at 19:57
  • $\begingroup$ Yes, I thought about that. Just a few examples would be insufficient to solve so many variables. A lot of examples might release the curse of dimensionality and noise overfitting. My best scenario would be a progressive algorithm capable of tweaking the weights with 1, 10, 100 or 1 million inputs, no matter if they are too few of them or too many. $\endgroup$ Jun 22 '16 at 8:29
  • $\begingroup$ Just for adding some context, it might exists a well documented algorithm that applies to this problem but I don't want to re-invent the wheel, not in contradiction with developing my own code and solution. Items are people profiles. So data similarity is based upon more than 20 data fields such as skills, geolocation, category, and so on. The matching and similarity measure is already solved, that's not a problem. $\endgroup$ Jun 22 '16 at 8:33


If you have enough example pairs such that you know the characteristics of both samples in the pairs and the rank preferences (A should have higher rank than B), you can pose it as a learning to rank problem.


For a given sample with inputs represented by vector say X, your current weighting procedure is doing dot product X*W and the resulting single number is used to decide the ranking. Now you want to find W such that most of the rankings agree with your intuition. So you could pose this as a learning to rank problem.

Though, you'll have to study learning to rank a bit on what your feature vectors should represent. Most of the literature that I've studied so far typically has a pair of information on the input side. For example, in learning to rank documents for a given query, the X or independent variables correspond to various similarity calculations between document and query. From the information that you've provided, it appears there's no equivalent query in your case, you are just trying to arrive at a static mapping.

On the part of doing small changes to adapt the weights, you can further use Bayesian approach such that the current weight values are given as priors to learning phase. Every time you have newer data, you re-run the fitting algorithm such that the posterior gets updated.

Hope this helps.

  • $\begingroup$ Sure. I helps a lot, but I have to read it again and again to get all the insights. Thanks! $\endgroup$ Jun 22 '16 at 15:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.