Obecnie badam wizualizację danych wielowymiarowych za pomocą t-SNE. Mam pewne dane z mieszanymi zmiennymi binarnymi i ciągłymi, a dane wydają się zbyt łatwo grupować dane binarne. Oczywiście jest to oczekiwane w przypadku danych skalowanych (od 0 do 1): odległość euklidesowa zawsze będzie największa / najmniejsza między zmiennymi binarnymi. Jak należy radzić sobie z mieszanymi zestawami danych binarnych / ciągłych za pomocą t-SNE? Czy powinniśmy upuścić kolumny binarne? Czy jest inny, metric
którego możemy użyć?
Jako przykład rozważmy ten kod 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
więc moje nieprzetworzone dane to:
gdzie kolor jest wartością trzeciej cechy (x3) - w 3D punkty danych leżą w dwóch płaszczyznach (płaszczyzna x3 = 0 i płaszczyzna x3 = 1).
Następnie wykonuję 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)
z otrzymanym działką:
a dane są oczywiście grupowane przez x3. Moją instynktem jest to, że ponieważ metryka odległości nie jest dobrze zdefiniowana dla funkcji binarnych, powinniśmy je upuścić przed wykonaniem jakiegokolwiek t-SNE, co byłoby wstydem, ponieważ te funkcje mogą zawierać przydatne informacje do generowania klastrów.
Odpowiedzi:
Zastrzeżenie: Mam tylko wiedzę styczną na ten temat, ale ponieważ nikt inny nie odpowiedział, spróbuję
Odległość jest ważna
Każda technika redukcji wymiarów oparta na odległościach (tSNE, UMAP, MDS, PCoA i ewentualnie inne) jest tak dobra, jak używana przez ciebie metryka odległości. Jak słusznie wskazuje @amoeba, nie może istnieć jedno uniwersalne rozwiązanie, musisz mieć metrykę odległości, która uchwyci to, co uważasz za ważne w danych, tj. Wiersze, które uważasz za podobne, mają małą odległość i rzędy uważają, że różne mają dużą odległość.
Jak wybrać dobrą metrykę odległości? Najpierw pozwól mi zrobić małą dywersję:
Wyświęcenie
Na długo przed dniami świetności współczesnego uczenia maszynowego, ekolodzy społeczni (i prawdopodobnie inni) próbowali stworzyć ładne wykresy do eksploracyjnej analizy danych wielowymiarowych. Nazywają to wyświęcaniem procesu i jest to przydatne słowo kluczowe, którego należy szukać w literaturze ekologii, sięgającej co najmniej lat 70. i wciąż silnej do dziś.
Ważne jest to, że ekolodzy mają bardzo zróżnicowane zbiory danych i zajmują się mieszankami cech binarnych, liczb całkowitych i wartości rzeczywistych (np. Obecność / brak gatunków, liczba zaobserwowanych okazów, pH, temperatura). Spędzili dużo czasu zastanawiając się nad odległościami i transformacjami, aby święcenia działały dobrze. Nie rozumiem zbyt dobrze tej dziedziny, ale na przykład przegląd różnorodności Legendre i De Cáceres Beta jako wariancji danych społeczności: odmienne współczynniki i partycjonowanie pokazuje przeważającą liczbę możliwych odległości, które możesz chcieć sprawdzić.
Skalowanie wielowymiarowe
Narzędziem do wyświęcania jest skalowanie wielowymiarowe (MDS), zwłaszcza wariant niemetryczny (NMDS), do którego zachęcam was do wypróbowania oprócz t-SNE. Nie wiem o świecie Python, ale implementacja R w
metaMDS
funkcjivegan
pakietu robi dla ciebie wiele sztuczek (np. Uruchamianie wielu uruchomień, aż znajdzie dwa podobne).To zostało zakwestionowane, patrz komentarze: Przyjemną częścią MDS jest to, że wyświetla on także elementy (kolumny), dzięki czemu można zobaczyć, które elementy powodują zmniejszenie wymiarów. Pomaga to w interpretacji danych.
Należy pamiętać, że t-SNE został skrytykowany jako narzędzie do zrozumienia, patrz np. Eksploracja jego pułapek - słyszałem, że UMAP rozwiązuje niektóre problemy, ale nie mam doświadczenia z UMAP. Nie wątpię też, że część powodów, dla których ekolodzy używają NMDS, to kultura i bezwładność, być może UMAP lub t-SNE są w rzeczywistości lepsze. Naprawdę nie wiem.
Rozwijanie własnego dystansu
Jeśli rozumiesz strukturę swoich danych, gotowe odległości i transformacje mogą nie być dla Ciebie najlepsze i możesz chcieć zbudować niestandardową miarę odległości. Chociaż nie wiem, co reprezentują twoje dane, rozsądne może być obliczenie odległości osobno dla zmiennych o wartościach rzeczywistych (np. Użycie odległości euklidesowej, jeśli ma to sens) oraz dla zmiennych binarnych i dodanie ich. Typowymi odległościami dla danych binarnych są na przykład odległość Jaccard lub odległość Cosinus . Być może trzeba pomyśleć o pewnym współczynniku multiplikatywnym dla odległości, ponieważ Jaccard i Cosine mają wartości w[ 0 , 1 ] niezależnie od liczby elementów, a wielkość odległości euklidesowej odzwierciedla liczbę elementów.
Słowo ostrzeżenia
Cały czas powinieneś pamiętać, że skoro masz tyle pokręteł do dostrojenia, możesz łatwo wpaść w pułapkę strojenia, dopóki nie zobaczysz tego, co chcesz zobaczyć. Trudno tego całkowicie uniknąć w analizie eksploracyjnej, ale należy zachować ostrożność.
źródło
metaMDS
zarówno próbek, jak i elementów (patrz np. ta winieta: cran.r-project.org/web/packages/vegan/vignettes/ intro-vegan.pdf )vegan
robi pakiet, ale MDS / NMDS jest nieliniową i nieparametryczną metodą (dokładnie tak jak t-SNE) i nie ma „wewnętrznego” sposobu na dopasowanie oryginalnych elementów do wymiarów MDS. Mogę sobie wyobrazić, że obliczają korelacje między oryginalnymi elementami a wymiarami MDS; jeśli tak, można to zrobić dla każdego osadzania, w tym t-SNE. Byłoby ciekawie wiedzieć, co dokładnievegan
robi.