Кластеризація даних клієнтів, що зберігаються в ElasticSearch


10

У мене є купа профілів клієнтів, які зберігаються в кластер. Ці профілі зараз використовуються для створення цільових груп для нашої підписки на електронну пошту.

Цільові групи тепер формуються вручну, використовуючи можливість пошуку гранічних пошуків (наприклад, залучити всіх клієнтів чоловіків віком до 23 років з одним автомобілем та 3 дітьми).

Як я міг автоматично шукати цікаві групи - використовуючи наукові дані, машинне навчання, кластеризацію чи щось інше?

Мова програмування здається хорошим інструментом для цього завдання, але я не можу сформувати методологію такого групового пошуку. Одне рішення - якось знайти найбільші кластери клієнтів і використовувати їх як цільові групи, тому питання полягає в наступному:

Як я можу автоматично вибрати найбільші кластери подібних клієнтів (подібні за параметрами, які я не знаю на даний момент)?

Наприклад: моя програма підключиться до еластичного пошуку, вивантажить дані клієнтів у CSV та за допомогою мови мови R знайдеться, що велика частина клієнтів чоловіки без дітей, а ще одна велика частина клієнтів - автомобіль, а колір очей - коричневий.


1
Що ви маєте на увазі під "цікавими групами"? Чи є у вас заздалегідь визначений список важливих функцій?
ятул

Цікавими групами є будь-які групи, розмір яких перевищує деякий поріг і значно більший, ніж інші можливі кластери.
Саліхов Костянтин Вікторович

1
Незрозуміло, як ви будете виконувати етапи підготовки своїх даних. Але вам слід переглянути алгоритми, описані на сайті en.wikipedia.org/wiki/Anomaly_detection . Якби я був ти, я спершу перевірив метод SVM
yatul

Я читав про SVM, і думаю, що його детальніше про класифікацію новостворених даних після ручного навчання за існуючим набором даних, а не про кластеризацію існуючих даних та пошук аномально великих кластерів. Чи правий я? Якщо я є, то цей метод - це не те, що я хочу.
Саліхов Костянтин Вікторович

Відповіді:


6

Один алгоритм, який може бути використаний для цього, є алгоритм кластеризації k-означає .

В основному:

  1. Випадково виберіть k точок даних зі свого набору, m_1, ..., m_k.
  2. "До конвергенції":

    1. Призначте свої точки даних до кластерів k, де кластер i - це набір точок, для яких m_i найближчий до ваших поточних засобів
    2. Замініть кожен m_i середнім значенням усіх точок, призначених кластеру i.

Добре практика повторити цей алгоритм кілька разів, а потім вибрати результат, який мінімізує відстані між точками кожного кластера i до центру m_i.

Звичайно, ви повинні знати k, щоб почати тут; ви можете використовувати перехресну перевірку, щоб вибрати цей параметр.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.