Clustering dei dati dei clienti archiviati in ElasticSearch


10

Ho un sacco di profili dei clienti memorizzati in un cluster di . Questi profili sono ora utilizzati per la creazione di gruppi target per i nostri abbonamenti e-mail.

I gruppi target ora vengono formati manualmente utilizzando le funzionalità di ricerca sfaccettata di elasticsearch (come ottenere tutti i clienti maschi di 23 anni con un'auto e 3 bambini).

Come potrei cercare automaticamente gruppi interessanti - usando la scienza dei dati, l'apprendimento automatico, il clustering o qualcos'altro?

linguaggio di programmazione sembra essere un buon strumento per questo compito, ma non posso formare una metodologia di tale ricerca di gruppo. Una soluzione è in qualche modo trovare i più grandi gruppi di clienti e usarli come gruppi target, quindi la domanda è:

Come posso scegliere automaticamente i più grandi cluster di clienti simili (simili per parametri che non conosco in questo momento)?

Ad esempio: il mio programma si collegherà a elasticsearch, scaricherà i dati dei clienti su CSV e usando lo script in linguaggio R scoprirai che gran parte dei clienti sono maschi senza figli e un'altra grande parte dei clienti ha un'auto e il loro colore degli occhi è marrone.


1
Cosa intendi con "gruppi interessanti"? Hai un elenco di funzioni importanti predefinito?
yatul,

I gruppi interessanti sono gruppi di dimensioni maggiori di una soglia e molto più grandi di altri possibili cluster.
Konstantin V. Salikhov,

1
Non è chiaro come eseguirai le fasi di preparazione dei tuoi dati. Ma dovresti guardare gli algoritmi descritti in en.wikipedia.org/wiki/Anomaly_detection . Se fossi in te, ho controllato prima il metodo SVM
yatul

Ho letto di SVM e penso che sia più sulla classificazione dei dati appena creati dopo l'addestramento manuale su set di dati esistenti, non sul raggruppamento di dati esistenti e sulla ricerca di cluster anormalmente grandi. Ho ragione? Se lo sono, questo metodo non è quello che voglio.
Konstantin V. Salikhov,

Risposte:


6

Un algoritmo che può essere utilizzato per questo è l' algoritmo di clustering k-means .

Fondamentalmente:

  1. Scegli casualmente k punti dati dal tuo set, m_1, ..., m_k.
  2. "Fino alla convergenza":

    1. Assegna i tuoi punti dati a k ​​cluster, dove cluster i è l'insieme di punti per i quali m_i è il più vicino dei tuoi mezzi attuali
    2. Sostituisci ogni m_i con la media di tutti i punti assegnati al cluster i.

È buona norma ripetere questo algoritmo più volte, quindi scegliere il risultato che minimizza le distanze tra i punti di ciascun cluster i e il centro m_i.

Certo, devi sapere k per iniziare qui; puoi tuttavia usare la convalida incrociata per scegliere questo parametro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.