Regroupement de données de type mixte avec R

19

Je me demande s'il est possible d'effectuer au sein de R un clustering de données ayant des variables de données mixtes. En d'autres termes, j'ai un ensemble de données contenant à la fois des variables numériques et catégorielles et je trouve la meilleure façon de les regrouper. Dans SPSS, j'utiliserais un cluster en deux étapes. Je me demande si en R je peux trouver une technique similaire. On m'a parlé du paquet poLCA, mais je ne suis pas sûr ...

Giorgio Spedicato
la source
1
SPSS TwoStep n'est-il pas conçu pour gérer de grands ensembles de données? (Je donne une réponse à une question connexe ici .) Dans le cas contraire, serait ma réponse à Can analyse en composantes principales est appliquée à des ensembles de données contenant un mélange de variables continues et? être d'une quelconque aide?
chl
Au sein du groupe de packages R, il existe une marguerite qui créera une matrice de dissimilarité pour les données mixtes (coefficient de similitude de Gower). Ensuite, vous pouvez utiliser ? Agnes ou d'autres fonctions de clustering.
rhonda
1
Ne confondez pas méthode et implémentation. Recherchez d'abord un algorithme de clustering qui a du sens. Ensuite , chercher un paquet R qui l' implémente.
shadowtalker
La similitude de Gower peut être utilisée.
ttnphns
@gung a récemment fermé une question très similaire que j'ai posée. On m'a dit que ma question était hors sujet car elle concernait principalement les logiciels. Cela semble être similaire pour les logiciels. Je serais très intéressé de savoir pourquoi les règles ici sont appliquées de manière incohérente. Remarquez, je pense que la question est informative, mais les règles devraient être les règles.
Weiwen Ng

Réponses:

8

Cela peut arriver tard mais essayez klaR ( http://cran.r-project.org/web/packages/klaR/index.html )

install.packages("klar")

Il utilise l'algorithme non hiérarchique des modes k, qui est basé sur l'appariement simple comme fonction de distance, de sorte que la distance δ entre une variable m de deux points de données X et y est donnée par

δ(Xm,ym)={1Xmym,0autrement

Il y a un défaut avec le package, c'est-à-dire que si deux points de données ont la même distance à un centre de cluster, le premier de vos données est choisi par opposition à un point aléatoire, mais vous pouvez facilement modifier le bit dans le code.

Pour s'adapter à la mise en cluster à variables mixtes, vous devrez entrer dans le code et modifier la fonction de distance pour identifier les modes et variables numériques et non numériques.

victor_v
la source
7

Une autre façon intéressante de gérer les variables de types mixtes consiste à utiliser la matrice de proximité / similitude de Random Forests: http://cogns.northwestern.edu/cbmg/LiawAndWiener2002.pdf . Cela facilite une façon unifiée de traiter également toutes les variables (néanmoins, soyez conscient du problème du biais de sélection des variables). D'un autre côté, il n'existe pas vraiment de méthode universelle pour définir la distance pour les variables de types mixtes. Tout dépend des contextes d'application.

XGS
la source
4

Vous pouvez utiliser l'analyse de correspondance multiple pour créer des dimensions continues à partir des variables catégorielles, puis les utiliser avec les variables numériques dans une deuxième étape.

ftr
la source
1
Comment traiteriez-vous les variables numériques dans MCA? Vous utilisez la discrétisation?
chl
Il existe des extensions de MCA qui peuvent inclure des variables continues, voir par exemple l'analyse d'homogénéité homals
kjetil b halvorsen
3

Eh bien, certainement. En rendant les variables catégorielles artificiellement numériques. Ou en utilisant un clustering basé sur une matrice de distance (fpc peut probablement le faire). La question à laquelle vous devez d'abord essayer de répondre est la suivante: est-ce vraiment logique?

Anony-Mousse -Reinstate Monica
la source
3

Vous pouvez utiliser le coefficient de similitude universel de Gower (voir Sneath & Sokal 1973, pp 135-136), qui pour deux OTU et est pour tous les caractères .jk

Sg=je=1nwje,j,ksje,j,kje=1nwje,j,k
je

Le poids est soit 1 soit 0, selon que la comparaison est valide ou non (données manquantes, absence de caractère binaire dans les deux OTU). Des schémas de pesée plus compliqués ont été publiés.wje,j,k

sje,j,k est calculé pour

  • variables binaires: 1 pour la concordance, 0 pour la discordance (équivalent au coefficient de Jaccard si est réglé sur 0 pour les absences concordantes)wje,j,k

  • caractères multi-états (nominaux ou ordinaux): 1 pour l'égalité, 0 sinon (équivalent au coefficient d'appariement simple)

  • caractère cardinal: avec la plage de caractères (soit dans la population, soit dans l'échantillon).sje,j,k=1-|Xje,j-Xje,k|RjeRjeje

La bonne chose à propos de est qu'il peut non seulement gérer tous les types de données, mais qu'il est également robuste contre les données manquantes. Il en résulte également des matrices de similitude semi-définie positives, c'est-à-dire que les OTU sont représentées par des points dans l'espace euklidien (au moins sinon trop de données manquent).Sg

La distance entre les OTU peut être représentée par1-Sg

Engelbert Buxbaum
la source
Pouvez-vous définir ce qu'est "caractère" (et "caractère cardinal") dans votre réponse? Voulez-vous dire par là variable / attribut / caractéristique? En outre, je pourrais ajouter que Gower peut être calculé pour les variables ordinales sans les traiter comme nominales ("multi-états"), voir .
ttnphns
Caracter, variable, feature sont tous synonymes. Cardinal signifie soit intervalle, soit échelle rationnelle.
Engelbert Buxbaum
Merci de l'avoir clarifié. Je viens de demander parce que votre terminologie n'est apparemment pas très courante dans les statistiques ou l'apprentissage automatique: le "caractère" est inhabituel, et ce que vous appelez le type de variable "cardinal" est généralement connu sous le nom de variable "échelle" aka variable "métrique", il s'oppose à catégorique .
ttnphns
1

Si les valeurs possibles des variables catégorielles ne sont pas trop nombreuses, vous pouvez penser à créer des variables binaires à partir de ces valeurs. Vous pouvez traiter ces variables binaires comme des variables numériques et exécuter votre clustering. C'est ce que j'ai fait pour mon projet.

Raghvendra
la source
0

VarSelLCM offres forfaitaires

Sélection de variables pour le clustering basé sur un modèle d'un ensemble de données de type mixte avec des valeurs manquantes

Sur CRAN , et décrit plus en papier .

L'avantage par rapport à certaines des méthodes précédentes est qu'il offre une aide au choix du nombre de clusters et gère les données manquantes. Une belle application brillante fournie n'est pas non plus désapprouvée.

entrez la description de l'image ici

radek
la source