Masalah dengan t-SNE adalah bahwa ia tidak menjaga jarak atau kepadatan. Hanya sampai batas tertentu mempertahankan tetangga terdekat. Perbedaannya halus, tetapi memengaruhi algoritme berbasis kepadatan atau jarak.
Untuk melihat efek ini, cukup buat distribusi Gaussian multivarian. Jika Anda memvisualisasikan ini, Anda akan memiliki bola yang padat dan jauh lebih sedikit padat, dengan beberapa outlier yang bisa sangat jauh.
Sekarang jalankan t-SNE pada data ini. Anda biasanya akan mendapatkan lingkaran dengan kepadatan yang agak seragam. Jika Anda menggunakan kebingungan rendah, mungkin ada beberapa pola aneh di sana. Tapi Anda tidak bisa membedakan outlier lagi.
Sekarang mari kita buat lebih rumit. Mari kita gunakan 250 poin dalam distribusi normal pada (-2,0), dan 750 poin dalam distribusi normal pada (+2,0).
Ini seharusnya merupakan kumpulan data yang mudah, misalnya dengan EM:
Jika kita menjalankan t-SNE dengan kebingungan standar 40, kita mendapatkan pola berbentuk aneh:
Tidak buruk, tetapi juga tidak mudah untuk dikelompokkan, bukan? Anda akan kesulitan menemukan algoritma pengelompokan yang bekerja di sini persis seperti yang diinginkan. Dan bahkan jika Anda akan meminta manusia untuk mengelompokkan data ini, kemungkinan besar mereka akan menemukan lebih dari 2 cluster di sini.
Jika kita menjalankan t-SNE dengan kebingungan yang terlalu kecil seperti 20, kita mendapatkan lebih dari pola-pola ini yang tidak ada:
Ini akan mengelompok mis dengan DBSCAN, tetapi akan menghasilkan empat cluster. Jadi berhati-hatilah, t-SNE dapat menghasilkan pola "palsu"!
Kesulitan optimal tampaknya sekitar 80 untuk set data ini; tapi saya tidak berpikir parameter ini akan bekerja untuk setiap kumpulan data lainnya.
Sekarang ini secara visual menyenangkan, tetapi tidak lebih baik untuk analisis . Seorang annotator manusia kemungkinan bisa memilih potongan dan mendapatkan hasil yang layak; Namun k-means akan gagal bahkan dalam skenario yang sangat sangat mudah ini ! Anda sudah dapat melihat bahwa informasi kepadatan hilang , semua data tampaknya hidup di daerah dengan kepadatan yang hampir sama. Jika kita lebih lanjut akan meningkatkan kebingungan, keseragaman akan meningkat, dan pemisahan akan berkurang lagi.
Dalam kesimpulan, gunakan t-SNE untuk visualisasi (dan coba berbagai parameter untuk mendapatkan sesuatu yang menyenangkan secara visual!), Tetapi jangan menjalankan pengelompokan setelah itu , khususnya jangan gunakan algoritme berbasis jarak atau kepadatan, karena informasi ini sengaja dibuat (!) kalah. Pendekatan berbasis-lingkungan mungkin baik-baik saja, tetapi kemudian Anda tidak perlu menjalankan t-SNE terlebih dahulu, cukup gunakan tetangga segera (karena t-SNE berusaha menjaga nn-grafik ini sebagian besar tetap utuh).
Lebih banyak contoh
Contoh-contoh ini disiapkan untuk presentasi makalah (tetapi belum dapat ditemukan di makalah, seperti yang saya lakukan percobaan ini nanti)
Erich Schubert, dan Michael Gertz.
Embedded t-Stochastic Neighbor Intrinsik untuk Visualisasi dan Deteksi Outlier - Sebuah Penyembuhan Terhadap Kutukan Dimensiitas?
Dalam: Prosiding Konferensi Internasional ke-10 tentang Pencarian dan Aplikasi Kesamaan (SISAP), Munich, Jerman. 2017
Pertama, kami memiliki data input ini:
Seperti yang Anda tebak, ini berasal dari gambar "warna saya" untuk anak-anak.
Jika kita menjalankan ini melalui SNE ( BUKAN t-SNE , tapi pendahulunya):
Wow, ikan kita sudah menjadi monster laut! Karena ukuran kernel dipilih secara lokal, kami kehilangan banyak informasi kepadatan.
Tetapi Anda akan sangat terkejut dengan output dari t-SNE:
Saya sebenarnya telah mencoba dua implementasi (ELKI, dan implementasi sklearn), dan keduanya menghasilkan hasil seperti itu. Beberapa fragmen terputus, tetapi masing-masing terlihat agak konsisten dengan data asli.
Dua poin penting untuk menjelaskan ini:
SGD bergantung pada prosedur perbaikan berulang, dan mungkin terjebak dalam optima lokal. Secara khusus, ini menyulitkan algoritma untuk "membalik" bagian dari data yang telah dicerminkannya, karena ini akan memerlukan titik bergerak melalui yang lain yang seharusnya terpisah. Jadi, jika beberapa bagian ikan dicerminkan, dan bagian lainnya tidak dicerminkan, mungkin tidak dapat memperbaikinya.
t-SNE menggunakan distribusi-t di ruang yang diproyeksikan. Berbeda dengan distribusi Gaussian yang digunakan oleh SNE biasa, ini berarti sebagian besar poin akan saling tolak , karena mereka memiliki 0 afinitas dalam domain input (Gaussian mendapatkan nol dengan cepat), tetapi afinitas> 0 dalam domain output. Terkadang (seperti pada MNIST) ini membuat visualisasi yang lebih bagus. Secara khusus, ini dapat membantu "memecah" suatu set data sedikit lebih banyak dari pada domain input. Penolakan tambahan ini juga sering menyebabkan poin untuk lebih merata menggunakan area, yang juga bisa diinginkan. Tapi di sini dalam contoh ini, efek memukul mundur sebenarnya menyebabkan fragmen ikan terpisah.
Kami dapat membantu (pada kumpulan data mainan ini ) masalah pertama dengan menggunakan koordinat asli sebagai penempatan awal, daripada koordinat acak (seperti biasanya digunakan dengan t-SNE). Kali ini, gambar sklearn bukan ELKI, karena versi sklearn sudah memiliki parameter untuk melewati koordinat awal:
Seperti yang Anda lihat, bahkan dengan penempatan awal "sempurna", t-SNE akan "memecah" ikan di sejumlah tempat yang semula terhubung karena tolakan Student-t dalam domain keluaran lebih kuat daripada afinitas Gaussian dalam input ruang.
Seperti yang Anda lihat, t-SNE (dan SNE juga!) Adalah teknik visualisasi yang menarik , tetapi mereka perlu ditangani dengan hati-hati. Saya lebih suka tidak menerapkan k-means pada hasilnya! karena hasilnya akan sangat terdistorsi, dan tidak ada jarak atau kepadatan yang terpelihara dengan baik. Sebaliknya, lebih baik menggunakannya untuk visualisasi.