2009-04-27 5 views
18

Was ist ein guter Algorithmus für das Vorschlagen von Dingen, die jemand aufgrund seiner früheren Entscheidungen mag? (ZB wie durch Amazon popularisierte Bücher vorschlagen, und in Diensten wie iRate-Radio oder YAPE verwendet, in denen Sie Vorschläge nach Bewertung Einzelteilen erhalten)Algorithmus für das Vorschlagen von Produkten

Antwort

12

Einfach und unkompliziert (Bestellung Warenkorb):

eine Liste von Transaktionen halten in Bezug darauf, welche Artikel zusammen bestellt wurden. Zum Beispiel, wenn jemand einen Camcorder bei Amazon kauft, kauft er gleichzeitig Medien für die Aufnahme.

Wenn Sie entscheiden, was auf einer bestimmten Produktseite "vorgeschlagen" wird, sehen Sie sich alle Bestellungen an, bei denen das Produkt bestellt wurde, zählen Sie alle anderen gleichzeitig gekauften Artikel und zeigen Sie dann die 5 häufigsten Artikel an gekauft zur gleichen Zeit.

Sie können es von dort nicht nur auf Aufträge, erweitern aber was die Leute nach der Reihe nach auf der Website usw.

Im Sinne eines Rating-Systems (dh Filmbewertungen):

Es wird schwieriger, wenn Sie Bewertungen einwerfen. Statt eines diskreten Warenkorbes, den Sie gekauft haben, haben Sie eine Kundenhistorie von Artikelbewertungen.

An diesem Punkt betrachten Sie Data Mining, und die Komplexität ist enorm.

Ein einfacher Algorithmus ist jedoch nicht weit von dem Obigen entfernt, aber er nimmt eine andere Form an. Nehmen Sie die bestbewerteten Artikel des Kunden und die Artikel mit der niedrigsten Bewertung, und suchen Sie andere Kunden mit ähnlichen Listen mit den höchsten und niedrigsten Bewertungen. Du möchtest sie mit anderen vergleichen, die ähnliche extreme Vorlieben und Abneigungen haben - wenn du dich nur auf Likes konzentrierst, dann, wenn du etwas vorschlägst, das sie hassen, wirst du ihnen eine schlechte Erfahrung gemacht haben. In Suggestion-Systemen wollen Sie immer lieber auf der Seite der "lauwarmen" Erfahrung irren statt "hassen", weil eine schlechte Erfahrung sie davon abhält, die Vorschläge zu verwenden.

Empfehlen Sie Artikel in den höchsten Listen des anderen zum Kunden.

+2

Sie können das weiterführen, indem Sie nur nach Produktsuchen suchen, die von Personen mit den gleichen demografischen Informationen durchgeführt werden (z. B. Männer von 18 bis 24 Jahren). – TheTXI

+1

Idealerweise werden Sie den Markt sehr fein segmentieren, Demographie, Tagging, Überprüfungsschlüsselwörter usw. werden alle in Ihre Vorschlagsmaschine einfließen. Es kann sehr, sehr komplex sehr schnell werden ... Aber für ein einfaches System erster Ordnung kann das oben genannte sehr gut arbeiten. Sobald es vorhanden ist, können Sie den Algorithmus und die Datenquellen nach Herzenslust optimieren ... –

1

Empfohlene Produkte Algorithmen sind riesiges Geschäft jetzt ein Tag. NetFlix for one bietet 100.000 für nur geringfügige Verbesserungen in der Genauigkeit ihres Algorithmus.

0

Warenkorbanalyse ist das Feld der Studie Sie suchen:

Microsoft bietet zwei geeignete Algorithmen mit ihren Analysis Server: Microsoft Association-Algorithmus Microsoft Decision Trees-Algorithmus

Schauen Sie sich diese Artikel für Msdn Vorschläge zur optimalen Verwendung von Analysis Services zur Lösung dieses Problems

link text

3

Es gibt keine definitive Antwort, und es ist sehr unwahrscheinlich, dass es ein Standard-Algorithmus für das ist.

Wie Sie das tun hängt stark von der Art der Daten ab, die Sie beziehen möchten und wie es organisiert ist. Es hängt davon ab, wie Sie im Rahmen Ihrer Anwendung "related" definieren.

Oft liefert der einfachste Gedanke gute Ergebnisse. Wenn Sie bei Büchern eine Datenbank mit mehreren Attributen pro Bucheintrag haben (Autor, Datum, Genre usw.), können Sie einfach einen zufälligen Satz von Büchern desselben Autors, desselben Genres, ähnlicher Titel und andere mögen das.

