Có gì sai với t-SNE so với PCA khi giảm kích thước bằng R?


27

Tôi có một ma trận gồm 336x256 số dấu phẩy động (336 bộ gen vi khuẩn (cột) x 256 tần số tetranucleotide được chuẩn hóa (hàng), ví dụ: mỗi cột thêm tối đa 1).

Tôi nhận được kết quả tốt khi tôi chạy phân tích của mình bằng phân tích thành phần nguyên tắc. Đầu tiên tôi tính toán cụm kmeans trên dữ liệu, sau đó chạy PCA và tô màu các điểm dữ liệu dựa trên cụm kmeans ban đầu trong 2D và 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")

nhập mô tả hình ảnh ở đây

# 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)

nhập mô tả hình ảnh ở đây

Nhưng khi tôi cố gắng trao đổi PCA bằng phương pháp t-SNE, kết quả trông rất bất ngờ:

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")

nhập mô tả hình ảnh ở đây

plot3d(tsne_data, main="T-SNE", col = km$cluster,type="s",size=1,scale=0.2)

nhập mô tả hình ảnh ở đây

Câu hỏi của tôi ở đây là tại sao cụm kmeans lại khác với những gì t-SNE tính toán. Tôi đã mong đợi một sự phân tách thậm chí tốt hơn giữa các cụm so với những gì PCA làm nhưng nó có vẻ gần như ngẫu nhiên đối với tôi. Bạn có biết tại sao không? Tôi có thiếu một bước mở rộng hoặc một số loại chuẩn hóa?


4
Xin lưu ý rằng với PCA cũng vậy, bạn thường sẽ không nhận được kết quả "tốt" như bạn mong muốn nhận được. Phân cụm trên nhiều tính năng và sau đó chiếu các cụm trong không gian con của chỉ một số PC đầu tiên cũng có thể hiển thị hình ảnh giống như bạn thu được ở đây cho t-SNE, - trừ khi các PCS đó lấy gần như tất cả các biến đổi. Bạn đã so sánh - phần nào của tính biến đổi được ghi lại bởi 3 PC đầu tiên và 3 kích thước SNE đầu tiên của bạn?
ttnphns

2
Quan trọng hơn, bạn đã thử lặp đi lặp lại nhiều hơn?
jubo

2
Tôi đã chơi với các lần lặp lên đến 2000 và cũng đã chơi với nhiều cài đặt lúng túng khác nhau, nhưng chưa bao giờ thấy một cái gì đó thậm chí gần với hiệu suất mà PCA thể hiện.
Loddi

1
Bạn đã thử điều chỉnh sự bối rối?

1
tSNE có một sự bối rối tối ưu về mặt lý thuyết giúp giảm thiểu sự phân kỳ KL giữa dữ liệu của bạn trong các kích thước ban đầu và dự kiến ​​của nó. Bạn đã thử lần đầu tiên thực hiện tìm kiếm lưới cho sự bối rối chưa? Ví dụ: 10,20,30,40, v.v.
Alex R.

Câu trả lời:


10

Bạn phải hiểu những gì TSNElàm trước khi bạn sử dụng nó.

Nó bắt đầu bằng cách xây dựng một đồ thị tân thời giữa các vectơ đặc trưng dựa trên khoảng cách.

Biểu đồ kết nối một nút (vectơ đặc trưng) với các nnút gần nhất của nó (về khoảng cách trong không gian tính năng). Đây nđược gọi là perplexitytham số.

Mục đích của việc xây dựng biểu đồ này bắt nguồn từ cách lấy mẫu mà TSNE dựa vào để xây dựng đại diện mới cho các vectơ đặc trưng của bạn.

Trình tự xây dựng mô hình TSNE được tạo bằng random walkbiểu đồ tính năng TSNE của bạn.

Theo kinh nghiệm của tôi ... một số vấn đề của tôi xuất phát từ lý do về cách biểu diễn tính năng ảnh hưởng đến việc xây dựng biểu đồ này. Tôi cũng chơi xung quanh với perplexitytham số, vì nó có ảnh hưởng đến việc lấy mẫu của tôi tập trung như thế nào.


9

Thật khó để so sánh các phương pháp này.

PCA là tham số miễn phí. Đưa ra dữ liệu, bạn chỉ cần nhìn vào các thành phần chính.

Mặt khác, t-SNE dựa vào các tham số nghiêm trọng: sự bối rối, cường điệu sớm, tốc độ học tập, số lần lặp - mặc dù các giá trị mặc định thường cung cấp kết quả tốt.

Vì vậy, bạn không thể so sánh chúng, bạn phải so sánh PCA với kết quả tốt nhất bạn có thể đạt được với t-SNE (hoặc kết quả tốt nhất bạn đạt được qua vài lần thử t-SNE). Mặt khác, nó sẽ tương đương với câu hỏi "tại sao mô hình tuyến tính của tôi hoạt động tốt hơn mô hình tăng cường độ dốc (không điều chỉnh) của tôi?".


3

Tôi đã chạy t-sne trên một tập dữ liệu để thay thế PCA và (mặc dù lỗi mà Rum Wei nhận thấy) có kết quả tốt hơn. Trong trường hợp ứng dụng của tôi, pca thô hoạt động tốt trong khi t-sne thô cho tôi kết quả tìm kiếm ngẫu nhiên. Đó là do bước chia tỷ lệ / định tâm được bao gồm trong pca (theo mặc định trong hầu hết các gói) nhưng không được sử dụng trong t-sne.
Điểm của tôi là các khu vực và khoảng cách giữa chúng có ý nghĩa rất nhỏ mà không có tỷ lệ trước đó, nó đưa tôi từ "tìm kiếm ngẫu nhiên" đến "có ý nghĩa".

Như RUser4512 đã nói, bạn cũng có thể muốn kiểm tra các tham số của mình. Trên trang web của mình , tác giả khuyến nghị mức độ lúng túng trong khoảng từ 5 đến 50 (bạn có vẻ khá nhỏ), anh ta cũng cảnh báo rằng một sự lúng túng quá lớn sẽ mang đến cho bạn một phạm vi điểm gần như đồng nhất (điều này rất tốt để biết).

Distill có một bài viết rất hay với một số hình ảnh tương tác thực sự giúp hiểu được tác động của các tham số.


0

Một sự khác biệt quan trọng giữa các phương pháp như PCA và SVD với tSNE là tSNE đang sử dụng thang đo phi tuyến tính. Điều này thường làm cho các lô được cân bằng trực quan hơn nhưng hãy cẩn thận diễn giải chúng theo cách tương tự như với PCA. Sự khác biệt này có thể chiếm sự khác biệt giữa các lô được hiển thị ở trên.

Xem bài viết sau để biết thêm chi tiết về diễn giải thang đo phi tuyến tính của tSNE: https://distill.pub/2016/misread-tsne/ (Wattenberg, et al., "Cách sử dụng hiệu quả t-SNE", Chắt lọc, 2016. http://doi.org/10.23915/distill.00002 )

Không có gì ngạc nhiên khi dữ liệu tSNE sẽ trộn lẫn các "cụm" vì chúng không khác biệt trong dữ liệu PCA. Một số điểm trong cụm 2 và 4 ở xa trung tâm cụm hơn là sự khác biệt giữa các cụm chẳng hạn. Bạn sẽ nhận được kết quả phân cụm rất khác nhau với một tham số k khác nhau. Trừ khi bạn có một lý do sinh học cụ thể để sử dụng 5 cụm, tôi sẽ khuyên bạn nên sử dụng phương pháp phân cụm theo phân cấp dựa trên biểu đồ hoặc không giám sát.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.