t-SNE avec variables continues et binaires mixtes


10

J'étudie actuellement la visualisation de données de grande dimension à l'aide de t-SNE. J'ai quelques données avec des variables binaires et continues mixtes et les données semblent regrouper les données binaires beaucoup trop facilement. Bien sûr, cela est prévu pour les données échelonnées (entre 0 et 1): la distance euclidienne sera toujours la plus grande / la plus petite entre les variables binaires. Comment traiter les ensembles de données mixtes binaires / continus à l'aide de t-SNE? Faut-il supprimer les colonnes binaires? Y at-il un autre que metricnous pouvons utiliser?

À titre d'exemple, considérons ce code python:

x1 = np.random.rand(200)
x2 = np.random.rand(200)
x3 = np.r_[np.ones(100), np.zeros(100)]

X = np.c_[x1, x2, x3]

# plot of the original data
plt.scatter(x1, x2, c=x3)
# … format graph

donc mes données brutes sont:

données brutes

où la couleur est la valeur de la troisième entité (x3) - en 3D, les points de données se trouvent dans deux plans (x3 = 0 plan et x3 = 1 plan).

J'exécute ensuite t-SNE:

tsne = TSNE() # sci-kit learn implementation
X_transformed = StandardScaler().fit_transform(X)
tsne = TSNE(n_components=2, perplexity=5)
X_embedded = tsne.fit_transform(X_transformed)

avec le tracé résultant:

tsne_data

et les données ont bien sûr été regroupées par x3. Mon instinct est que, comme une métrique de distance n'est pas bien définie pour les fonctionnalités binaires, nous devons les supprimer avant d'effectuer tout t-SNE, ce qui serait dommage car ces fonctionnalités peuvent contenir des informations utiles pour la génération des clusters.


1
Remarque: je suis toujours intéressé à entendre des commentaires à ce sujet et également sur l'applicabilité de l'UMAP à cet espace.
FChm

Merci pour la prime, toujours intéressé, mais je n'ai pas passé beaucoup de temps à examiner cela pour être juste. J'ai peut-être un peu de temps aujourd'hui pour faire des recherches initiales et ajouter des mises à jour le cas échéant.
FChm

2
J'ai rencontré ce problème dans la pratique. Je pense qu'il n'est pas spécifique à tSNE, mais affectera également tout algorithme d'apprentissage non supervisé basé sur la distance (y compris le clustering). Je pense également que la solution appropriée dépendra fortement de ce que les caractéristiques binaires représentent et de l'avis d'experts sur leur importance. Je cherche donc une réponse qui discuterait de différentes situations possibles. Je suis sûr qu'il n'y a pas de solution universelle ici.
amibe

Réponses:


8

Avertissement: je n'ai que des connaissances tangentielles sur le sujet, mais comme personne d'autre n'a répondu, je vais essayer

La distance est importante

Toute technique de réduction de dimensionnalité basée sur les distances (tSNE, UMAP, MDS, PCoA et éventuellement d'autres) est seulement aussi bonne que la métrique de distance que vous utilisez. Comme @amoeba le souligne correctement, il ne peut pas y avoir de solution unique, vous devez avoir une métrique de distance qui capture ce que vous jugez important dans les données, c'est-à-dire que les lignes que vous considérez comme similaires ont une petite distance et des lignes que vous auriez considérer différents ont une grande distance.

Comment choisissez-vous une bonne métrique de distance? Tout d'abord, permettez-moi de faire une petite diversion:

Ordination

Bien avant les jours de gloire de l'apprentissage automatique moderne, les écologistes communautaires (et très probablement d'autres) ont essayé de faire de jolis graphiques pour l'analyse exploratoire des données multidimensionnelles. Ils appellent l' ordination des processus et c'est un mot-clé utile à rechercher dans la littérature écologique remontant au moins aux années 70 et toujours d'actualité.

