I have got a set of elements $X$ which I can describe according to $n$ characteristics. Thus:

$$x_i: \{c_{i1}, c_{i2}, \ldots, c_{in}\} \mid x_i \in X $$

where $c_{ij}$ is the (numerical) evaluation for element $i$ according to the characteristics $j$. So my elements can be viewed as points in a $n$ dimension space.

According to my readings, there exists algorithms like the "Bayes Classifier" which can provide me with a "yes" or "no" type of answer on any element of my set, provided that I did use a "training set" consisting of some elements of my set, and the expected outcome of the algorithm. Based on that data, the algorithm should be able to take any other element, not part of the training set, and provide a "yes" or "no" answer based on what it learnt thanks to the training set. This is great if you have some kind of idea of what your expect (training set) but you are unsure of the specific rules that yields to that result.

What I would like to do with my data is not get a "yes" or "no" type of answer, but I would like to introduce a ranking within the elements. Some of them are "better" than others. Just like for the Bayes filter, I have got a generic idea of what I expect. I could thus generate a "training ranking" taken from a subset of my elements, that I would feed into the MLA. Based on that training it would be able to rank my whole set.

In order to do that I see two approach :

  1. Each element would be given a score by the MLA, then rank the elements according to the score.
  2. The MLA would be able to take two elements $x_i$ and $x_j$ and determine wich one is better (pairwise comparisons). Use quicksort using that comparison operation.

Note : based on a score the pairwise function is trivial to implement, and based on a pairwise function, it is trivial to generate a score, so these are just two approches to yield to the same results.

Are there examples out there of MLA's that can provide a scoring function, or a pairwise comparison function ?

EDIT : In order to add more context : currently my items are ranked according to an algorithm that generates a score (real number) te each items by making calculations on the $c_{ij}$. While the generated ranking is quite correct, I often have to modify the algorithm to tweak it in some way because I can clearly see some items that are not ranked according to what I would have expected.

So currently my design process is :

  1. Get an idea of what a perfect ranking would be
  2. Try to (manually) derive an algorithm that would rank the items like that
  3. Observe the results
  4. Adapt the algorithm

So I thought about MLA's since the starting point of my process is what could be used as the training data. I would probably start by taking the current rank, swap items according to my needs and feed that.


3 Answers 3


Many classification algorithms already do exactly what you're looking for, but often present their answers to users in the form of a binary (or n-way) judgement. For example, SVMLight is an implementation of the support vector machine classification algorithm; people commonly use this to make binary judgments on some data set. What happens under the hood, however, is the algorithm is assigning signed confidence judgments to the data. These are bound between -1.0 and 1.0 and are what you should use for ranking your data!


It seems that you can use regression analysis. Also, probably you need to assign scores (real numbers) to the elements in your training set, if you don't have them. Although you can just use rank as your target value, it will make you get a poor model if you just have a small set of training samples.


I think you are expecting too much from machine learning algorithms. A computer cannot decide whether item 1 is better than item 2 on its own. What a Machine Learning algorithm can do is if you give it a few examples where you have rated some item 1 to be better than item 2, then it can learn to rank the items [1]. But you still need a training data where you provide examples of items and with information of whether item 1 is greater than item 2 for all items in the training data.

[1] http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html

  • $\begingroup$ Thank you very much for the link. And I do totally understand that I will need to provide a training set to the algorithm so that it will be able to rank subsequent items. $\endgroup$
    – almathie
    Jan 2, 2013 at 8:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.