5

Wir versuchen, Ähnlichkeiten zwischen Elementen (und späteren Benutzern) zu finden, bei denen die Elemente von Benutzern in verschiedenen Listen aufgeführt werden (denken Sie an Rob, Barry und Dick in Hi Fidelity). Ein niedrigerer Index in einer gegebenen Liste impliziert eine höhere Bewertung.Das effektivste Ähnlichkeitsmaß für Listeneinträge

Ich vermute, ein Standard-Ansatz wäre, die Pearson-Korrelation zu verwenden und dann die Indizes in irgendeiner Weise zu invertieren. Wie ich es verstehe, ist das Ziel der Pearson-Korrelation jedoch, Unterschiede zwischen Benutzern auszugleichen, die typischerweise Dinge höher oder niedriger bewerten, aber ähnliche relative Bewertungen haben.

Es scheint mir, dass wenn die Listen kontinuierlich sind (obwohl von beliebiger Länge), ist es kein Problem, dass die von der Position implizierten Bewertungen auf diese Weise verzerrt werden.

Ich nehme an, in diesem Fall würde eine Euklidische Ähnlichkeit ausreichen. Ist das der Fall? Würde die Verwendung der Pearson-Korrelation einen negativen Effekt haben und eine Korrelation finden, die nicht angemessen ist? Welches Ähnlichkeitsmaß passt am besten zu diesen Daten?

Zusätzlich wollen wir, dass die Position in der Liste wirkt, wir wollen jedoch keine zu weit auseinander liegenden Ranglisten bestrafen. Zwei Benutzer, die beide einen Eintrag in einer Liste mit sehr unterschiedlicher Rangfolge haben, sollten dennoch als ähnlich angesehen werden.

Antwort

3

Jaccard Similarity sieht in Ihrem Fall besser aus. Um den von Ihnen erwähnten Rang einzubeziehen, können Sie einen Bag-of-Items-Ansatz wählen.

Arbeiten mit dem Beispiel (Rob, Barry, Dick) mit ihrem Rating ist (3,2,1) jeweils Sie Rob 3 mal in diesen Benutzer a ‚s Tasche einsetzen.

Rob, Rob, Rob. 

Dann für Barry, tun Sie es zweimal. Die aktuelle Tasche sieht aus wie unten,

Rob, Rob, Rob, Barry, Barry. 

Sie Dick schließlich in die Tasche.

Rob, Rob, Rob, Barry, Barry, Dick 

anderen Benutzer Angenommen b hat eine Tüte [Dick, Dick, Barry], können Sie die Jaccard Ähnlichkeit zu berechnen, wie unten:

  • der Schnittpunkt zwischen a und b = [Dick, Barry]
  • Die Vereinigung von a und b = [Rob, Rob, Rob, Barry, Barry, Dick, Dick]
  • Die Jaccard Ähnlichkeit = 2/7,

Das ist die Anzahl der Elemente in der Schnittmenge dividiert durch die Anzahl der Elemente in der Union.

Diese Ähnlichkeit Maßnahme NICHT benachteiligen Rankings, die weit voneinander entfernt sind. Sie können das sehen:

Zwei Benutzer, die beide einen Artikel in einer Liste mit sehr unterschiedlicher Rangfolge aufweisen, sollten weiterhin als ähnlich angesehen werden.

1

Die bekannteste Ähnlichkeitsmetrik, die nur auf dem Ranking basiert, ist Spearman's correlation. Es weist dem ersten Element nur "1", dem zweiten Element "2" usw. zu und berechnet einen Korrelationskoeffizienten (Pearson). (Sie können die Werte auch absteigend machen, was intuitiver ist - das ist für Pearson keine Rolle.)

Spearman's Korrelation ist im Projekt implementiert, aber das sagte ich glaube nicht, dass es sehr nützlich ist.

Tau rank ist ein prinzipielles Maß dafür, wie viele Ranglisten übereinstimmen, aber es ist nicht implementiert. Es wäre nicht schwer.

+0

Ich bin von Tau Rank fasziniert. Es scheint perfekt, aber ich bin besorgt über die Komplexität davon. Da Sie alle möglichen Paarungen von Elementen vergleichen müssen, gibt es viel mehr Arbeit pro Benutzerpaar. Vielleicht würde es in dichteren Datensätzen leiden? –

+0

Nur Elemente in den Top-Bewertungen eines jeden Benutzers zu berücksichtigen oder Stichproben aus einer kleinen Anzahl von Paaren zufällig zu ziehen, sollte eine vernünftige Annäherung schnell ergeben. Ich habe keine praktische Erfahrung mit dieser Metrik, nur meine Vermutungen hier. –