Regroupement des données client stockées dans ElasticSearch

10

J'ai un tas de profils clients stockés dans un cluster . Ces profils sont désormais utilisés pour la création de groupes cibles pour nos abonnements par e-mail.

Les groupes cibles sont désormais formés manuellement à l'aide des capacités de recherche à facettes d'elasticsearch (comme obtenir tous les hommes de 23 ans avec une voiture et 3 enfants).

Comment puis-je rechercher automatiquement des groupes intéressants - en utilisant la science des données, l'apprentissage automatique, le clustering ou autre chose?

langage de programmation semble être un bon outil pour cette tâche, mais je ne peux pas former une méthodologie d'une telle recherche de groupe. Une solution consiste à trouver en quelque sorte les plus grands clusters de clients et à les utiliser comme groupes cibles, la question est donc:

Comment puis-je choisir automatiquement les plus grands clusters de clients similaires (similaires par des paramètres que je ne connais pas en ce moment)?

Par exemple: mon programme se connectera à elasticsearch, déchargera les données client au format CSV et en utilisant le script de langage R, une grande partie des clients sont des hommes sans enfants et une autre grande partie des clients ont une voiture et la couleur de leurs yeux est brune.

Konstantin V. Salikhov
la source
1
Que voulez-vous dire par «groupes intéressants»? Avez-vous une liste de fonctionnalités importantes prédéfinie?
yatul
Les groupes intéressants sont tous les groupes de taille supérieure à un certain seuil et qui sont beaucoup plus grands que d'autres grappes possibles.
Konstantin V. Salikhov
1
Il n'est pas clair comment vous allez effectuer les étapes de préparation de vos données. Mais vous devriez regarder les algorithmes décrits sur en.wikipedia.org/wiki/Anomaly_detection . Si j'étais vous, j'ai d'abord vérifié la méthode SVM
yatul
J'ai lu sur SVM et je pense que c'est plus sur la classification des données nouvellement créées après une formation manuelle sur un ensemble de données existant - pas sur le clustering des données existantes et la recherche de clusters anormalement gros. Ai-je raison? Si je le suis, cette méthode n'est pas ce que je veux.
Konstantin V. Salikhov

Réponses:

6

Un algorithme qui peut être utilisé pour cela est l' algorithme de clustering k-means .

Fondamentalement:

  1. Choisissez au hasard k points de données dans votre ensemble, m_1, ..., m_k.
  2. "Jusqu'à la convergence":

    1. Attribuez vos points de données à k clusters, où cluster i est l'ensemble des points pour lesquels m_i est le plus proche de vos moyennes actuelles
    2. Remplacez chaque m_i par la moyenne de tous les points affectés au cluster i.

Il est recommandé de répéter cet algorithme plusieurs fois, puis de choisir le résultat qui minimise les distances entre les points de chaque cluster i et le centre m_i.

Bien sûr, vous devez connaître k pour commencer ici; vous pouvez cependant utiliser la validation croisée pour choisir ce paramètre.

Nick Peterson
la source