Question

Mon ensemble de données contient un certain nombre d'attributs numériques et catégorique.

Dis, NumericAttr1, NumericAttr2, ..., NumericAttrN, CategoricalAttr,

CategoricalAttr prend l'une des trois valeurs possibles:. CategoricalAttrValue1, CategoricalAttrValue2 ou CategoricalAttrValue3

J'utilise k-means par défaut de clustering implémentation de l'algorithme pour Octave https://blog.west.uni-koblenz.de/2012-07-14/a-working-k-means-code-for-octave/ . Il fonctionne avec des données numériques uniquement.

Ma question: est-il exact de diviser le CategoricalAttr d'attribut catégorique en trois variables numériques (binaire), comme IsCategoricalAttrValue1, IsCategoricalAttrValue2, IsCategoricalAttrValue3

Était-ce utile?

La solution

Le standard algorithme k-means n'est pas directement applicable aux données catégoriques, pour diverses raisons. L'espace d'échantillonnage pour les données qualitatives est discret et ne dispose pas d'origine naturelle. Une fonction de la distance euclidienne sur l'espace est un pas vraiment significatif. Comme quelqu'un l'a dit, « Le fait un serpent possède ni roues ni jambes nous permet de ne rien dire sur la valeur relative des roues et des jambes. » (De )

Il y a une variation de k-means appelés k-modes, introduit dans ce papier par zhexue Huang, qui est appropriée pour les données catégoriques. Notez que les solutions que vous obtenez sont sensibles aux conditions initiales, comme indiqué (PDF), pour par exemple.

document de Huang (lien ci-dessus) a également une section sur les « k-prototypes » qui applique aux données avec un mélange de caractéristiques qualitatives et numériques. Il utilise une mesure de distance qui mélange la distance de Hamming pour les caractéristiques qualitatives et la distance euclidienne pour les fonctions numériques.

Une recherche Google pour « k-means mélange de données catégoriques » se présente assez peu d'articles plus récents sur divers algorithmes pour k-means comme le regroupement avec un mélange de données numériques et catégorielles. (Je ne l'ai pas encore les lire, je ne peux pas commenter sur le fond.)


