Veri akışı için t-SNE'nin herhangi bir sürümü var mı?


19

Benim anlayış , t-SNE ve Barnes-Hut yaklaşım tüm veri noktaları tüm kuvvet etkileşimleri aynı anda hesaplanabilir ve her nokta 2d ayarlanabilir (veya boyutsal alt) ilk böylece gerekli olmasıdır.

Veri akışı ile etkin bir şekilde başa çıkabilen t-sne'nin herhangi bir sürümü var mı? Dolayısıyla, gözlemlerim birer birer geliyorsa, yeni gözlemi yerleştirmek için 2d haritasındaki en iyi yeri bulacak veya yeni gözlemi hesaba katmak için 2d haritasındaki tüm noktaları sürekli olarak güncelleyecektir.

Bu mantıklı mıdır yoksa t-sne kurulumuna aykırı mıdır?


Barnes-Hut yaklaşımı t-SNE'yi son derece ölçeklenebilir hale getirir (en azından 100.000 satırla kullanabilirsiniz, denedim). Bunu R'den arayabilirsiniz: cran.r-project.org/web/packages/Rtsne/index.html
RUser4512

Hey teşekkürler! Cevabınızı bunun cevap kısmına koyarsanız, cevabınıza oy vermekten mutluluk duyarız.
Tom

3
Sinir ağlarıyla uygulanan parametrik bir versiyon için buraya bakınız. lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
eyaler

Yanıtlar:


15

Aynı soruyu sordum ve birkaç hafta önce Andrej Karpathy tarafından verilen bir CS231n dersinin YouTube videosunda yayınladım. İşte gönderdiğim soru ve ardından Andrej'in yanıtı:

https://www.youtube.com/watch?v=ta5fdaqDT3M&lc=z12ji3arguzwgxdm422gxnf54xaluzhcx

S:

T-SNE'nin düşük boyutlu özellik alanını oluşturmak için bir dizi görüntüye (veya daha genel olarak veriye) ihtiyacı var mı? PCA ile bir grup veri üzerinde düşük boyutlu bir özellik alanı oluşturabilir ve daha sonra "yeniden eğitmek" zorunda kalmadan yeni veri noktalarını aynı alana yansıtabilirsiniz. Bu t-SNE için doğru mu?

Soruyorum çünkü scikit-learn'un t-SNE'nin manifold sınıfının bir parçası olduğunu fark ettim, ancak bu modülün PCA'nın yaptığı gibi bir transform () yöntemi yok. Yani, en azından, sklearn'de, bunun mümkün olmadığı anlaşılıyor.

Sorum buna bağlı. Görselleştirmeyi sürekli olarak yeni görüntülerle güncellemek istediğiniz bir akış veya çevrimiçi durumda t-SNE'yi nasıl uygularsınız? Muhtemelen, her yeni görüntü için algoritmayı tüm toplu iş üzerine uygulamak istemez.

A:

+ Evan Zamir evet bu t-SNE ile mümkün, ancak düzenli t-SNE uygulamaları ile kutudan çıkmıyor olabilir. Normalde her noktanın konumu optimizasyonda bir parametredir, ancak aynı zamanda yüksek D -> düşük D'den (örn. Sinir ağı) bir eşleme oluşturabilir ve konumlar arasında geri dönüş yapabilirsiniz. Daha sonra gömme işlevi ile sonuçlanır ve yeni noktalar yansıtabilirsiniz. Prensip olarak bunu önleyen hiçbir şey yoktur, ancak bazı uygulamalar daha az sıklıkta kullanılan bir durum olduğu için bunu desteklemeyebilir.


11

