機能の選択にカーネルPCAを使用することは可能ですか?


9

PCAが使用されるのと同じ方法で、潜在的セマンティックインデックス(LSI)にカーネル主成分分析(kPCA)を使用することは可能ですか?

prcompPCA関数を使用してRでLSIを実行し、最初のコンポーネントから最も負荷の高い機能を抽出します。これにより、コンポーネントを最もよく表す機能が得られます。k

kpcakernlibパッケージから)関数を使用しようとしましたが、主成分の機能の重みにアクセスする方法がわかりません。カーネルメソッドを使用する場合、これは全体的に可能ですか?


princomp関数を試しましたか?
mariana soffer

回答:


6

あなたの質問への答えは否定的だと思います。それは不可能です。

各主成分は元の特徴の線形結合であるため、標準PCAを特徴選択に使用できます。これにより、どの特徴が最も顕著な主成分に最も貢献しているかを確認できます。たとえば、こちらを参照してください。主成分分析(PCA)の使用機能の選択

しかし、カーネルPCAでは、各主成分はターゲット空間の特徴の線形結合であり、たとえばガウスカーネル(よく使用される)の場合、ターゲット空間は無限次元です。したがって、「ローディング」の概念はkPCAには実際には意味がなく、実際、カーネルの主成分は直接計算され、主軸(標準のPCA prcomp$rotationではによってRで指定されている)の計算をバイパスして、次のように知られています。カーネルトリック。例はこちらをご覧ください:カーネルPCAと線形カーネルは標準のPCAと同等ですか?詳細については。

いいえ、それは不可能です。少なくとも簡単な方法はありません。


2
(+1)SVMとの類似性で説明する方が簡単だと思います。線形空間では、各変数が分離超平面に寄与する重みを計算できます(カーネルの重要な尺度であり、少なくとも機能選択に使用できます)。複雑すぎたり、まったく不可能です。ここでも同じロジックです。
Firebug

2

次の例(kernlabリファレンスマニュアルからの抜粋)は、カーネルPCAのさまざまなコンポーネントにアクセスする方法を示しています。

data(iris)
test <- sample(1:50,20)
kpc <- kpca(~.,data=iris[-test,-5],kernel="rbfdot",kpar=list(sigma=0.2),features=2)

pcv(kpc)        # returns the principal component vectors
eig(kpc)        # returns the eigenvalues
rotated(kpc)    # returns the data projected in the (kernel) pca space
kernelf(kpc)    # returns the kernel used when kpca was performed

これはあなたの質問に答えますか?


prcomp $ rotationと同じだと思って、rotated(kpca)を試しました。これは(R help(prcomp)の形式): "回転:可変負荷の行列(つまり、列に固有ベクトルが含まれる行列)"です。しかし、そうではありません。ただし、非線形の次元削減を使用してLSA / LSIが可能かどうかわからないため、この質問は非常に一般的な意味もあります。
user3683 2011年

申し訳ありませんが、質問が欠けている可能性があります。LSA / LSIでは非線形の次元削減は不可能だと思うのはなぜですか?
Lalas

1
なぜなら、次元の線形の組み合わせはなく、カーネル関数に依存するものがあるからです。この設定では、1つの次元が(非線形)主成分に対して持つ重みを決定できますか?
user3683

2
(-1)これは便利なコードスニペットである可能性がありますが、元の質問にはまったく答えないと思います。
アメーバ2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.