En fait, ce que vous proposez (conversion des attributs catégoriques à des valeurs binaires, et puis en faisant k-means comme si ceux-ci étaient des valeurs numériques) est une autre approche qui a été essayé avant (k-modes antidatant). (Voir Ralambondrainy, H. 1995. Une version conceptuelle de l'algorithme k-means Motif Lettres de reconnaissance, 16:.. 1147-1157) Mais je crois que l'approche k-modes est préféré pour les raisons indiquées ci-dessus

.

Autres conseils

A mon avis, il existe des solutions pour faire face à des données qualitatives dans le regroupement. R est livré avec une distance spécifique pour les données catégoriques. Cette distance est appelée Gower ( http: //www.rdocumentation .org / packages / StatMatch / versions / 1.2.0 / thèmes / gower.dist ) et cela fonctionne assez bien.

(En plus de l'excellente réponse par Tim Goodman)

Le choix de k-modes est certainement la voie à suivre pour la stabilité de l'algorithme de classification utilisé.

  1. L'algorithme de clustering est libre de choisir une partition / distance métrique de similitude. Euclidienne est le plus populaire. Mais tout autre métrique peut être utilisé que les échelles en fonction de la distribution des données dans chaque dimension / attribut, par exemple la Mahalanobis. Illustrant la distance de points de données à partir du centre sur la base de la distance métrique utilisée.

  2. En ce qui concerne mixte (numérique et catégorique) En regroupant un bon papier qui pourrait aider est: INCONCO: interprétable Clustering de numérique et catégorielles objets

  3. Au-delà de k-means: Puisque k-means vanilles a déjà été écartée comme une approche appropriée à ce problème, je vais aventurer au-delà de l'idée de la pensée du regroupement comme un problème de montage du modèle. Différentes mesures, telles que les informations-métriques théorétique: Kullback-Liebler divergence et de travail en essayant de converger vers un modèle paramétrique de la distribution des données. (Des techniques de clustering cours paramétriques comme GMM sont plus lentes que Kmeans, donc il y a des inconvénients à prendre en compte)

  4. Fuzzy modes k-Clustering sons aussi appel puisque les techniques de logique floue ont été développés pour faire face à quelque chose comme des données catégoriques. Voir La classification floue des données catégoriques à l'aide centroïdes floue pour plus d'informations

Consultez également: ROCK: Un robuste algorithme Clustering pour catégorielles Attributs

Cette question semble vraiment représentation, et non pas tant sur le clustering.

données catégorielles est un problème pour la plupart des algorithmes d'apprentissage machine. Supposons, par exemple, vous avez une variable catégorique appelée « couleur » qui pourrait prendre les valeurs rouge, bleu ou jaune. Si nous chiffrons simplement ces numériquement que le 1,2 et 3 respectivement, notre algorithme pense que le rouge (1) est en fait plus proche de bleu (2) que de jaune (3). Nous devons utiliser une représentation qui permet à l'ordinateur de comprendre que toutes ces choses sont en fait tout aussi différents.

Une façon simple est d'utiliser ce qu'on appelle un une chaude représentation , et il est exactement ce que vous pensiez que vous devriez faire. Plutôt que d'avoir une variable comme « couleur » qui peut prendre trois valeurs, nous séparer en trois variables. Ceux-ci seraient « couleur rouge », « couleur bleu » et « couleur jaune », qui tout ne peut prendre la valeur 1 ou 0.

Cela augmente la dimensionnalité de l'espace, mais maintenant vous pouvez utiliser un algorithme de regroupement vous aimez. Il ne fait parfois sens de Zscore ou blanchissent les données après avoir fait ce processus, mais la votre idée est sans aucun doute raisonnable.

Vous pouvez également donner à l'attente algorithme de regroupement de Maximisation un essai. Il peut fonctionner sur des données qualitatives et vous donnera une probabilité statistique dont la valeur catégorique (ou valeurs) un cluster est le plus susceptible de prendre.

Cela dépend de votre variable catégorielle utilisée. Pour les variables ordinales, dites comme mauvais, moyen et bon, il est logique que d'utiliser une variable et des valeurs 0,1,2 et les distances ici ont un sens (Avarage est plus proche de mauvais et bon). Cependant, s'il n'y a pas d'ordre, vous devez idéalement utiliser un encodage à chaud comme mentionné ci-dessus.

Vous ne devriez pas utiliser k-means sur un ensemble de données contenant des types de données mixtes. Au contraire, il y a un certain nombre d'algorithmes de clustering qui peuvent gérer de manière appropriée types de données hétérogènes. Certaines possibilités sont les suivantes:

1) algorithmes basés Partitionnement: k-Prototypes,
squeezer 2) algorithmes hiérarchiques: ROCK, Ascendante seule liaison, moyenne et complète
3) algorithmes à base de densité: HIERDENC, MULIC, CLIQUE
4) algorithmes basés sur le modèle: regroupement SVM, cartes auto-organisation

Si vous souhaitez en savoir plus sur ces algorithmes, le manuscrit « Enquête sur les algorithmes Clustering » écrit par Rui Xu offre une introduction complète à l'analyse de cluster.

L'objectif de K-Means est de réduire la variance intra-cluster, et parce qu'il calcule les centroïdes comme point moyen d'un cluster, il est nécessaire d'utiliser la distance euclidienne pour Converge correctement. Par conséquent, si vous voulez absolument utiliser K-Means, vous devez vous assurer que vos données fonctionne bien avec.

Représentation

K-Means, et le regroupement en général, les tentatives pour diviser les données en groupes significatifs en faisant en sorte que les cas dans les pôles sont semblables les uns aux autres. Vous devez donc une bonne façon de représenter vos données afin que vous pouvez facilement calculer une mesure de similarité significative.

En utilisant le codage d'un chaud sur les variables qualitatives est une bonne idée lorsque les catégories sont à égale distance les unes des autres. Par exemple, si vous avez la couleur bleu clair, bleu foncé et jaune, en utilisant le codage d'un chaud pourrait ne pas vous donner les meilleurs résultats, étant donné que le bleu foncé et bleu clair sont susceptibles « de plus près » les uns aux autres qu'ils ne le sont au jaune.

