Saat ini saya sedang menyelidiki visualisasi data dimensi tinggi menggunakan t-SNE. Saya punya beberapa data dengan variabel biner campuran dan kontinu dan data tersebut tampaknya terlalu mudah mengelompokkan data biner. Tentu saja ini diharapkan untuk data berskala (antara 0 dan 1): jarak Euclidian akan selalu terbesar / terkecil di antara variabel-variabel biner. Bagaimana seharusnya seseorang berurusan dengan kumpulan data biner / berkelanjutan menggunakan t-SNE? Haruskah kita menjatuhkan kolom biner? Adakah yang berbeda yang metric
bisa kita gunakan?
Sebagai contoh, pertimbangkan kode python ini:
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
jadi data mentah saya adalah:
di mana warna adalah nilai dari fitur ketiga (x3) - dalam 3D titik data berada dalam dua bidang (x3 = 0 bidang dan x3 = 1 bidang).
Saya kemudian melakukan 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)
dengan plot yang dihasilkan:
dan data tentu saja telah dikelompokkan oleh x3. Naluri saya adalah bahwa karena metrik jarak tidak terdefinisi dengan baik untuk fitur-fitur biner, kita harus menjatuhkannya sebelum melakukan t-SNE, yang akan memalukan karena fitur-fitur ini mungkin mengandung informasi yang berguna untuk menghasilkan kluster.
Jawaban:
Penafian: Saya hanya memiliki pengetahuan tangensial tentang topik tersebut, tetapi karena tidak ada orang lain yang menjawab, saya akan mencobanya
Jarak itu penting
Setiap teknik pengurangan dimensionalitas berdasarkan jarak (tSNE, UMAP, MDS, PCoA dan mungkin lainnya) hanya sebagus metrik jarak yang Anda gunakan. Seperti yang ditunjukkan @amoeba dengan benar, tidak mungkin ada solusi satu ukuran untuk semua, Anda harus memiliki metrik jarak yang menangkap apa yang Anda anggap penting dalam data, yaitu bahwa baris yang Anda anggap serupa memiliki jarak kecil dan baris yang Anda inginkan anggap berbeda punya jarak yang jauh.
Bagaimana Anda memilih metrik jarak yang baik? Pertama, izinkan saya melakukan sedikit pengalihan:
Pentahbisan
Jauh sebelum masa kejayaan pembelajaran mesin modern, ahli ekologi komunitas (dan kemungkinan besar yang lain) telah mencoba membuat plot yang bagus untuk analisis eksplorasi data multidimensi. Mereka menyebut proses penahbisan dan itu adalah kata kunci yang berguna untuk mencari dalam literatur ekologi kembali setidaknya ke tahun 70-an dan masih kuat sampai sekarang.
Yang penting adalah bahwa ahli ekologi memiliki kumpulan data yang sangat beragam dan berurusan dengan campuran fitur biner, bilangan bulat dan nilai nyata (misalnya ada / tidaknya spesies, jumlah spesimen yang diamati, pH, suhu). Mereka telah menghabiskan banyak waktu memikirkan jarak dan transformasi untuk membuat penahbisan bekerja dengan baik. Saya tidak memahami bidang dengan sangat baik, tetapi sebagai contoh review oleh Legendre dan De Cáceres Beta keragaman sebagai varians dari data komunitas: dissimilaritycoefficients dan partisi menunjukkan sejumlah besar kemungkinan jarak yang mungkin ingin Anda periksa.
Penskalaan multidimensi
Alat masuk untuk penahbisan adalah penskalaan multi-dimensi (MDS), terutama varian non-metrik (NMDS) yang saya anjurkan agar Anda coba selain t-SNE. Saya tidak tahu tentang dunia Python, tetapi implementasi R dalam
metaMDS
fungsivegan
paket melakukan banyak trik untuk Anda (misalnya menjalankan beberapa kali hingga menemukan dua yang serupa).Ini telah diperdebatkan, lihat komentar: Bagian bagus tentang MDS adalah bahwa ia juga memproyeksikan fitur (kolom), sehingga Anda dapat melihat fitur mana yang mendorong pengurangan dimensi. Ini membantu Anda menafsirkan data Anda.
Perlu diingat bahwa t-SNE telah dikritik sebagai alat untuk memperoleh pemahaman lihat misalnya eksplorasi ini perangkapnya - Saya pernah mendengar UMAP memecahkan beberapa masalah, tetapi saya tidak memiliki pengalaman dengan UMAP. Saya juga tidak meragukan sebagian alasan para ahli ekologi menggunakan NMDS adalah budaya dan kelembaman, mungkin UMAP atau t-SNE sebenarnya lebih baik. Sejujurnya aku tidak tahu.
Meluncurkan jarak Anda sendiri
Sebuah kata peringatan
Setiap saat Anda harus ingat bahwa karena Anda memiliki begitu banyak tombol untuk disetel, Anda dapat dengan mudah jatuh ke dalam perangkap penyetelan sampai Anda melihat apa yang ingin Anda lihat. Ini sulit dihindari sepenuhnya dalam analisis eksplorasi, tetapi Anda harus berhati-hati.
sumber
metaMDS
plot sampel dan fitur (lihat mis. sketsa ini: cran.r-project.org/web/packages/vegan/vignettes/ intro-vegan.pdf )vegan
paket di sana, tetapi MDS / NMDS adalah metode nonlinear dan nonparametrik (persis seperti t-SNE), dan tidak ada cara "internal" untuk mencocokkan fitur asli dengan dimensi MDS. Saya bisa membayangkan bahwa mereka menghitung korelasi antara fitur asli dan dimensi MDS; jika demikian, ini bisa dilakukan untuk penyematan apa pun, termasuk t-SNE. Akan menarik untuk mengetahui apa yang sebenarnyavegan
dilakukannya.