I have a problem deciding which similarity function to use.

I want to find the similarity between the users based on their requirements about computer performance metrics normalized to 1. Each user rated some computers with a rating between 1 and 5. I want to use the similarities as weights to the ratings in order to get a score for every computer.

My vectors are:

vectorA = [0.8, 0.75, 0.9] 

vectorB = [0.85, 0.77, 0.83] and 

vectorC = [0.82, 0.72, 0.86]. 

Using Cosine Similarity, I have the following similarities:

Similarity(A,B) = 0.99806

Similarity(A,C) = 0.99948

Similarity(B,C) = 0.99908

The problem is that the three similarities are almost 1. So I can't use these results as weights to the ratings. It would be like taking the average of the ratings.

I have thought of using Euclidean distance similarity 1/(1+EuclideanDistance), but I don't know if this is right.

What do you propose? Thank you!

  • $\begingroup$ The entries in you vectors are really close to each other, any measure will result in close similarities, you'll likely have to go for the marginal differences. $\endgroup$ Mar 29, 2019 at 13:00
  • $\begingroup$ @LucasFarias what can I do about that? $\endgroup$ Mar 30, 2019 at 9:56


Your Answer

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