L'important est que les écologistes disposent d'un ensemble de données très diversifié et traitent de mélanges de caractéristiques binaires, entières et à valeur réelle (par exemple, présence / absence d'espèces, nombre de spécimens observés, pH, température). Ils ont passé beaucoup de temps à réfléchir aux distances et aux transformations pour bien faire fonctionner les ordinations. Je ne comprends pas très bien le domaine, mais par exemple l'examen de la diversité de Legendre et De Cáceres Beta comme la variance des données communautaires: les coefficients de dissimilarité et le partitionnement montrent un nombre écrasant de distances possibles que vous voudrez peut-être vérifier.

Échelle multidimensionnelle

L'outil de référence pour l'ordination est la mise à l'échelle multidimensionnelle (MDS), en particulier la variante non métrique (NMDS) que je vous encourage à essayer en plus du t-SNE. Je ne connais pas le monde Python, mais l'implémentation R en metaMDSfonction du veganpaquet fait beaucoup d'astuces pour vous (par exemple, exécuter plusieurs exécutions jusqu'à ce qu'il en trouve deux qui soient similaires).

Cela a été contesté, voir les commentaires: La bonne partie de MDS est qu'il projette également les fonctionnalités (colonnes), afin que vous puissiez voir quelles fonctionnalités entraînent la réduction de dimensionnalité. Cela vous aide à interpréter vos données.

Gardez à l'esprit que t-SNE a été critiqué comme un outil pour dériver la compréhension, voir par exemple cette exploration de ses pièges - J'ai entendu dire que UMAP résout certains des problèmes, mais je n'ai aucune expérience avec UMAP. Je ne doute pas non plus qu'une partie de la raison pour laquelle les écologistes utilisent le NMDS est la culture et l'inertie, peut-être que l'UMAP ou le t-SNE sont en fait meilleurs. Honnêtement, je ne sais pas.

Déployer votre propre distance

Si vous comprenez la structure de vos données, les distances et les transformations prédéfinies peuvent ne pas vous convenir le mieux et vous souhaiterez peut-être créer une mesure de distance personnalisée. Bien que je ne sache pas ce que représentent vos données, il pourrait être judicieux de calculer la distance séparément pour les variables à valeur réelle (par exemple en utilisant la distance euclidienne si cela a du sens) et pour les variables binaires et de les ajouter. Les distances courantes pour les données binaires sont par exemple la distance Jaccard ou la distance Cosinus . Vous devrez peut-être penser à un coefficient multiplicatif pour les distances, car Jaccard et Cosine ont tous deux des valeurs dans quel que soit le nombre d'entités tandis que l'amplitude de la distance euclidienne reflète le nombre d'entités.[0,1]

Un mot d'avertissement

Tout le temps, vous devez garder à l'esprit que, comme vous avez tellement de boutons à régler, vous pouvez facilement tomber dans le piège du réglage jusqu'à ce que vous voyiez ce que vous vouliez voir. C'est difficile à éviter complètement dans l'analyse exploratoire, mais vous devez être prudent.


1
+1. Beaucoup de bons points ici, et j'aime les références à la littérature plus ancienne sur "l'ordination". Une chose qui a attiré mon attention: "La bonne partie de MDS est qu'il projette également les fonctionnalités (colonnes), de sorte que vous pouvez voir quelles fonctionnalités entraînent la réduction de dimensionnalité" - en êtes-vous sûr? Ce n'est pas vrai, si je comprends bien; au moins, ce n'est pas plus vrai pour MDS que pour t-SNE.
amibe

@amoeba C'est là que ma connaissance limitée entre en jeu :-) Tout ce que je sais, c'est que la méthode de traçage par défaut pour les metaMDStracés à la fois des échantillons et des fonctionnalités (voir par exemple cette vignette: cran.r-project.org/web/packages/vegan/vignettes/ intro-vegan.pdf )
Martin Modrák

Merci pour vos réponses et votre perspicacité. Je me concentre maintenant davantage sur UMAP, et je pense que définir une mesure de similitude comme la distance Jaccard peut-être un bon moyen de traiter des types de variables mixtes. Je n'ai pas utilisé MDS, mais j'en suis conscient. Je vais devoir passer un peu de temps à comprendre si c'est utile.
FChm

1
@ MartinModrák Je ne sais pas exactement ce que fait le veganpaquet là-bas, mais MDS / NMDS est une méthode non linéaire et non paramétrique (exactement comme t-SNE), et il n'y a aucun moyen "interne" de faire correspondre les caractéristiques originales aux dimensions MDS. Je peux imaginer qu'ils calculent les corrélations entre les caractéristiques originales et les dimensions MDS; si tel est le cas, cela pourrait être fait pour toute incorporation, y compris t-SNE. Serait intéressant de savoir ce que veganfait exactement .
amibe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.