Grupowanie danych klientów przechowywanych w ElasticSearch

10

Mam kilka profili klientów przechowywanych w grupa. Profile te są teraz używane do tworzenia grup docelowych dla naszych subskrypcji e-mail.

Grupy docelowe są teraz tworzone ręcznie przy użyciu elastycznych funkcji wyszukiwania fasetowego (np. Zbierz wszystkich mężczyzn w wieku 23 lat z jednym samochodem i 3 dziećmi).

Jak mogę szukać interesujących grup automatycznie - za pomocą nauki danych, uczenie maszynowe, klastry, czy coś innego?

język programowania wydaje się być dobrym narzędziem do tego zadania, ale nie mogę sformułować metodologii takiego wyszukiwania grupowego. Jednym z rozwiązań jest znalezienie największych klastrów klientów i wykorzystanie ich jako grup docelowych, więc pytanie brzmi:

Jak mogę automatycznie wybierać największe klastry podobnych klientów (podobne według parametrów, których w tej chwili nie znam)?

Na przykład: mój program połączy się z elasticsearch, wyładuje dane klientów do CSV, a użycie skryptu w języku R pozwoli stwierdzić, że duża część klientów to mężczyźni bez dzieci, a kolejna duża część klientów ma samochód, a ich kolor oczu jest brązowy.

Konstantin V. Salikhov
źródło
1
Co masz na myśli pod „interesującymi grupami”? Czy masz jakąś predefiniowaną listę ważnych funkcji?
yatul
Interesującymi grupami są dowolne grupy o wielkości przekraczającej pewien próg i znacznie większe niż inne możliwe klastry.
Konstantin V. Salikhov
1
Nie jest jasne, w jaki sposób wykonasz kroki przygotowawcze swoich danych. Ale powinieneś spojrzeć na algorytmy opisane na en.wikipedia.org/wiki/Anomaly_detection . Gdybym był tobą, najpierw sprawdziłem metodę SVM
yatul
Czytałem o SVM i myślę, że bardziej chodzi o klasyfikację nowo utworzonych danych po ręcznym szkoleniu na istniejącym zbiorze danych - a nie o grupowaniu istniejących danych i znajdowaniu nienormalnie dużych klastrów. Czy mam rację? Jeśli tak, to nie jestem tym, czego chcę.
Konstantin V. Salikhov

Odpowiedzi:

6

Jednym z algorytmów, który można do tego wykorzystać, jest algorytm klastrowania k-średnich .

Gruntownie:

  1. Losowo wybierz k punktów danych ze swojego zestawu, m_1, ..., m_k.
  2. „Do konwergencji”:

    1. Przypisz punkty danych do k klastrów, gdzie klaster i jest zbiorem punktów, dla których m_i jest najbliższym z twoich obecnych środków
    2. Zastąp każdy m_i za pomocą wszystkich punktów przypisanych do klastra i.

Dobrą praktyką jest kilkakrotne powtórzenie tego algorytmu, a następnie wybranie wyniku minimalizującego odległości między punktami każdego skupienia i a środkiem m_i.

Oczywiście musisz znać k, aby zacząć tutaj; możesz jednak użyć weryfikacji krzyżowej, aby wybrać ten parametr.

Nick Peterson
źródło