Calculate Cosine Similarity based on SVD

Muhammed_Fatih_
Muhammed_Fatih_ New Altair Community Member
edited November 5 in Community Q&A
Dear Community, 

is it technically or rather mathematically possible to calculate the Cosine Similarity measure based on results derived by SVD Feature Extraction? Or does the distance metric only operate on measures like TF-IDF? 

Thank you in advance for your help!   

Best Answer

Answers

  • MartinLiebig
    MartinLiebig
    Altair Employee
    Hi,
    Of course you can do this. Sounds a bit like you want to build GLOVE?

    Best,
    MARtin
  • Muhammed_Fatih_
    Muhammed_Fatih_ New Altair Community Member
    Hi Martin, 
    Hi Community, 

    thank you for your answer! I have another question in connection to this one: 

    I've calculated Cosine Similarity based on SVD values and got also negative values as result. The classic literature writes that the range for cosine similarity should normally be between 0 and 1. In my case, SVD values are used as input so that the range or rather angle of Cosine Similarity cannot stay between the defined one.

    Hence, negative values were derived. My question goes with regard to the interpretation potential of the cos sim measure. How to interprete negative Cos Sim values? Normally, the closer the cosine value to 1, the smaller the angle and the greater the match between vectors. Is it possible to assume a symmetry for negative values - e.g. to interptete a Cos Sim value of -0,9 as a greater match than 0,6? 

    Thank you in advance for your answer! 

    Best regards
  • MartinLiebig
    MartinLiebig
    Altair Employee
    Hi,
    how did you calculate the distance? Cross Distances operator?

    Best,
    Martin
  • Muhammed_Fatih_
    Muhammed_Fatih_ New Altair Community Member
    Hi Martin, 

    I've calculated the Cosine Similarity by using the "Data to Similarity" operator.

    Best regards!
  • MartinLiebig
    MartinLiebig
    Altair Employee
    Hi,
    Similarity is defined, to be maximized to get two very similar item. By definition we add -1* for the distance measures, which would be minimized. It's just the difference between a distance and a similarity which you are seeing.

    Best,
    Martin
  • Muhammed_Fatih_
    Muhammed_Fatih_ New Altair Community Member
    Hi Martin, 

    sry - I didn't get your point. Does this mean that negative Cosine Similarity derived by SVD values as e.g. -1 or -0,8 reflect vector points that are completely contrary located and that positive values underline the similarity of objects? 

    Thank you for your clarification! 

    Best regards! 
  • MartinLiebig
    MartinLiebig
    Altair Employee
    edited April 2020
    Hi,
    Ignore the - on the number. We just add a -1*value by convention.

    Maybe german works better here?

    Die Frage ist, ob man Cosinusähnlichkeit als Ähnlichkeit oder Distanzen definiert. Normalerweise ist Cosinusähnlichkeit eine Distanz, das bedeudet wenn man ähnliche Dinge sucht, sucht man Dinge mit kleiner distanz.
    Der Begriff der Ähnlichkeit (Similarity) impliziert allerdings, dass man versucht diese zu maximieren um ähnliche Dinge zu bekommen. Aus dem Grund multiplizieren wir im operator Data to Similarity die Werte der Cosinusdistanz mit -1, um dieses Verhalten zu bekommen.
    Falls du die Werte als Distanz brauchst empfehle ich den Operator Cross Distance. Der gibt dir dann auch immer positive Cosinusähnlichkeiten.

    Cheers,
    Martin
  • Muhammed_Fatih_
    Muhammed_Fatih_ New Altair Community Member
    Hi Martin, 

    gerne in Deutsch :) Es geht mir bei meiner Analyse darum quantifizierte Texteinheiten, welche eine syntaktische Ähnlichkeit aufweisen, in gemeinsame Kategorien zu clustern. Hierfür wird in der Literatur die Cosine Similarity empfohlen. Die Besonderheit in meinem Anwendungsfall lag allerdings darin, dass ich im vorhergehenden Schritt eine Dimensionsreduktion  mittels SVD durchgeführt wurde, um die Anzahl an Dimensionen in einer effizienten Art und Weise einzuschränken. 

    Insofern besteht aktuell die Frage, inwiefern die SVD-Input values, die in den Operator Cosine Similarity integriert wurden, zu deuten sind. Im Falle der von dir vorgeschlagenen Cosinus Distanz würde ein Minimierungsziel vorliegen und bei der Cosine Similarity ein Maximierungsziel. Doch wie sind die aus der Cosine Similarity resultierenden Informationen zu deuten, wenn diese ebenfalls negative Werte aufweisen? 

    Zur Sicherheit: Habe ich aus deinem vorhergehenden Kommentar richtig entnommen, dass der Cosine Similartiy nichts anderes als folgendes besagt: Cosine Similarity = (-1) * CosineDistance? 

    Thank you in advance for your answer and the clarification! 

    Best regards!   
  • Muhammed_Fatih_
    Muhammed_Fatih_ New Altair Community Member
    Hi Martin, 

    das bedeutet, dass die Winkel-Berechnung nach cos(x) im RM-Operator überhaupt nicht erfolgt, richtig?



    Best regards!
  • MartinLiebig
    MartinLiebig
    Altair Employee

    ich habe es gerade mal nachgeschaut. Witzigerweiße berechnen wir bei Similarity _keine_ cos. Bei Distanz hingegen schon.

    LG,
    Martin