Кластеризация данных клиентов, хранящихся в ElasticSearch

10

У меня есть куча профилей клиентов, хранящихся в кластер. Эти профили теперь используются для создания целевых групп для наших подписок на электронную почту.

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

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

Язык программирования кажется хорошим инструментом для этой задачи, но я не могу сформировать методологию такого группового поиска. Одним из решений является как-то найти самые большие кластеры клиентов и использовать их в качестве целевых групп, поэтому вопрос заключается в следующем:

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

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

Константин В. Салихов
источник
1
Что вы имеете в виду под "интересными группами"? У вас есть какой-то предопределенный список важных функций?
ятул
Интересными группами являются любые группы размером больше некоторого порогового значения, которые намного больше, чем другие возможные кластеры.
Константин Васильевич Салихов
1
Не ясно, как вы будете выполнять шаги подготовки ваших данных. Но вы должны взглянуть на алгоритмы, описанные на en.wikipedia.org/wiki/Anomaly_detection . Если бы я был тобой, я бы сначала проверил метод SVM
yatul
Я читал о SVM и думаю, что больше о классификации вновь созданных данных после ручного обучения существующему набору данных, а не о кластеризации существующих данных и обнаружении аномально больших кластеров. Я прав? Если я, то этот метод не то, что я хочу.
Константин Васильевич Салихов

Ответы:

6

Одним из алгоритмов, который можно использовать для этого, является алгоритм кластеризации k-средних .

В принципе:

  1. Произвольно выберите k точек данных из вашего набора, m_1, ..., m_k.
  2. «До сближения»:

    1. Присвойте свои точки данных k кластерам, где cluster i - это набор точек, для которых m_i является ближайшим из ваших текущих средних
    2. Замените каждое m_i на среднее значение всех точек, назначенных для кластера i.

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

Конечно, вы должны знать k, чтобы начать здесь; Вы можете использовать перекрестную проверку для выбора этого параметра.

Ник Петерсон
источник