เกิดอะไรขึ้นกับ t-SNE กับ PCA สำหรับการลดขนาดโดยใช้ R


27

ฉันมีเมทริกซ์ของจำนวนจุดลอยตัว 336x256 (336 จีโนมแบคทีเรีย (คอลัมน์) x 256 ความถี่ tetranucleotide ปกติ (แถว) เช่นทุกคอลัมน์เพิ่มขึ้นถึง 1)

ฉันได้รับผลลัพธ์ที่ดีเมื่อฉันรันการวิเคราะห์โดยใช้การวิเคราะห์องค์ประกอบหลักการ ก่อนอื่นฉันคำนวณกลุ่ม kmeans ของข้อมูลจากนั้นเรียกใช้ PCA และทำให้จุดข้อมูลเป็นสีตามการจัดกลุ่ม kmeans เริ่มต้นใน 2D และ 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)

ป้อนคำอธิบายรูปภาพที่นี่

แต่เมื่อฉันพยายามสลับ PCA ด้วยวิธี t-SNE ผลลัพธ์ที่ได้ดูไม่คาดคิดมาก:

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)

ป้อนคำอธิบายรูปภาพที่นี่

คำถามของฉันนี่คือเหตุผลที่การจัดกลุ่ม kmeans แตกต่างจากที่คำนวณโดย t-SNE ฉันคาดว่าจะมีการแยกระหว่างกลุ่มได้ดีกว่าที่ PCA ทำ แต่มันดูสุ่มสำหรับฉัน คุณรู้ไหมว่าทำไมถึงเป็นเช่นนี้? ฉันไม่มีขั้นตอนการปรับสเกลหรือการปรับมาตรฐานบางอย่างหรือไม่


4
โปรดทราบว่าด้วย PCA คุณมักจะไม่ได้ผลลัพธ์ที่ "ดี" เหมือนที่คุณยินดีที่จะรับ การรวมกลุ่มกับคุณสมบัติหลายอย่างจากนั้นฉายกลุ่มในพื้นที่ย่อยของพีซีเพียงไม่กี่เครื่องแรกอาจแสดงภาพเหมือนที่คุณได้รับที่นี่สำหรับ t-SNE ยกเว้นว่าพีซีเหล่านั้นจะจับความแปรปรวนได้เกือบทั้งหมด คุณเปรียบเทียบ - พีซี 3 เครื่องแรกของคุณมีส่วนต่างใดบ้างและ 3 t-SNE-dimension แรกของคุณ
ttnphns

2
ยิ่งคุณลองทำซ้ำอีกหรือไม่
jubo

2
ฉันได้เล่นกับการทำซ้ำถึง 2000 และเล่นด้วยการตั้งค่าความสับสนต่าง ๆ แต่ไม่เคยเห็นบางสิ่งบางอย่างที่ใกล้เคียงกับประสิทธิภาพที่ PCA แสดง
Loddi

1
คุณลองปรับแต่งความฉงนสนเท่ห์หรือไม่?

1
tSNE มีความซับซ้อนทางทฤษฎีที่เหมาะสมซึ่งจะลดความแตกต่างของ KL ระหว่างข้อมูลของคุณในมิติข้อมูลดั้งเดิมและฉาย คุณเคยลองค้นหากริดเพื่อความงงงวยก่อนหรือไม่? เช่น 10,20,30,40 เป็นต้น
Alex R.

คำตอบ:


10

คุณต้องเข้าใจสิ่งที่TSNEทำก่อนที่จะใช้

มันเริ่มต้นด้วยการสร้างกราฟความเป็นเพื่อนบ้านระหว่างเวกเตอร์คุณลักษณะตามระยะทาง

กราฟเชื่อมต่อโหนด (คุณสมบัติเวกเตอร์) กับnโหนดที่ใกล้ที่สุด (ในแง่ของระยะทางในพื้นที่คุณลักษณะ) สิ่งนี้nเรียกว่าperplexityพารามิเตอร์

วัตถุประสงค์ของการสร้างกราฟนี้มีรากฐานมาจากการสุ่มตัวอย่าง TSNE อาศัยเพื่อสร้างการแสดงใหม่ของเวกเตอร์คุณลักษณะของคุณ

ลำดับสำหรับการสร้างแบบจำลอง TSNE นั้นสร้างขึ้นโดยใช้random walkกราฟคุณสมบัติ TSNE ของคุณ

จากประสบการณ์ของฉัน ... ปัญหาบางอย่างของฉันมาจากการให้เหตุผลว่าการแสดงคุณลักษณะมีผลต่อการสร้างกราฟนี้อย่างไร ฉันยังเล่นกับperplexityพารามิเตอร์เนื่องจากมันมีผลต่อวิธีการสุ่มตัวอย่างที่เน้นของฉัน


