Hayır, durumun böyle olması gerekli değildir, ancak bu, kıvrımlı bir şekilde T-SNE'nin amacıdır.
Cevabın etine girmeden önce, hem matematiksel hem de sezgisel olarak bazı temel tanımlara bakalım.
En Yakın Komşular : Bir metrik alan düşününR,d ve bir dizi vektör X1, . . . ,Xn∈R,d, yeni bir vektör verildi x ∈R,d, noktaları bulmak istiyoruz ki | |X1- x | | ≤ . . . ≤ | |Xn- x | |. Sezgisel olarak, uygun bir norm tanımı kullanan mesafelerin minimumudur.R,d.
Şimdi boyutsallık azaltımı uygularken en yakın komşuların gerçekten önemli olup olmadığına geliyor. Genellikle cevaplarımda bir şeyi matematik, kod ve sezgisel olarak rasyonelleştirmeyi amaçlıyorum. Önce şeylerin sezgisel yönünü ele alalım. Mesafe olan bir noktanız varsadbaşka bir noktadan, t-sne algoritması konusundaki anlayışımızdan, daha yüksek boyutlara geçiş yaparken bu mesafenin korunduğunu biliyoruz. Bir nokta daha varsayalımy en yakın komşusu x bazı boyutlarda d. Tanım gereği,d ve d+ k. Yani, sezgimiz var ki, mesafe farklı boyutlarda korunur, ya da en azından amaçladığımız şey budur. Bazı matematikle haklı göstermeye çalışalım.
Bu cevapta, ayrıntılı olmasa da, t-sne'de yer alan matematik hakkında konuşuyorum ( t-SNE: Neden eşit veri değerleri görsel olarak yakın değil? ). Burada matematiğin temel olarak, noktaların dağılımının üstel olduğu varsayılarak, iki noktanın orijinal uzayda olduğu gibi, yansıtılan bir alanda yakın kalma olasılığını en üst düzeye çıkarmaktır. Yani, bu denkleme bakarakpj | ben=e x p (- | |xj-xben||22σ2)Σk ≠ ie x p (- | |xj-xben||22σ2). Olasılığın iki nokta arasındaki mesafeye bağlı olduğuna dikkat edin, bu yüzden ne kadar uzak olursa, daha düşük boyutlara yansıtıldıkça o kadar uzaklaşırlar. Eğer birbirlerinden uzaklarsaR,k, öngörülen boyutta yakın olmamaları için iyi bir şans var. Şimdi, noktaların neden "yakın" kalması gerektiğine dair matematiksel bir gerekçemiz var. Fakat yine de, bu üstel bir dağılım olduğu için, eğer bu noktalar önemli ölçüde birbirinden ayrıysa, En Yakın Komşular mülkünün korunduğuna dair bir garanti yoktur, ancak bu amaçtır.
Son olarak, bu konsepti de gösteren düzgün bir kodlama örneği.
from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
X = [[0],[1],[2],[3],[4],[5],[6],[7],[8],[9]]
y = [0,1,2,3,4,5,6,7,8,9]
neighs = KNeighborsClassifier(n_neighbors=3)
neighs.fit(X, y)
X_embedded = TSNE(n_components=1).fit_transform(X)
neighs_tsne = KNeighborsClassifier(n_neighbors=3)
neighs_tsne.fit(X_embedded, y)
print(neighs.predict([[1.1]]))
>>>[0]
print(neighs_tsne.predict([[1.1]]))
>>>[0]
Bu çok naif bir örnek olmasına ve karmaşıklığı yansıtmasa da, bazı basit örnekler için deney yoluyla çalışır.
DÜZENLEME: Ayrıca, sorunun kendisiyle ilgili bazı noktalar ekleyerek, durumun böyle olması gerekli değildir, ancak, matematik yoluyla rasyonalize etmek, somut bir sonucunuz olmadığını kanıtlar (kesin evet veya hayır) .
Umarım bu TSNE ile ilgili bazı endişelerinizi giderir.