J'ai un jeu de données X qui a 10 dimensions, dont 4 sont des valeurs discrètes. En fait, ces 4 variables discrètes sont ordinales, c'est-à-dire qu'une valeur plus élevée implique une sémantique plus élevée / meilleure.
2 de ces variables discrètes sont catégoriques en ce sens que pour chacune de ces variables, la distance, par exemple de 11 à 12, est différente de la distance de 5 à 6. Tandis qu'une valeur de variable plus élevée implique une valeur plus élevée en réalité, l'échelle est: pas nécessairement linéaire (en fait, ce n’est pas vraiment défini).
Ma question est:
- Est-ce une bonne idée d’appliquer un algorithme de classification commun (par exemple, K-Means, puis Gaussian Mixture (GMM)) à cet ensemble de données contenant à la fois des variables discrètes et des variables continues?
Si non:
- Devrais-je supprimer les variables discrètes et me concentrer uniquement sur les variables continues?
- Devrais-je mieux discrétiser les processus continus et utiliser un algorithme de classification pour les données discrètes?
Réponses:
On vous a donc dit qu'il vous fallait une mesure de distance appropriée. Voici quelques pistes:
et bien sûr: distance de Mahalanobis .
la source
J'ai eu à traiter ce genre de problème dans le passé et je pense qu'il pourrait y avoir 2 approches intéressantes:
Continualification: transforme les attributs symboliques avec une séquence d'entiers. Il existe plusieurs façons de procéder, décrites dans le présent document . Vous pouvez essayer les algorithmes NBF, VDM et MDV.
Discrétisation: transformer des attributs continus en valeurs symboliques. Encore une fois, de nombreux algorithmes et un bon exposé à ce sujet seraient cet article . Je crois que la méthode la plus couramment utilisée est la méthode 1R de Holte, mais la meilleure façon de le savoir consiste à examiner les courbes ROC par rapport à des algorithmes tels que EWD, EFD, ID, LD ou NDD.
Une fois que vous avez toutes vos fonctionnalités dans le même espace, cela devient un problème de clustering habituel.
Le choix entre continuité et discrétisation dépend de votre ensemble de données et de la présentation de vos fonctionnalités. Il est donc difficile de le dire, mais je vous conseille de lire les articles que je vous ai donnés sur ce sujet.
la source
K-means n'a évidemment aucun sens, car il calcule des moyens (qui sont absurdes). Même chose pour GMM.
Vous voudrez peut-être essayer des algorithmes de clustering basés sur la distance avec des fonctions de distance appropriées, par exemple DBSCAN.
Le principal défi est de trouver une fonction de distance!
Bien que vous puissiez placer une fonction de distance différente dans k-moyennes, elle calculera toujours la moyenne qui n'a probablement pas beaucoup de sens (et dérange probablement avec une fonction de distance pour les valeurs discrètes).
Quoi qu'il en soit, concentrez-vous d'abord sur ce que "similaire" est . Puis clusters en utilisant cette définition de similaire!
la source
Si vous êtes à l'aise avec une matrice de taille de distance
num_of_samples x num_of_samples
, vous pouvez également l'utiliserrandom forests
.Cliquez ici pour un article de référence intitulé
Unsupervised learning with random forest predictors
.L'idée est de créer un jeu de données synthétique à l'aide de
shuffling
valeurs du jeu de données d'origine et de former un classifieur pour séparer les deux. Pendant la classification, vous obtiendrez uninter-sample distance matrix
, sur lequel vous pourrez tester votre algorithme de clustering préféré.la source
Approche mixte à adopter: 1) Utiliser la technique de classification (arbre de décision C4.5) pour classer le jeu de données en 2 classes. 2) Une fois que c'est fait, laissez les variables catégorielles et passez aux variables continues pour la mise en cluster.
la source