Dans le cas où la valeur catégorielle ne sont pas « égale distance » et peut être commandé, vous pouvez aussi donner les catégories une valeur numérique. Par exemple, enfant, adolescent, adulte, pourrait être représentée comme 0, 1 et 2. Ce serait logique parce qu'un adolescent est « plus proche » d'être un enfant qu'un adulte est.

algorithme des k-médoïdes

Une approche plus générique K-Means est algorithme des k-médoïdes. -Medoids fonctionne K De même que K-Means, mais la principale différence est que le barycentre pour chaque groupe est défini comme étant le point qui réduit la somme des distances intra-cluster. Ce qui vous permet l'application d'utiliser une mesure de distance que vous voulez, et donc, vous pouvez construire votre propre mesure personnalisée qui prendra en compte quelles catégories doivent être proches ou non.

Si l'on considère un scénario dans lequel la variable catégorielle ne peut pas être codé chaud comme la variable catégorielle a plus de 200 catégories.

Dans ce cas, vous pouvez utiliser un package clustMixType

Il peut traiter les données mixtes (numérique et catégorique), il vous suffit de l'alimentation dans les données, il automatiquement catégorielles et sépare les données numériques.

Si vous trouvez des questions comme un numérique est sous catégorique alors vous pouvez vous as.factor () / vice-versa as.numeric (), sur ce champ et converti respectif à un facteur et l'alimentation en ce que de nouvelles données l'algorithme.

Calculer lambda, de sorte que vous pouvez nourrir en entrée comme au moment du regroupement.

nous pouvons même obtenir un WSS (au sein somme des carrés), terrain (graphique du coude) pour trouver le nombre optimal de clusters.

Hope cette réponse vous aide à obtenir des résultats plus significatifs.

Beaucoup de ce qui précède que pointe k-moyens peuvent être mis en œuvre sur les variables qui sont catégoriques et continue, qui est mauvais et les résultats doivent être pris avec une pincée de sel.

Comme mentionné ci-dessus par-dessus @ Tim, il n'a pas de sens pour calculer la distance euclidienne entre les points qui n'ont une échelle, ni avoir un ordre. Lorsque vous encodez un chaud les variables que vous générez une matrice clairsemée de 0 et de 1. Comme la plage des valeurs est fixe et comprise entre 0 et 1, ils doivent être normalisées de la même manière que les variables continues. Les Z-scores sont utilisés pour est utilisé pour trouver la distance entre les points. Ce qui est encore, pas tout à fait raison. Je vais vous expliquer cela par un exemple. Comme les catégories sont la distance mutuellement exclusive entre deux points par rapport aux variables catégoriques, prend l'une des deux valeurs, soit haute ou basse, soit les deux points appartiennent à la même catégorie ou ils ne sont pas. En raison de ces valeurs extrêmes, l'algorithme finit par donner plus de poids sur les variables continues en influençant la formation du cluster. Cela peut être vérifié par une simple vérification en voyant quelles variables influencent et vous serez surpris de voir que la plupart d'entre eux seront variables. (Façons de trouver les variables les plus influent sur [1])

