I have a bunch of users. Each user has a number of personality attributes, such as "fitness level" or "eco-consciousness", rated on a scale from 1 to 5. I want to calculate how similar two users are, so I can show each user a sorted list of "most similar users".
This seems to be a classic IR problem, and I've seen three different metrics used, but no discussion of why to choose one over the other:
Simple Arithmetic. The scores are already normalized to the same scale, so I can just add each user's scores up, and compare the sums to see who is most similar.
Cosine Similarity. Treat each user as an n-dimensional vector, where each scale is one dimension. Calculate the cosine of the angle between two users' vectors; cosines closer to 1 (smaller angles) are more similar.
Euclidean Distance. Each user is an n-dimensional vector again, but this time, calculate the distance between endpoints. Users that are close together are similar.
What are the advantages and disadvantages of each method? How does that change if the scores are not normalized to the same scale (i.e. if I add an "age" attribute)?