Pemahaman saya tentang t-SNE dan pendekatan Barnes-Hut adalah bahwa semua titik data diperlukan sehingga semua interaksi gaya dapat dihitung pada waktu yang sama dan setiap titik dapat disesuaikan dalam peta 2d (atau dimensi yang lebih rendah).
Apakah ada versi t-sne yang secara efisien dapat menangani data streaming? Jadi jika pengamatan saya tiba satu per satu, itu akan menemukan lokasi terbaik di peta 2d untuk menempatkan pengamatan baru, atau terus memperbarui semua titik pada peta 2d untuk memperhitungkan pengamatan baru.
Apakah ini masuk akal atau tidak bertentangan dengan pengaturan t-sne.
Jawaban:
Saya memiliki pertanyaan yang persis sama dan mempostingnya di video YouTube dari kuliah CS231n yang diberikan oleh Andrej Karpathy beberapa minggu yang lalu. Berikut adalah pertanyaan yang saya posting diikuti oleh tanggapan Andrej:
https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx
Q:
SEBUAH:
sumber
Saat berhadapan dengan data streaming, Anda mungkin tidak ingin / perlu menyematkan semua poin dalam sejarah dalam satu peta t-SNE. Sebagai alternatif, Anda dapat melakukan penyematan online dengan mengikuti langkah-langkah sederhana ini:
pilih jendela waktu durasi T, cukup lama sehingga setiap pola yang diinginkan muncul setidaknya beberapa kali dalam durasi jendela.
gulir jendela saat data mengalir, dengan langkah-waktu dt jauh lebih kecil dari T. Untuk setiap posisi jendela, hitung t-SNE penyisipan titik data di jendela waktu.
benih setiap embedding dengan hasil yang sebelumnya. Dalam t-SNE, kita perlu memilih koordinat awal dari titik data dalam ruang dimensi rendah. Dalam kasus kami, karena kami memilih dt jauh lebih kecil dari T, dua pernikahan berturut-turut berbagi sebagian besar poin data mereka. Untuk semua titik data yang dibagikan, cocok dengan koordinat awal mereka di embedding saat ini dengan koordinat akhir mereka di embedding sebelumnya . Langkah ini akan memastikan bahwa pola serupa memiliki representasi yang konsisten di seluruh embeddings yang berurutan. (dalam implementasi sklearn dengan python, parameter seed adalah "init". Secara default, implementasi sklearn menetapkan posisi awal titik secara acak)
Catatan 1: Penting bahwa pola-pola yang menarik muncul setidaknya sekali dalam jendela waktu tertentu, sehingga memori representasi tidak hilang ketika jendela meluncur melalui dataset. Memang, t-SNE biasanya tidak konvergen ke solusi unik tetapi hanya ke minimum lokal, jadi jika memori hilang, pola yang sama mungkin diwakili dengan cara yang sangat berbeda dalam dua contoh embedding.
Catatan 2: Metode ini sangat relevan ketika berhadapan dengan deret waktu non-stasioner, di mana orang ingin melacak pola yang berevolusi perlahan-lahan sepanjang waktu. Memang, setiap penyisipan di sini disoroti secara khusus ke jendela waktu kecil di mana ia dihitung, memastikan bahwa ia menangkap struktur lokal sementara dengan cara terbaik (berlawanan dengan penyematan penuh seluruh dataset non-stasioner).
Catatan 3: Dalam metode ini, embedding berturut-turut tidak dapat diparalelkan, karena seseorang membutuhkan hasil dari embedding sebelumnya untuk menabur yang berikutnya. Namun, karena seed (yaitu koordinat awal dari poin) dipilih dengan baik untuk sebagian besar poin (semua poin yang dibagi antara embeddings berturut-turut), embedding biasanya menyatu sangat cepat, dalam beberapa iterasi saja.
Untuk contoh penerapan metode ini ke deret waktu non-stasioner, lihat artikel ini ( ICLR 2016, Mempelajari representasi stabil dalam dunia yang berubah dengan t-SNE online: bukti konsep dalam burung penyanyi ), di mana ia berhasil diterapkan untuk melacak munculnya suku kata di seluruh pengembangan di burung penyanyi.
sumber
Ada varian yang baru-baru ini diterbitkan, disebut A-tSNE, yang mendukung secara dinamis menambahkan data baru dan memurnikan cluster baik berdasarkan bidang minat atau dengan input pengguna. Makalah yang ditautkan di bawah ini memiliki beberapa contoh bagus tentang ini:
Kutipan: arXiv: 1512.01655
sumber
Perkiraan Barnes-Hut membuat t-SNE sangat dapat diskalakan (setidaknya, Anda dapat menggunakannya dengan 100.000 baris, saya mencobanya). Anda dapat memanggilnya dari R: Rtsne
sumber
Perkiraan Barnes-Hut sekarang menjadi metode default di scikit-learn pada versi 0.17.0:
sumber