Saya memiliki matriks 336x256 angka titik apung (336 genom bakteri (kolom) x 256 frekuensi tetranukleotida yang dinormalisasi (baris), misalnya setiap kolom menambahkan hingga 1).
Saya mendapatkan hasil yang bagus ketika saya menjalankan analisis saya menggunakan analisis komponen utama. Pertama-tama saya menghitung kluster kmeans pada data, kemudian menjalankan PCA dan mewarnai titik data berdasarkan kluster kmeans awal dalam 2D dan 3D:
library(tsne)
library(rgl)
library(FactoMineR)
library(vegan)
# read input data
mydata <-t(read.csv("freq.out", header = T, stringsAsFactors = F, sep = "\t", row.names = 1))
# Kmeans Cluster with 5 centers and iterations =10000
km <- kmeans(mydata,5,10000)
# run principle component analysis
pc<-prcomp(mydata)
# plot dots
plot(pc$x[,1], pc$x[,2],col=km$cluster,pch=16)
# plot spiderweb and connect outliners with dotted line
pc<-cbind(pc$x[,1], pc$x[,2])
ordispider(pc, factor(km$cluster), label = TRUE)
ordihull(pc, factor(km$cluster), lty = "dotted")
# plot the third dimension
pc3d<-cbind(pc$x[,1], pc$x[,2], pc$x[,3])
plot3d(pc3d, col = km$cluster,type="s",size=1,scale=0.2)
Tetapi ketika saya mencoba menukar PCA dengan metode t-SNE, hasilnya terlihat sangat tidak terduga:
tsne_data <- tsne(mydata, k=3, max_iter=500, epoch=500)
plot(tsne_data[,1], tsne_data[,2], col=km$cluster, pch=16)
ordispider(tsne_data, factor(km$cluster), label = TRUE)
ordihull(tsne_data, factor(km$cluster), lty = "dotted")
plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)
Pertanyaan saya di sini adalah mengapa pengelompokan kmeans sangat berbeda dari yang dihitung oleh t-SNE. Saya akan mengharapkan pemisahan yang lebih baik antara cluster daripada apa yang dilakukan PCA tetapi tampak hampir acak bagi saya. Apakah Anda tahu mengapa ini terjadi? Apakah saya melewatkan langkah penskalaan atau semacam normalisasi?
Jawaban:
Anda harus memahami apa yang
TSNE
dilakukan sebelum menggunakannya.Dimulai dengan membuat grafik lingkungan antara vektor fitur berdasarkan jarak.
Grafik menghubungkan sebuah simpul (vektor fitur) ke
n
simpul terdekatnya (dalam hal jarak dalam ruang fitur). Inin
disebutperplexity
parameter.Tujuan pembuatan grafik ini berakar pada jenis pengambilan sampel yang diandalkan TSNE untuk membangun representasi baru vektor-vektor fitur Anda.
Urutan untuk pembuatan model TSNE dibuat menggunakan
random walk
grafik fitur TSNE Anda.Dalam pengalaman saya ... beberapa masalah saya berasal dari alasan tentang bagaimana representasi fitur mempengaruhi pembangunan grafik ini. Saya juga bermain-main dengan
perplexity
parameter, karena memiliki efek pada seberapa fokus pengambilan sampel saya.sumber
Sulit untuk membandingkan pendekatan-pendekatan ini.
PCA adalah parameter bebas. Mengingat data, Anda hanya perlu melihat komponen utama.
Di sisi lain, t-SNE bergantung pada parameter yang parah: kebingungan, melebih-lebihkan awal, tingkat pembelajaran, jumlah iterasi - meskipun nilai default biasanya memberikan hasil yang baik.
Jadi Anda tidak bisa membandingkannya, Anda harus membandingkan PCA dengan hasil terbaik yang dapat Anda capai dengan t-SNE (atau hasil terbaik yang Anda raih dari beberapa percobaan t-SNE). Jika tidak, akan sama dengan bertanya "mengapa model linear saya berkinerja lebih baik daripada model meningkatkan gradien saya (tidak disetel)?".
sumber
Saya berlari t-sne pada dataset untuk menggantikan PCA dan (meskipun bug yang diperhatikan Rum Wei) mendapat hasil yang lebih baik. Dalam kasus aplikasi saya, pca kasar bekerja dengan baik sementara t-sne kasar memberi saya hasil yang terlihat acak. Itu karena langkah penskalaan / pemusatan yang termasuk dalam pca (secara default di sebagian besar paket) tetapi tidak digunakan dalam t-sne.
Poin saya adalah area dan jarak di antara mereka tidak masuk akal tanpa penskalaan sebelumnya, itu membuat saya dari "tampak acak" menjadi "masuk akal".
Seperti yang dikatakan RUser4512, Anda mungkin juga ingin menguji parameter Anda. Di situs webnya , penulis merekomendasikan kebingungan antara 5 dan 50 (milik Anda tampaknya sangat kecil), ia juga memperingatkan bahwa kebingungan yang terlalu besar akan memberi Anda lingkup poin yang hampir homogen (yang baik untuk diketahui).
Distill memiliki artikel yang sangat bagus dengan beberapa visualisasi interaktif yang sangat membantu untuk memahami dampak dari parameter.
sumber
Perbedaan penting antara metode seperti PCA dan SVD dengan tSNE adalah bahwa tSNE menggunakan skala non-linear. Ini sering membuat plot yang lebih seimbang secara visual tetapi hati-hati menafsirkannya dengan cara yang sama seperti yang Anda lakukan untuk PCA. Perbedaan ini kemungkinan merupakan perbedaan antara plot yang ditunjukkan di atas.
Lihat artikel berikut untuk detail lebih lanjut tentang menafsirkan skala non-linear dari tSNE: https://distill.pub/2016/misread-tsne/ (Wattenberg, et al., "Cara Menggunakan t-SNE Secara Efektif", Distill, 2016. http://doi.org/10.23915/distill.00002 )
Bukan tidak terduga bahwa data tSNE akan mencampur "cluster" karena mereka tidak begitu berbeda dalam data PCA. Beberapa titik di dalam cluster 2 dan 4 lebih jauh dari cluster centroid daripada perbedaan antara cluster misalnya. Anda akan mendapatkan hasil pengelompokan yang sangat berbeda dengan parameter-k yang berbeda. Kecuali jika Anda memiliki alasan biologis spesifik untuk menggunakan 5 klaster, saya akan merekomendasikan menggunakan pendekatan hierarki hirarki berbasis grafik atau tidak diawasi.
sumber