Aufbau eines kollaborativen Filter- / Empfehlungssystems

8

Ich bin gerade dabei, eine Website zu entwerfen, die auf dem Konzept basiert, verschiedene Artikel an die Nutzer zu empfehlen, je nach Geschmack. (d. h. Artikel, die sie bewertet haben, Artikel, die zu ihrer Favoritenliste hinzugefügt wurden usw.). Einige Beispiele dafür sind Amazon, Movielens und Netflix.

Nun, mein Problem ist, ich bin mir nicht sicher, wo ich mit dem mathematischen Teil dieses Systems anfangen soll. Ich bin bereit, die Mathematik zu lernen, die erforderlich ist, es ist nur ich weiß nicht, welche Art von Mathematik erforderlich ist.

Ich habe ein paar der Publikationen über Grouplens.org angeschaut, insbesondere " Ein skalierbarer kNN-CF-Algorithmus: Erforschen effektiver Anwendungen des Clustering . " (pdf) Ich bin ziemlich gut darin, alles zu verstehen bis Seite 5 "Vorhersage Generation"

ps. Ich suche nicht gerade nach einer Erklärung für das, was vor sich geht, obwohl das hilfreich sein könnte, aber ich interessiere mich mehr für die Mathematik, die ich wissen muss. Auf diese Weise kann ich verstehen, was vor sich geht.

    
John 03.10.2009, 02:33
quelle

5 Antworten

10

Lassen Sie mich das Verfahren erläutern, das die Autoren eingeführt haben (so wie ich es verstanden habe):

Eingabe:

  • Trainingsdaten : Benutzer, Elemente und Bewertungen von Benutzern für diese Elemente (nicht notwendigerweise bewertete jeder Benutzer alle Artikel)
  • Zielbenutzer : ein neuer Benutzer mit einigen Bewertungen einiger Elemente
  • Zielelement : Ein Element, das vom Zielbenutzer nicht bewertet wurde prognostizieren Sie eine Bewertung dafür.

Ausgabe:

  • Vorhersage für das Zielelement nach Zielbenutzer

Dies kann für eine Reihe von Elementen wiederholt werden, und dann geben wir die N-Top-Elemente zurück (höchste vorhergesagte Bewertungen)

Vorgehensweise:
Der Algorithmus ist der naiven KNN -Methode sehr ähnlich (durchsuche alle Trainingsdaten, um Nutzer mit ähnlichen Bewertungen wie das Ziel zu finden Benutzer, dann kombinieren Sie ihre Bewertungen, um eine Vorhersage [Voting] zu geben.
Diese einfache Methode skaliert nicht sehr gut, da die Anzahl der Benutzer / Elemente zunimmt.

Der vorgeschlagene Algorithmus besteht darin, zuerst die Trainingsbenutzer in K Gruppen zu gruppieren (Gruppen von Personen, die Artikel ähnlich bewertet haben), wobei K & lt; & lt; N ( N ist die Gesamtzahl der Benutzer).
Dann scannen wir diese Cluster, um herauszufinden, welcher dem Zielbenutzer am nächsten ist (anstatt alle Trainingsbenutzer zu betrachten).
Schließlich wählen wir l aus diesen aus und wir machen unsere Vorhersage als Durchschnittswert, gewichtet nach der Entfernung zu diesen l Clustern.

Beachten Sie, dass das verwendete Ähnlichkeitsmaß der Korrelationskoeffizient ist und der Clustering-Algorithmus der zweischneidige K-Means-Algorithmus ist. Wir können einfach die standardmäßigen kmeans verwenden, und wir können auch andere Ähnlichkeitsmetriken wie euklidische Entfernung oder Kosinusentfernung.

Die erste Formel auf Seite 5 ist die Definition der Korrelation:

%Vor%

Die zweite Formel ist im Grunde ein gewichteter Durchschnitt:

%Vor%

Hoffe, das klärt die Dinge ein bisschen:)

    
Amro 03.10.2009, 03:18
quelle
8

Programming Collective Intelligence ist eine wirklich benutzerfreundliche Einführung in das Feld mit vielen Beispiel-Code in Python. Zumindest wird es helfen, die Voraussetzungen für das Verständnis der Mathematik in den wissenschaftlichen Arbeiten zu diesem Thema zu schaffen.

    
dcrosta 03.10.2009 02:36
quelle
5

Algorithmus des intelligenten Webs (H Marmanis, D Babenko, Manning Verlag) ist ein Einführungstext zum Thema. Es umfasst auch Suchkonzepte, aber sein Hauptfokus liegt auf Klassifikation, Empfehlungssystemen und ähnlichem. Dies sollte ein guter Grundstein für Ihr Projekt sein, damit Sie die richtigen Fragen stellen und tiefer eindringen können, wo Dinge in Ihrer Situation vielversprechender oder praktischer erscheinen.

Das Buch enthält auch eine "Auffrischung" von relevanten mathematischen Themen (hauptsächlich lineare Algebra), aber diese Auffrischung ist minimal; Du wirst es im Web besser machen.

