Question

Est-ce que quelqu'un connaît un bon algorithme pour la mise en cluster des attributs discrets et continus? Je travaille sur un problème d'identification d'un groupe de clients similaires et chaque client a des attributs discrets et continus (type de clients, montant des revenus générés par ce client, emplacement géographique, etc.).

Traditionnellement, des algorithmes tels que K-means ou EM fonctionnent pour les attributs continus. Que faire si nous avons un mélange d'attributs continus et discrets?

Était-ce utile?

La solution

Si je me souviens bien, l'algorithme COBWEB pourrait fonctionner avec des attributs discrets.

Et vous pouvez également effectuer différentes astuces sur les attributs discrets afin de créer des métriques de distance significatives.

Vous pouvez utiliser Google pour regrouper les attributs catégoriques / discrets, l'un des premiers résultats: ROCK: Algorithme de classification robuste pour les attributs catégoriques .

Autres conseils

R est un excellent outil pour la mise en cluster. L’approche standard consiste à calculer une matrice de dissimilarité sur vos données mélangées à l’aide de marguerite , puis en clustering avec cette matrice avec agnes .

Le module cba sur CRAN inclut une fonction permettant de regrouper des prédicteurs binaires basés sur ROCK.

Vous pouvez également envisager la propagation par affinité comme solution possible. Mais pour surmonter le dilemme continu / discret, vous devez définir une fonction qui valorise les états discrets.

Je voudrais en fait présenter aux utilisateurs des paires d'attributs discrets et leur demander de définir leur proximité. Vous les présenteriez avec une échelle allant de [synonyme..très étranger] ou similaire. Si de nombreuses personnes le font, vous obtiendrez une fonction de proximité largement acceptée pour les valeurs d'attribut non linéaires.

Pourquoi ne pas transformer chacun de vos attributs catégoriels en une série d'attributs d'indicateur binaire N-1 (où N est le nombre de catégories)? Vous ne devriez pas avoir peur de la haute dimensionnalité, car une représentation fragmentée (telle que le de mahout SequentialAccessSparseVector peut être utilisée). Une fois que vous avez fait cela, vous pouvez utiliser un K-means classique ou n’importe quel algorithme de clustering numérique uniquement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top