Veri akışı ile uğraşırken, tarihin tüm noktalarını tek bir t-SNE haritasına yerleştirmek istemeyebilirsiniz / ihtiyacınız olmayabilir. Alternatif olarak, aşağıdaki basit adımları izleyerek çevrimiçi bir yerleştirme gerçekleştirebilirsiniz :

  1. İlgilenilen her bir modelin pencere süresinde en az birkaç kez görünmesini sağlayacak kadar uzun bir T zaman aralığı seçin.

  2. veri akışı sırasında T'den çok daha küçük bir zaman adımı dt ile pencereyi kaydırın. Pencerenin her konumu için, veri penceresinin zaman penceresindeki t-SNE katışmasını hesaplayın.

  3. her biri bir öncekinin sonucu ile gömme tohum. T-SNE'de, düşük boyutlu uzayda veri noktalarının başlangıç ​​koordinatlarını seçmek gerekir. Bizim durumumuzda, d'den T'den çok daha küçük seçtiğimiz için, birbirini takip eden iki düğün veri noktalarının çoğunu paylaşır. Paylaşılan tüm veri noktaları için, mevcut katıştırmadaki ilk koordinatlarını önceki katıştırmadaki son koordinatlarıyla eşleştirin . Bu adım, benzer desenlerin birbirini takip eden düğünler arasında tutarlı bir temsile sahip olmasını sağlayacaktır. ( python'daki sklearn uygulamasında seed parametresi "init" dir. Varsayılan olarak sklearn uygulaması noktaların başlangıç ​​konumunu rastgele ayarlar)

Not 1: İlgilenilen desenlerin herhangi bir zaman penceresinde en az bir kez görünmesi önemlidir, böylece pencere veri kümesinden geçerken gösterimin belleği kaybolmaz. Gerçekten de, t-SNE tipik olarak benzersiz bir çözüme değil, sadece yerel bir minimuma yakınsar, bu nedenle bellek kaybedilirse, benzer bir örüntü, gömme işleminin iki örneğinde çok farklı şekillerde temsil edilebilir.

Not 2: Bu yöntem, zaman içinde yavaş yavaş gelişen paternleri izlemek isteyen durağan olmayan zaman serileri ile uğraşırken özellikle önemlidir. Gerçekten de, her gömme burada özellikle hesaplandığı küçük zaman penceresine taşınır ve geçici olarak yerel yapıyı en iyi şekilde yakalamasını sağlar (aksine sabit olmayan tüm veri kümesinin tamamen gömülmesi için).

Not 3: Bu yöntemde birbirini izleyen düğünler paralel hale getirilemez, çünkü biri diğerini tohumlamak için önceki yerleştirmenin sonucuna ihtiyaç duyar. Bununla birlikte, tohum (yani noktaların başlangıç ​​koordinatları) çoğu nokta için (başarılı düğünler arasındaki tüm paylaşılan noktalar) iyi seçildiğinden, gömme tipik olarak çok hızlı bir şekilde, sadece birkaç tekrarlamada birleşir.

Bu yöntemin sabit olmayan zaman serilerine uygulanmasına ilişkin bir örnek için, başarılı bir şekilde uygulandığı bu makaleye ( ICLR 2016, Çevrimiçi t-SNE ile değişen bir dünyada istikrarlı temsillerin öğrenilmesi: şarkı kuşundaki kavramın kanıtı ) bakın. şarkı kuşunun gelişiminde hecelerin ortaya çıkışını izlemek için.


2
Topluluğa hoş geldiniz. Kendine intihal soğuktur. Burada ilk yazınıza atıfta bulunuyorum . Elbette, aynı mantığı birden fazla cevap için kullanabiliriz, muhtemelen bir veya iki cümleyi kopyalayıp yapıştırabilir veya sadece önceki cevaplara doğrudan bağlantı verebiliriz. Bununla birlikte, söylenenler, değiştirilmiş ilk cümle ile önceki cevapların birebir kopyasını yayınlarınıza indirmeyin. CV içeriğinin kalitesini düşürür ve sizin tarafınızdan zayıf skolastik sportmenlik gösterir.
usεr11852 diyor Reinstate Monic

5
@ usεr11852 Sorun diğer iş parçacığı bunun bir kopyası olduğu için oluşturuldu. Bu yüzden diğerini kapattım, bununla birleştirdim ve gereksiz cevabı sildim. Genel olarak Stéphane, her iki konuda da aynı cevabı yayınlamak için ilham aldığınızı hissettiğinizde, bunları birleştirmek için lütfen bunlardan birini kopya olarak işaretleyin.
whuber

2
@ usεr11852 Tamam, yinelenen cevap için özür dilerim, yeni bir katılımcıyım, bu yüzden henüz en iyi uygulamaları bilmiyorum.
Stéphane Deny