Ein angenehmer Weg, um zu linearer Algebra zu gelangen, ist es, Prof. Gilbert Strands 18.06 Vortragsreihe verfügbar auf MIT OpenCourseWare.

Lineare Algebra ist nicht der einzige Weg zur Erlösung ;-) Sie können es nützlich finden, grundlegende statistische Konzepte wie Verteilung, Kovarianz, Bayessche Inferenz ... aufzufrischen.

    
mjv 03.10.2009 02:46
quelle
1

Sie sollten wahrscheinlich wissen:

  • lineare Algebra
  • künstliche Intelligenz / maschinelles Lernen / Statistik

Schön zu haben:

  • metrische Leerzeichen
  • Topologie
  • EDA / robuste Statistiken
  • affine Algebra
  • Funktionsanalyse
  • Graphentheorie

Das heißt, Sie können mit gesundem Menschenverstand weit gehen . Wenn Sie eine Liste von Eigenschaften haben, die Ihr System erfüllen soll, können Sie viel tun, indem Sie Code schreiben, der diese Eigenschaften erfüllt.

Beispiele könnten sein:

  • mache niemals eine "schlechte" Empfehlung
  • score steigt in einigen Parametern monoton an
  • Halten Sie die Tür offen für X, Y, Z Verbesserungsideen, die wir auf der ganzen Linie haben.
isomorphismes 14.03.2011 05:14
quelle
1

Von der offiziellen Dokumentation des Abracadabra Recommender API , Sie beginnen mit der Unterscheidung zwischen:

  • Themen : Dies sind die Entitäten, die Sie einem Benutzer empfehlen möchten. Ein Film oder ein Artikel ist zum Beispiel ein Thema. Subjekte sind dadurch gekennzeichnet, dass sie bestimmte Attribute oder Inhalte haben, die sie zwischen den verschiedenen Subjekten unterscheiden.

  • Attribute : Ein Attribut ist ein allgemeiner Begriff für ein Merkmal eines Subjekts. Dies kann alles sein und es hängt wirklich davon ab, wie Sie das Thema definieren. In dem Beispiel, in dem das Subjekt ein Film ist, könnte ein Attribut das Genre sein, z. Abenteuer, Action, Science-Fiction. Ein Attribut könnte auch ein Schlüsselwort sein, das in der Beschreibung dieses Films enthalten ist, der Name des Schauspielers, das Jahr, in dem ein Film veröffentlicht wurde usw. Sie nennen es!

  • Benutzer : Wie der Name schon sagt, ist dies die Person, die Empfehlungen zu bestimmten Themen erhalten möchte. Der Benutzer erstellt ein Benutzerprofil, indem er Attribute oder Themen (und anschließend die angehängten Attribute) bevorzugt.

  • Fluss Es gibt einen allgemeinen Ablauf (Reihenfolge, in dem Dinge erledigt werden), der für jede Art von Empfehlungssystem relevant ist und auch intuitiv leicht zu verstehen ist.

Als Erstes müssen wir die Empfehlungsmaschine mit Themen und ihren entsprechenden Attributen füllen. Normalerweise muss dies nur einmal gemacht werden, aber es kann auch dynamisch gemacht werden. Wenn Sie beispielsweise Artikel empfehlen, sollten Sie dies jedes Mal tun, wenn ein Artikel Ihrer Website oder Ihrem Blog hinzugefügt wird.

Im zweiten Schritt werden die Präferenzen eines Benutzers eingegeben. Zusammen mit der eindeutigen ID Ihres Benutzers können Sie das Empfehlungssystem trainieren, indem Sie bestimmte Themen oder Attribute mögen oder ablehnen. Zum Beispiel könnte einem Benutzer eine Liste von Filmen gezeigt werden, und er / sie erhält die Option, jedem Film eine Bewertung zu geben. Alternativ kann der Benutzer ein Profil aufbauen, indem er eingibt, welche Attribute er bevorzugt (z. B. welche Genres, Schlüsselwörter, Veröffentlichungsdatum usw.). Dieser Teil liegt wirklich bei Ihnen und der Logik Ihres Projekts.

Sobald das System trainiert wurde (gefüllt mit Themen und Benutzereinstellungen), können wir die Engine anrufen, um uns Empfehlungen zu geben. Sie können dies einmal, aber auch dynamisch tun (indem Sie das Modell nach jeder Rückmeldung vom Benutzer neu trainieren). Wenn der Benutzer mehr Feedback gibt, wird das Modell besser und die Empfehlungen nähern sich den tatsächlichen Präferenzen des Benutzers.

Beachten Sie, dass Sie mit der Abracadabra Recommender API lediglich HTTP-Aufrufe an die API senden müssen, um Ihr Modell zu trainieren und Empfehlungen zu erhalten . Auf die API kann mit jeder Sprache zugegriffen werden, also entweder von Ihrer Website oder App (Angular, React, Javascript ...) oder Ihrem Server (NodeJS, Curl, Java, Python, Objective-C, Ruby, .NET ...) .

    
JohnAndrews 27.04.2017 17:19
quelle