Armazenamento em cluster de dados do cliente armazenados no ElasticSearch

10

Eu tenho vários perfis de clientes armazenados em um cluster de pesquisa . Esses perfis agora são usados ​​para a criação de grupos-alvo para nossas assinaturas de email.

Os grupos-alvo agora são formados manualmente, usando os recursos de pesquisa elástica da pesquisa elástica (como obter todos os clientes do sexo masculino com 23 anos de idade com um carro e 3 filhos).

Como eu poderia procurar grupos interessantes automaticamente - usando ciência de dados, aprendizado de máquina, clustering ou algo mais?

linguagem de programação parece ser uma boa ferramenta para esta tarefa, mas não consigo formar uma metodologia para essa pesquisa de grupo. Uma solução é encontrar, de alguma forma, os maiores grupos de clientes e usá-los como grupos-alvo; portanto, a pergunta é:

Como posso escolher automaticamente os maiores grupos de clientes semelhantes (semelhante por parâmetros que não conheço no momento)?

Por exemplo: meu programa se conectará à pesquisa elástica, transferirá os dados do cliente para CSV e, usando o script da linguagem R, descobrirá que grande parte dos clientes é do sexo masculino sem filhos e outra grande parte dos clientes tem carro e a cor dos olhos é marrom.

Konstantin V. Salikhov
fonte
11
O que você quer dizer com "grupos interessantes"? Você tem alguma lista de recursos importantes predefinida?
yatul 14/05
Grupos interessantes são quaisquer grupos de tamanho maior que algum limite e muito maiores que outros possíveis clusters.
Konstantin V. Salikhov
11
Não está claro como você executará as etapas de preparação dos seus dados. Mas você deve examinar os algoritmos descritos em en.wikipedia.org/wiki/Anomaly_detection . Método SVM Se eu fosse você, eu verifiquei primeiro
yatul
Eu li sobre o SVM e acho que é mais sobre a classificação de dados recém-criados após o treinamento manual no conjunto de dados existente - não sobre o cluster de dados existentes e a localização de clusters anormalmente grandes. Estou certo? Se eu sou, esse método não é o que eu quero.
Konstantin V. Salikhov

Respostas:

6

Um algoritmo que pode ser usado para isso é o algoritmo de agrupamento k-means .

Basicamente:

  1. Escolha aleatoriamente k pontos de dados do seu conjunto, m_1, ..., m_k.
  2. "Até convergência":

    1. Atribua seus pontos de dados a k clusters, em que cluster i é o conjunto de pontos para o qual m_i é o mais próximo dos seus meios atuais
    2. Substitua cada m_i pela média de todos os pontos atribuídos ao cluster i.

É uma boa prática repetir esse algoritmo várias vezes e escolher o resultado que minimiza as distâncias entre os pontos de cada cluster ie o centro m_i.

Claro, você precisa saber k para começar aqui; você pode usar a validação cruzada para escolher esse parâmetro.

Nick Peterson
fonte