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の部分空間にクラスターを投影すると、t-SNEで得られたような画像が表示される場合があります。比較しましたか?最初の3台のPCと最初の3つのt-SNE次元によってキャプチャされる変動の部分はどれですか?
ttnphns 14年

2
もっと簡単に、あなたはより多くの反復を試みましたか?
ジュボ14年

2
私は2000までの反復で遊んでおり、さまざまな複雑な設定で遊んでいますが、PCAが示すパフォーマンスに近いものを見たことはありません。
ロディ14年

1
困惑を調整しようとしましたか?

1
tSNEには、元の次元と投影された次元のデータ間のKLの発散を最小限に抑える理論的な最適なパープレキシティがあります。困惑のグリッド検索を最初にやってみましたか?例:10,20,30,40など
アレックスR.

回答:


10

あなたTSNEはそれを使用する前に何をするかを理解する必要があります。

それは近所を作ることから始まります 、距離に基づいて特徴ベクトル間のグラフをします。

グラフは、ノード(フィーチャベクトル)をそのn最も近いノードに(フィーチャ空間の距離で)接続します。このnperplexityパラメーターと呼ばれます。

このグラフを作成する目的は、TSNEが特徴ベクトルの新しい表現を作成するために依存するサンプリングの種類に根ざしています。

TSNEモデル構築のシーケンスは、を使用して生成されます random walk、TSNEフィーチャグラフてれます。

私の経験では...いくつかの問題は、機能の表現がこのグラフの構築にどのように影響するかについての推論から生じました。また、このperplexityパラメーターを試してみます。これは、サンプリングの焦点に影響を与えるためです。


9

これらのアプローチを比較することは困難です。

PCAはパラメーターなしです。データが与えられたら、主成分を調べるだけです。

一方、t-SNEは深刻なパラメーターに依存しています:複雑さ、早期の誇張、学習率、反復回数-デフォルト値は通常良い結果をもたらします。

したがって、それらを単に比較することはできません。PCAをt-SNEで達成できる最良の結果(またはt-SNEの数回の試行で達成した最良の結果)と比較する必要があります。それ以外の場合、「線形モデルが(調整されていない)勾配ブースティングモデルよりもパフォーマンスが良い理由は?」


3

PCAを置き換えるためにデータセットでt-sneを実行し、(Rum Weiが気付いたバグにもかかわらず)より良い結果を得ました。私のアプリケーションの場合、rough pcaはうまく機能しましたが、rough t-sneはランダムな結果をもたらしました。これは、pcaに含まれるスケーリング/センタリング手順(ほとんどのパッケージではデフォルト)によるものでしたが、t-sneでは使用されませんでした。
私のポイントはエリアであり、それらの間の距離は事前のスケーリングなしではほとんど意味がありませんでした。

RUser4512が言ったように、パラメーターをテストすることもできます。彼のWebサイトでは、著者は5〜50の複雑さを推奨しています(非常に小さいようです)。

Distillには、パラメーターの影響を理解するのに役立つインタラクティブな視覚化を備えた非常に素晴らしい記事があります。


0

tSNEを使用したPCAとSVDのような方法の重要な違いは、tSNEが非線形スケールを使用していることです。これにより、視覚的にバランスの取れたプロットが作成されますが、PCAの場合と同じように注意深く解釈する必要があります。この違いは、上記のプロットの違いを説明している可能性があります。

tSNEの非リニアスケールの解釈についての詳細は、次の資料を参照してください:https://distill.pub/2016/misread-tsne/。(Wattenberg、ら、「どのように使用tSNEを効果的に」、蒸留します、 2016. http://doi.org/10.23915/distill.00002

tSNEデータが「クラスター」を混同することは、PCAデータではそれほど明確ではないため、予想外ではありません。クラスター2および4内のいくつかのポイントは、たとえばクラスター間の差よりもクラスター重心から離れています。異なるkパラメータを使用すると、非常に異なるクラスタリング結果が得られます。5つのクラスターを使用するための特定の生物学的根拠がない限り、グラフベースまたは教師なしの階層的クラスタリングアプローチを使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.