1
@whuber Soruları birleştirdiğiniz ve dikkatinizi çektiğiniz için teşekkür ederiz!
Stéphane Deny

1
Sonuç olarak 2 yukarı oy kaybettiniz. Bu talihsizlik. +1 :) CV'ye hoş geldiniz.
amip diyor Reinstate Monica

7

İlgi alanlarına veya kullanıcı girdilerine göre dinamik olarak yeni veriler eklemeyi ve kümeleri hassaslaştırmayı destekleyen A-tSNE adında yeni yayınlanan bir varyant var. Aşağıda verilen makalede bunun güzel örnekleri var:

Atıf: arXiv: 1512.01655

Aşamalı Görsel Analitik için Yaklaşık ve Kullanıcı Tarafından Yönlendirilebilir tSNE Nicola Pezzotti, Boudewijn PF Lelieveldt, Laurens van der Maaten, Thomas Höllt, Elmar Eisemann, Anna Vilanova

Özet:

Progressive Visual Analytics, görselleştirme ve ara sonuçlarla etkileşim yoluyla mevcut analitik tekniklerindeki etkileşimi geliştirmeyi amaçlamaktadır. Veri analizi için anahtar yöntemlerden biri, örneğin, etkin bir şekilde görselleştirilebilen ve analiz edilebilen 2D düğmeler üretmek için boyutsallık azaltmadır. t-Dağıtılmış Stokastik Komşu Gömme (tSNE), birkaç yüksek boyutlu verinin görüntülenmesi için çok uygun bir tekniktir. tSNE anlamlı ara sonuçlar oluşturabilir, ancak Progressive Visual Analytics'teki uygulamasını kısıtlayan yavaş bir başlatmadan muzdariptir. Etkileşimli veri keşfi sağlamak için hız ve doğruluktan işlem yapan kontrol edilebilir bir tSNE yaklaşımı (A-tSNE) sunuyoruz. Gerçek zamanlı görselleştirme teknikleri sunuyoruz, yoğunluk derecesini incelemek için yoğunluk tabanlı bir çözüm ve bir Magic Lens dahil. Bu geri bildirimle, kullanıcı yerel iyileştirmelere karar verebilir ve analiz sırasında yaklaşıklık düzeyini yönlendirebilir. Tekniğimizi çeşitli veri kümeleriyle, gerçek dünya araştırma senaryosunda ve etkileşimli veri analizi için etkinliğini göstermek üzere yüksek boyutlu akışların gerçek zamanlı analizi için gösteririz.


Siteye hoş geldiniz. Soru-cevap şeklinde yüksek kaliteli istatistiki bilgilerin kalıcı bir havuzunu oluşturmaya çalışıyoruz. Bu nedenle, linkrot nedeniyle sadece bağlantı cevaplarına karşı dikkatliyiz. Öldüğünde, bağlantıya tam bir alıntı ve bilgi özeti gönderebilir misiniz?
gung - Monica'yı eski

6

Barnes-Hut yaklaşımı t-SNE'yi son derece ölçeklenebilir hale getirir (en azından 100.000 satırla kullanabilirsiniz, denedim). R: Rtsne'den arayabilirsiniz.

O(nlog(n))O(n2)


1
250K yoğun 1K hatlarla kullandım - aslında oldukça iyiydi, ama hafıza tarafından bağlandı.
Vladimir Chupakhin

2

Barnes-Hut yaklaşımı artık 0.17.0 sürümünden itibaren scikit-learn'daki varsayılan yöntemdir:

Degrade hesaplama algoritması varsayılan olarak O (NlogN) zamanında çalışan Barnes-Hut yaklaşımını kullanır. method = 'exact', O (N ^ 2) sürede daha yavaş fakat kesin algoritmada çalışır. En yakın komşu hatalarının% 3'ten daha iyi olması gerektiğinde kesin algoritma kullanılmalıdır. Bununla birlikte, kesin yöntem milyonlarca örneğe ölçeklenemez. 0.17 sürümündeki yenilikler: Barnes-Hut üzerinden yaklaşık optimizasyon yöntemi.


Bu soruya değinmiyor. BH, daha hızlı olmasına rağmen akışı desteklemez. Belki de bu cevaba yorum yapmak istedin .
merv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.