Exemple Un: Considérons un pays variable catégorique. Maintenant que nous savons que la distance (dissemblance) entre les observations de différents pays sont égaux (en supposant pas d'autres similitudes comme les pays voisins ou les pays du même continent). Mais contrairement à cela si vous calculez les distances entre les observations après normalisant les valeurs encodées un chaud, ils seront incompatibles (bien que la différence est mineure) ainsi que le fait qu'ils prennent des valeurs hautes ou basses.

En fin de compte la meilleure option disponible pour python est k-prototypes qui peut gérer à la fois catégorique et variables continues.

[1]: trouver des variables les plus influentes dans la formation de cluster: https://stackoverflow.com/a/53081779/8224401

modèles de mélange peut être utilisé pour regrouper un ensemble de données composé de variables continues et.

Vous pouvez utiliser le package R VarSelLCM (disponible sur CRAN) qui modèles, au sein de chaque groupe, les variables continues par gaussiennes et les ordinale / variables binaires. Prenez soin de stocker vos données dans un data.frame où les variables continues sont « numérique » et les variables qualitatives sont « facteur ».

Un tutoriel est disponible à l'adresse: http: //varsellcm.r-forge.r- project.org/

En outre, les valeurs manquantes peuvent être gérées par le modèle à la main.

Je suis tombé sur le même problème et a essayé de travailler ma tête autour d'elle (sans savoir k-prototypes existent) la riche littérature que j'ai trouvé mon auto rencontré avec l'origine de l'idée de ne pas mesurer les variables avec la même à distance métrique tout. De plus, il peut exister plusieurs sources d'information, qui peuvent impliquer des structures différentes ou « vues » des données. Ceci est un problème naturel, chaque fois que vous faites face à des relations sociales telles que celles sur twitter / sites etc.

L'une des solutions possibles est de traiter chaque sous-ensemble de variables (à savoir numérique et catégorique) séparément. Il est facilement comprehandable quelle mesure la distance fait sur une échelle numérique. Les données qualitatives sur son propre peut aussi être compris facilement: Envisager d'avoir des vecteurs d'observation binaires: Le tableau de contingence sur 0/1 entre deux vecteurs d'observation contient beaucoup d'informations sur la simmilarity entre ces deux observations. Il est riche littérature sur les différentes mesures de similarité personnalisées sur les vecteurs binaires -. Plus à partir du tableau de contingence

Etant donné les deux matrices de distance / similarité, à la fois de décrire les mêmes observations, on peut extraire un graphique sur chacun d'eux (Multi-View-Graph-Clustering) ou extraire un seul graphe avec des arêtes multiples - chaque noeud (observation) avec comme de nombreux bords à un autre nœud, comme il y a des matrices d'information (multi-edge-clustering). Chaque bord étant associé au poids de la mesure simmilarity / distance correspondant. Commencez ici: Github liste des algorithmes Graphique Clustering et leurs papiers . Comme il y a des ensembles d'informations multiples disponibles sur une seule observation, ceux-ci doivent être entrelacés en utilisant par exemple descendants de l'analyse spectrale ou une matrice liée factorisation. L'analyse spectrale est la méthode par défaut pour trouver des pièces fortement connectés ou fortement pondérées des graphiques simples. Ayant un enrobage spectrale des données entrelacés, tout algorithme de regroupement des données numériques peuvent facilement de travail. Le défaut de la littérature est kmeans pour la question de la simplicité, mais beaucoup plus avancé -. et non pas comme des algorithmes restrictives sont là-bas qui peuvent être utilisés de manière interchangeable dans ce contexte

J'aime la beauté et de la généralité dans cette approche, car il est facilement à des ensembles d'prorogeable informations multiples plutôt que de simples dtypes et plus le respect de la « mesure » spécifique sur chaque sous-ensemble de données. Cela ne vous soulage pas de réglage fin du modèle avec différentes mesures de distance et similarité ou de mise à l'échelle vos variables (je me suis retrouvé à l'échelle les variables numériques à ceux ratio échelles dans le cadre de mon analyse)

Du point de vue évolutivité Considere, qu'il ya principalement deux problèmes:

  1. approximation des problèmes Eigen (où une littérature riche d'algorithmes existe aussi)
  2. estimation de la matrice Distance (un problème purement combinatorical, qui pousse un grand très rapidement - je ne l'ai pas trouvé un moyen efficace encore autour d'elle)

Amusez-vous avec elle!

Vous voudrez peut-être regarder l'ingénierie de fonction automatique: http: //www.orges-leka .de / automatic_feature_engineering.html . La méthode est basée sur Bourgain Enrobage et peut être utilisée pour dériver les caractéristiques numériques de catégorique mixte et des trames de données numériques ou pour tout ensemble de données qui prend en charge les distances entre les deux points de données. Après avoir transformé les données de caractéristiques numériques seulement, on peut utiliser K-means directement alors

Licencié sous: CC-BY-SA avec attribution
scroll top