9

เป็นการยากที่จะเปรียบเทียบวิธีการเหล่านี้

PCA ไม่มีพารามิเตอร์ รับข้อมูลคุณต้องดูส่วนประกอบหลัก

ในทางกลับกัน t-SNE อาศัยพารามิเตอร์ที่รุนแรงเช่นความงุนงงการพูดเกินจริงอัตราการเรียนรู้จำนวนการทำซ้ำ - แม้ว่าค่าเริ่มต้นมักให้ผลลัพธ์ที่ดี

ดังนั้นคุณไม่สามารถเปรียบเทียบมันได้คุณต้องเปรียบเทียบ PCA กับผลลัพธ์ที่ดีที่สุดที่คุณสามารถทำได้ด้วย t-SNE (หรือผลลัพธ์ที่ดีที่สุดที่คุณประสบความสำเร็จในการลองใช้ t-SNE หลายครั้ง) มิฉะนั้นจะเทียบเท่ากับการถามว่า "เพราะเหตุใดโมเดลเชิงเส้นของฉันจึงทำงานได้ดีกว่าโมเดลการไล่ระดับสีไล่ระดับสีของฉัน (ไม่ปรับ)"


3

ฉันรันชุดข้อมูลเพื่อแทนที่ PCA และ (แม้จะมีข้อผิดพลาดที่ Rum Wei สังเกตเห็น) ก็ให้ผลลัพธ์ที่ดีกว่า ในกรณีที่ใช้งานของฉัน pca หยาบทำงานได้ดีในขณะที่หยาบ t-sne ให้ผลลัพธ์แบบสุ่ม มันเป็นเพราะขั้นตอนการปรับ / การจัดกึ่งกลางที่รวมอยู่ใน pca (โดยค่าเริ่มต้นในแพ็คเกจส่วนใหญ่) แต่ไม่ได้ใช้ใน t-sne
จุดของฉันคือพื้นที่และระยะห่างระหว่างพวกเขาทำให้รู้สึกเล็กน้อยโดยไม่มีการปรับสเกลก่อนหน้านี้ฉันได้รับจาก "การมองแบบสุ่ม" เป็น "ทำให้เข้าใจ"

ดังที่ RUser4512 กล่าวไว้คุณอาจต้องการทดสอบพารามิเตอร์ของคุณ ในเว็บไซต์ของเขาผู้เขียนแนะนำให้งุนงงระหว่าง 5 และ 50 (ดูเหมือนว่าคุณจะค่อนข้างเล็ก) เขายังเตือนว่าความงุนงงที่ยิ่งใหญ่เกินไปจะทำให้คุณมีจุดที่เป็นเนื้อเดียวกันเกือบทั้งหมด

Distill มีบทความที่ดีมากพร้อมการสร้างภาพข้อมูลเชิงโต้ตอบที่ช่วยให้เข้าใจถึงผลกระทบของพารามิเตอร์


0

ความแตกต่างที่สำคัญระหว่างวิธีการเช่น PCA และ SVD กับ tSNE คือ tSNE กำลังใช้สเกลที่ไม่ใช่เชิงเส้น สิ่งนี้มักจะทำเพื่อแปลงที่มีความสมดุลทางสายตามากขึ้น แต่ต้องระวังการตีความในลักษณะเดียวกันกับ PCA ความแตกต่างนี้น่าจะเป็นสาเหตุของความแตกต่างระหว่างแปลงที่แสดงด้านบน

ดูบทความต่อไปนี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการตีความมาตราส่วนที่ไม่ใช่เชิงเส้นของ tSNE: https://distill.pub/2016/misread-tsne/ (Wattenberg, et al. "วิธีการใช้ t-SNE อย่างมีประสิทธิภาพ", Distill, 2559. http://doi.org/10.23915/distill.00002 )

ไม่คาดคิดว่าข้อมูล tSNE จะรวมกันเป็น "กลุ่ม" เนื่องจากข้อมูลเหล่านี้ไม่แตกต่างกันในข้อมูล PCA บางจุดภายในกลุ่ม 2 และ 4 นั้นอยู่ห่างจากกระจุกดาว centroid มากกว่าความแตกต่างระหว่างกระจุกดาวนั้น คุณจะได้ผลลัพธ์การจัดกลุ่มที่แตกต่างกันมากด้วยพารามิเตอร์ k ที่แตกต่างกัน นอกจากว่าคุณมีเหตุผลทางชีววิทยาเฉพาะสำหรับการใช้ 5 กลุ่มผมขอแนะนำให้ใช้วิธีการจัดกลุ่มตามลำดับชั้นแบบกราฟหรือแบบไม่สำรองข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.