Ich habe einen Datensatz von Benutzern, die Produkte von einer Website kaufen.
Die Attribute, die ich habe, sind Benutzer-ID, Region (Bundesland) des Benutzers, Kategorie-ID des Produkts, Schlüsselwort-ID des Produkts, Schlüsselwort-ID der Website und Kaufpreis des Produkts.
Ziel ist es, anhand der Informationen eines Produkts und einer Website zu identifizieren, wer die Nutzer sind, beispielsweise "männliche junge Spieler" oder "Mutter zu Hause bleiben".
Ich habe ein Beispielbild wie folgt angehängt:
Es gibt insgesamt 1940 eindeutige Kategorien und 13845 eindeutige Schlüsselwörter für Produkte. Für die Website gibt es 13063 eindeutige Schlüsselwörter. Der gesamte Datensatz ist riesig, da dies die täglichen Protokolldaten sind.
Ich denke an Clustering, da diese nicht überwacht werden, aber diese IDs sind geordnete Zahlen ohne numerische Bedeutung. Dann weiß ich nicht, wie ich den Algorithmus anwenden soll. Ich denke auch an die Klassifizierung. Wenn ich eine Spalte der Klasse hinzufüge, die auf der Verkaufsmenge des gekauften Produkts basiert. Ich denke, Clustering wird mehr bevorzugt. Ich weiß nicht, welchen Algorithmus ich für diesen Fall verwenden soll, da die Größe der Keyword-ID mehr als 10000 betragen kann (jedes Produkt kann viele Keywords enthalten, ebenso die Website). Ich muss Spark für dieses Projekt verwenden.
Kann mir jemand mit Ideen oder Vorschlägen weiterhelfen?
Ich danke dir sehr!
Antworten:
Momentan habe ich nur Zeit für eine sehr kurze Antwort, aber ich werde später versuchen, sie zu erweitern.
Was Sie tun möchten, ist ein Clustering , da Sie einige Bezeichnungen für Ihre Daten ermitteln möchten. (Im Gegensatz zu einer Klassifizierung, bei der Sie zumindest für einen Teil der Daten Beschriftungen haben und den Rest beschriften möchten).
Um ein Clustering für Ihre Benutzer durchzuführen, müssen Sie sie als eine Art Punkt in einem abstrakten Raum haben. Dann messen Sie Entfernungen zwischen Punkten und sagen, dass Punkte, die "nahe" sind, "ähnlich" sind, und kennzeichnen sie entsprechend ihrer Position in diesem Raum.
Sie müssen Ihre Daten in ein Benutzerprofil umwandeln, dh eine Benutzer-ID, gefolgt von einem Zahlenvektor, der die Funktionen dieses Benutzers darstellt. In Ihrem Fall könnte jede Funktion eine "Kategorie der Website" oder eine "Kategorie des Produkts" sein, und die Zahl könnte der Betrag sein, der für diese Funktion ausgegeben wird. Oder ein Feature könnte natürlich eine Kombination aus Web und Produkt sein.
Stellen wir uns als Beispiel das Benutzerprofil mit nur drei Funktionen vor:
Um diese Profile zu erstellen, müssen Sie die vorhandenen "Kategorien" und "Stichwörter", die zu zahlreich sind, den Funktionen zuordnen, die Sie für relevant halten. Schauen Sie sich dazu die Themenmodellierung oder semantische Ähnlichkeit an. Sobald diese Karte erstellt ist, wird angegeben, dass alle Dollars, die für Websites mit den Schlüsselwörtern "Gadget", "Elektronik", "Programmierung" und X anderen ausgegeben werden, in unserem ersten Feature zusammengefasst werden sollen. und so weiter.
Haben Sie keine Angst, die Funktionen "aufzuerlegen"! Sie müssen sie verfeinern und möglicherweise vollständig ändern, sobald Sie die Benutzer gruppiert haben.
Sobald Sie Benutzerprofile haben, gruppieren Sie diese mit k-means oder was auch immer Sie sonst für interessant halten. Unabhängig davon, welche Technik Sie verwenden, werden Sie daran interessiert sein, den "repräsentativen" Punkt für jeden Cluster zu ermitteln. Dies ist normalerweise die geometrische "Mitte" der Punkte in diesem Cluster.
Zeichnen Sie diese "repräsentativen" Punkte und zeichnen Sie auch auf, wie sie mit anderen Clustern verglichen werden. Die Verwendung einer Radarkarte ist hier sehr nützlich. Überall dort, wo es ein hervorstechendes Merkmal gibt (etwas in dem Vertreter, das sehr ausgeprägt ist und auch im Vergleich zu anderen Clustern sehr hervorsticht), ist es ein guter Kandidat, um Ihnen zu helfen, den Cluster mit einem einprägsamen Satz ("Nerds", "Fashionistas") zu kennzeichnen. , "aggressive Mütter" ...).
Denken Sie daran, dass ein Clustering-Problem ein offenes Problem ist, es gibt also keine "richtige" Lösung! Und ich denke, meine Antwort ist schon ziemlich lang; Überprüfen Sie auch die Normalisierung der Profile und filtern Sie Ausreißer.
quelle
Zur Orientierung und Erkundung kann ich WeKa empfehlen , ein sehr nützliches Toolkit für maschinelles Lernen. Es erfordert ein bestimmtes Eingabeformat (.ARFF), daher müssen Sie dies möglicherweise ebenfalls prüfen.
Was das Keyword-Dilemma betrifft, empfehle ich, einige Features auszuwählen, um redundante oder nicht indikative Keywords zu entfernen.
quelle