views:

140

answers:

4

I need to find and algorithm to find the best matches in a social network. The system is a college student social network, and basically the main idea is to find a study partner for a class. The idea it's to suggest to the user what are the potential best partners based on different criteria, such as common class, GPA, rating, common schedule, etc. I wonder what would be the best algorithm to use.

+1  A: 

Hi, Maybe some sort of clustering algorithm could help. Those whose vectors (Common class, GPA etc...) are similar would be clustered together.

keyboardP
I was checking some of those but mostly they work with quantitative values, but what happens when the criteria is not a number?
Eve Diaz
Depends on what the criteria is. If it's a subject, you could simply enumerate the subject. For example, Computer Science = 0, Chemistry = 1, Physics = 2 etc...Then when the results are in, you can simply convert the numbers back to their string format. Since this is looking for similarity, as long as the enumerations remain consistent throughout (and vectors remain in the same order), then it should be fine.
keyboardP
Also, this site: http://people.revoledu.com/kardi/tutorial/index.htmlhas some great tutorials and articles. You might want to look up Multivariate systems on that site as it will explain how to use different types of data.
keyboardP
If the criteria is not a number you can always come up with a match score. A simple case is for categorical data - like {apple,orange,peach} - you give 1 for exact match and 0 for no match.You can make variations on that (say if orange and apple are closer than orange and peach then you would give a score of 0.5 and 0 respectively)
liza
+1  A: 

You might want to start off by looking at recommendation systems and nearest neighbor search.

liza
A: 

Is GA a good option?

Eve Diaz
Do you mean Genetic Algorithms? I don't have much experience with them. However, looking at the problem domain on wikipedia (http://en.wikipedia.org/wiki/Genetic_algorithm#Problem_domains), it could work, but might not be the best algorithm to use in this case.
keyboardP
A: 

Such problem is called collaborative filtering. Collaborative filtering systems can produce personal recommendations by computing the similarity between your preference and the one of other people.

There are a lot of information about such teqniques. You might start with good presentation.

ton4eg