R을 사용한 치수 축소에서 t-SNE 대 PCA의 문제점은 무엇입니까?


27

336x256 부동 소수점 수 (336 박테리아 게놈 (열) x 256 정규화 테트라 뉴클레오티드 빈도 (행)의 행렬을 가지고 있습니다 (예 : 모든 열은 1을 더합니다).

원리 성분 분석을 사용하여 분석을 실행할 때 좋은 결과를 얻습니다. 먼저 데이터에서 kmeans 클러스터를 계산 한 다음 PCA를 실행하고 2D 및 3D의 초기 kmeans 클러스터링을 기반으로 데이터 포인트를 채색합니다.

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를 사용하면 종종 "좋은"결과를 얻지 못할 수 있습니다. 많은 기능을 클러스터링 한 다음 첫 PC 몇 대의 서브 스페이스에 클러스터를 투영하면 PCS가 거의 모든 변동성을 갖지 않는 한 t-SNE에서 얻은 것과 같은 그림이 표시 될 수 있습니다. 처음 3 대의 PC와 처음 3 개의 t-SNE- 차원에서 캡처 한 변동성의 일부를 비교 했습니까?
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 walkTSNE 기능 그래프에서를 사용하여 생성 됩니다.

내 경험상 ... 몇 가지 문제는 피처 표현이이 그래프 작성에 어떤 영향을 미치는지에 대한 추론에서 나왔습니다. 또한 perplexity매개 변수 를 사용하여 샘플링의 초점을 맞추는 데 영향을 미칩니다.


9

이러한 접근 방식을 비교하기는 어렵습니다.

PCA는 매개 변수가 없습니다. 데이터가 주어지면 주요 구성 요소 만 살펴보십시오.

반면, t-SNE는 난관, 조기 과장, 학습 속도, 반복 횟수 등의 심각한 매개 변수에 의존하지만 기본값은 일반적으로 좋은 결과를 제공합니다.

따라서 PCA를 t-SNE로 달성 할 수있는 최상의 결과 (또는 여러 번의 t-SNE 시도를 통해 달성 한 최상의 결과)와 비교해야합니다. 그렇지 않으면, "왜 선형 모델이 (조정되지 않은) 그래디언트 부스팅 모델보다 성능이 좋습니까?"


3

PCA를 대체하기 위해 데이터 세트에서 t-sne을 실행했으며 (럼 웨이가 발견 한 버그에도 불구하고) 더 나은 결과를 얻었습니다. 내 응용 프로그램의 경우 거친 pca는 잘 작동하는 반면 거친 t-sne은 무작위로 보이는 결과를 얻었습니다. 이는 pca에 포함 된 스케일링 / 센터링 단계 (기본적으로 대부분의 패키지에서)이지만 t-sne에는 사용되지 않기 때문입니다.
내 요점은 영역이었고 그 사이의 거리는 이전의 스케일링없이 거의 의미가 없었습니다.

RUser4512가 말했듯이 매개 변수를 테스트 할 수도 있습니다. 그의 웹 사이트 에서 저자는 5에서 50 사이의 난처함을 추천합니다 (당신은 매우 작게 보입니다). 또한 너무 큰 당황은 당신에게 거의 균질 한 점의 영역을 알 것이라고 경고합니다 (알아 두십시오).

Distill에는 매개 변수의 영향을 이해하는 데 도움이되는 대화 형 시각화 기능 이있는 매우 유용한 기사 가 있습니다.


0

tSNE를 사용한 PCA 및 SVD와 같은 방법의 중요한 차이점은 tSNE가 비선형 스케일을 사용한다는 것입니다. 이것은 종종 시각적으로 균형이 잡힌 플롯을 만들지 만 PCA와 같은 방식으로 조심스럽게 해석합니다. 이 차이는 위에 표시된 플롯 간의 차이를 설명합니다.

tSNE의 비선형 스케일 해석에 대한 자세한 내용은 다음 기사를 참조하십시오. https://distill.pub/2016/misread-tsne/ (Wattenberg, et al., "t-SNE를 효과적으로 사용하는 방법", Distill, 2016. http://doi.org/10.23915/distill.00002 )

tSNE 데이터가 PCA 데이터와 다르지 않기 때문에 "클러스터"를 혼합하는 것은 예상치 못한 일이 아닙니다. 예를 들어 군집 2와 군집 내의 일부 점은 군집 중심과의 차이보다 군집 중심에서 더 먼 거리에 있습니다. k- 매개 변수가 다른 클러스터링 결과는 매우 다릅니다. 5 개의 군집을 사용하기위한 특정한 생물학적 근거가 없다면 그래프 기반 또는 감독되지 않은 계층 적 군집 접근법을 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.