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 metric
nous 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:
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:
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.
Réponses:
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
metaMDS
fonction duvegan
paquet 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.
la source
metaMDS
tracé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 )vegan
paquet 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 quevegan
fait exactement .