Clustering von in ElasticSearch gespeicherten Kundendaten

10

Ich habe eine Reihe von Kundenprofilen in einem Cluster gespeichert . Diese Profile werden jetzt zum Erstellen von Zielgruppen für unsere E-Mail-Abonnements verwendet.

Zielgruppen werden jetzt manuell mithilfe von Facetten-Suchfunktionen für Elasticsearch gebildet (z. B. alle männlichen Kunden im Alter von 23 Jahren mit einem Auto und 3 Kindern).

Wie könnte ich automatisch nach interessanten Gruppen suchen - mithilfe von Data Science, maschinellem Lernen, Clustering oder etwas anderem?

Programmiersprache scheint ein gutes Werkzeug für diese Aufgabe zu sein, aber ich kann keine Methodik für eine solche Gruppensuche bilden. Eine Lösung besteht darin, die größten Kundencluster zu finden und sie als Zielgruppen zu verwenden. Die Frage lautet also:

Wie kann ich automatisch die größten Cluster ähnlicher Kunden auswählen (ähnlich nach Parametern, die ich derzeit nicht kenne)?

Beispiel: Mein Programm stellt eine Verbindung zur Elasticsearch her, verlagert Kundendaten in CSV und stellt mithilfe des R-Skripts fest, dass ein großer Teil der Kunden männlich und ohne Kinder ist und ein weiterer großer Teil der Kunden ein Auto hat und ihre Augenfarbe braun ist.

Konstantin V. Salikhov
quelle
1
Was meinst du mit "interessante Gruppen"? Haben Sie eine vordefinierte Liste wichtiger Funktionen?
Yatul
Interessante Gruppen sind Gruppen mit einer Größe, die größer als ein Schwellenwert ist und viel größer als andere mögliche Cluster ist.
Konstantin V. Salikhov
1
Es ist nicht klar, wie Sie Vorbereitungsschritte für Ihre Daten ausführen. Sie sollten sich jedoch die unter en.wikipedia.org/wiki/Anomaly_detection beschriebenen Algorithmen ansehen . Wenn ich Sie wäre, hätte ich zuerst die SVM-Methode überprüft
Uhr
Ich habe über SVM gelesen und denke, es geht mehr um die Klassifizierung neu erstellter Daten nach manuellem Training für vorhandene Datensätze - nicht um das Clustering vorhandener Daten und das Auffinden ungewöhnlich großer Cluster. Habe ich recht? Wenn ich es bin, ist diese Methode nicht das, was ich will.
Konstantin V. Salikhov

Antworten:

6

Ein Algorithmus, der hierfür verwendet werden kann, ist der k-means-Clustering-Algorithmus .

Grundsätzlich:

  1. Wählen Sie zufällig k Datenpunkte aus Ihrem Satz, m_1, ..., m_k.
  2. "Bis zur Konvergenz":

    1. Weisen Sie Ihre Datenpunkte k Clustern zu, wobei Cluster i die Menge der Punkte ist, für die m_i das nächste Ihrer aktuellen Mittelwerte ist
    2. Ersetzen Sie jedes m_i durch den Mittelwert aller Punkte, die dem Cluster i zugewiesen sind.

Es wird empfohlen, diesen Algorithmus mehrmals zu wiederholen und dann das Ergebnis auszuwählen, das die Abstände zwischen den Punkten jedes Clusters i und dem Zentrum m_i minimiert.

Natürlich muss man k kennen, um hier anfangen zu können. Sie können diesen Parameter jedoch mithilfe der Kreuzvalidierung auswählen.

Nick Peterson
quelle