Was sollte der Wert eines nicht bewerteten Feldes sein, wenn eine Kosinusähnlichkeit festgestellt wird?


8

Ich arbeite an einem sehr einfachen Buchempfehlungssystem. Ich möchte wissen, was mit den Feldern zu tun ist, die vom Benutzer nicht bewertet werden, wenn Kosinusähnlichkeit festgestellt wird. Sollten wir sie ignorieren und nur mit den bewerteten Feldern berechnen oder sollten wir sie mit 0 markieren.

Das Buch, dem ich folge, sagt, dass die Felder ausgeschlossen werden sollen, da es im Fall der euklidischen und Pearson-Korrelation eine falsche Interpretation ergibt, aber im Fall der Kosinusähnlichkeit alle nicht bewerteten Felder auf 0 setzt.

Kann jemand erklären, warum es notwendig ist, die nicht bewerteten Felder nur für Cosine und nicht für andere auf 0 zu setzen, oder gibt es eine andere Möglichkeit, dies zu tun. (Ich weiß, wie sich das Setzen von Feldern 0 in Euklidisch und Pearson auf die Ausgabe auswirkt, bin mir aber des Kosinus nicht sicher.)


Sie können sich diese Frage zu Stackoverflow ansehen, um mehr darüber zu erfahren.
Janpreet singh

Die Antwort beantwortet teilweise die Frage, da sie zeigt, dass das Beibehalten von nicht bewerteten Einträgen als 0 definitiv die entsprechende Ähnlichkeit bewirkt. Was im Algorithmus für die Empfehlungs-Engine verwendet werden könnte (oder nicht)
janpreet singh

Haben Sie eine Normalisierung versucht?
Valentin Calomme

Antworten:


1

Auf der Implementierungsseite gibt es einen guten Grund dafür, dass 0 nicht bewertet entspricht. Da die meisten Benutzer die meisten Bücher nicht bewertet haben, ist 0 der häufigste Wert, und die Cosinus-Ähnlichkeitsfunktion kann intern spärliche Matrizen verwenden , um die Berechnung zu beschleunigen. Die Verknüpfung mit der spärlichen Matrix ist der Hauptgrund, warum Menschen in erster Linie Kosinusähnlichkeit verwenden.

Auf der anderen Seite werden Ihre Empfehlungen verworfen, wenn der Algorithmus eine 0 so interpretiert, dass sie näher an einer 1 als an einer 2 liegt. Sie müssen diese absichtlich ignorieren, können dies jedoch problemlos in Ihrer Cosinus-Ähnlichkeitsimplementierung tun, anstatt die zu filtern Daten vor dem Anwenden.


1. Gemäß Ihrer Antwort sollte das Befolgen von irgendetwas das Ergebnis nicht beeinflussen?
Divyum

0

Überlegen Sie, wie die Kosinusähnlichkeit berechnet wird .

Die Kosinusähnlichkeit nimmt das Punktprodukt zweier reeller Vektoren und dividiert diesen Wert durch das Produkt ihrer Größen. Durch die euklidische Punktproduktidentität ist dies gleich dem Kosinus des Winkels zwischen den beiden Vektoren. Das Ergebnis ist ein Wert zwischen 1 und -1.

Wenn der Wert 1 ist, zeigen diese Vektoren genau in die gleiche Richtung. Wenn der Wert -1 ist, zeigen die Vektoren genau in die entgegengesetzte Richtung (einer ist die Negation des anderen). Wenn der Wert 0 ist, stehen die Vektoren senkrecht zueinander; Mit anderen Worten, wenn der Wert Null ist, sind diese beiden Vektoren im Merkmalsraum so unähnlich, wie es möglich ist.

Das Punktprodukt ist die Summe aller elementweisen Produkte Ihrer beiden Vektoren. Je größer diese Zahlen sind, desto mehr tragen sie zur Kosinusähnlichkeit bei.

Nehmen Sie nun ein beliebiges Merkmal in Ihren Vektor. Der fünfte, sagen wir. Wenn Sie dies in einem Ihrer Vektoren auf Null setzen, ist das fünfte Element im elementweisen Produkt der beiden Vektoren ebenfalls Null, unabhängig von seinem Wert im anderen Vektor. Wenn Sie alle diese elementweisen Produkte zusammenfassen, hat das fünfte Element keinen Einfluss auf die Summierung. Wenn Sie also einen Wert in Ihrem Feature-Vektor auf Null setzen, trägt dies nicht zur Kosinusähnlichkeit bei.

Aus diesem Grund entspricht das Setzen eines Werts auf Null in einem Merkmalsvektor dem Nichteinbeziehen des Merkmals in die Berechnung der Kosinusähnlichkeit und verzerrt die Kosinusähnlichkeit nicht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.