Sie können jedoch immer komplizierteres Zeug versuchen. Aufzeichnen von anderen Benutzern, die dieses "Produkt" benötigten und andere "Produkte" vorschlagen, die diese Benutzer in der Vergangenheit benötigten (Produkt kann alles sein, von einem Buch, über einen Song bis zu allem, was man sich vorstellen kann). Etwas, das die meisten großen Websites, die eine Suggested-Funktion haben, tun (obwohl sie wahrscheinlich eine Vielzahl von Informationen aufnehmen, von Produktattributen bis zu demografischen Merkmalen, um dem Kunden am besten zu dienen).

Oder Sie können sogar auf sogenannte AI zurückgreifen; Es können neuronale Netze konstruiert werden, die all jene Attribute des Produkts aufnehmen und versuchen (basierend auf früheren Beobachtungen), sie mit anderen in Beziehung zu setzen und sich selbst zu aktualisieren.

Eine Mischung aus einem dieser Fälle könnte für Sie arbeiten.

Ich würde persönlich empfehlen, darüber nachzudenken, wie der Algorithmus funktionieren soll und wie man verwandte "Produkte" vorschlagen kann. Dann können Sie alle Optionen erkunden: von einfach bis kompliziert und Ihre Bedürfnisse ausgleichen.

0

Ich denke, ein Google auf Least Mean Square Regression (oder so etwas) könnte Ihnen etwas zum Kauen geben.

0

denke nur out-loud:

Sie Korrelation zwischen jedem und jeder berechnen müssen - wenn Ihr Muster von guten und schlechten Bewertungen jene von jemand anderem übereinstimmt, kann sie dann ihre hohe vorschlagen (O^2?) -Daten zu Ihnen

aber wie funktioniert das, wenn Sie nur ein paar Datenpunkte haben?

Bewertungen müssen normalisiert werden - eine Bewertung von 2 * von jemandem, der alles andere als 1 * bewertet ist eindeutig eine Ja-Stimme, während eine Bewertung von 2 * von jemandem, der alles andere als 4 * -5 * bewertet ist mehr wie ein Down-Vote

Wie man Spammer stoppt, die alles von ihnen hoch und Konkurrenten schlecht bewerten? vielleicht das Korrelationssystem tut das sowieso - wenn die Spammer bei der Abstimmung nicht korrelieren dann sind ihre Vorschläge abgewertet

0

CPAN Modul Math::Preference::SVD ist offenbar eine „Preference/Recommendation Engine basiert auf Einzelwertzerlegung“

0

Ich denke, Die meisten nützlichen Ratschläge wurden bereits vorgeschlagen, aber ich dachte mir, ich würde einfach sagen, wie ich das machen würde, ich denke nur, weil ich so etwas nicht gemacht habe.

Zuerst würde ich finden, wo in der Anwendung werde ich die Daten zu verwenden, so dass, wenn ich ein Geschäft habe, wird es wahrscheinlich in der auschecken. Dann würde ich eine Beziehung zwischen jedem Artikel in der Kasse speichern.

jetzt, wenn ein Benutzer zu einer Artikelseite geht, kann ich die Anzahl der Beziehungen von anderen Artikeln zählen und z. B. die 5 Artikel mit der höchsten Nummer der Beziehung zum ausgewählten Artikel auswählen.

Ich kenne es einfach, und es gibt wahrscheinlich bessere Wege.

Aber ich hoffe, es

1

hilft Wie Sie durch die Antworten abgeleitet haben so weit, und in der Tat, wie Sie vorschlagen, ist dies ein großes und komplexes Thema. Ich kann Ihnen keine Antwort geben, zumindest nichts, was nicht schon gesagt wurde, aber ich einen Punkt, den Sie ein paar ausgezeichnete Bücher zum Thema:

+0

+1. Ich bevorzuge die Programmierung von CI, die meiner Meinung nach eher eine Balance zwischen Theorie und Praxis darstellt, gegenüber CI in Aktion, die ganz und gar den Rezepten für die Verwendung von Java-Bibliotheken gewidmet ist. Aber sie sind beide sehenswert. –

0

gibt es eine Empfehlung Plattform von Amazon genannt Certona erstellt, können Sie dies nützlich, wird von Unternehmen genutzt, zB B & Q und Screwfix weitere Informationen bei www.certona.com/

finden