7

データセットの次元を2Dに削減するためにKernelPCAを使用しようとしています(視覚化とさらなるデータ分析の両方のために)。

ガンマのさまざまな値で RBF カーネルを使用して KernelPCA の計算を実験しましたが、結果は不安定です。

アニメ

(各フレームはガンマのわずかに異なる値であり、ガンマは 0 から 1 まで連続的に変化します)

決定論的ではないようです。

それを安定させる/決定論的にする方法はありますか?

変換されたデータの生成に使用されるコード:

def pca(X, gamma1):
    kpca = KernelPCA(kernel="rbf", fit_inverse_transform=True, gamma=gamma1)
    X_kpca = kpca.fit_transform(X)
    #X_back = kpca.inverse_transform(X_kpca)
    return X_kpca
4

2 に答える 2

1

だから...決定論的ではない理由について決定的な答えを出すことはできませんKernelPCA。この動作は、私が観察した PCA と RandomizedPCA の結果の違いに似ています。PCA は決定論的ですが、RandomizedPCA はそうではなく、固有ベクトルの符号が PCA 固有ベクトルに対して反転することがあります。

それは、どうすればより決定論的な結果を得ることができるかという漠然とした考えに私を導きます....多分. 固定シードでRBFSamplerを使用します。

def pca(X, gamma1):
    kernvals = RBFSampler(gamma=gamma1, random_state=0).fit_transform(X)
    kpca = PCA().fit_transform(X)
    X_kpca = kpca.fit_transform(X)
    return X_kpca
于 2015-07-02T18:07:10.817 に答える