N次元データセットの次元数を減らすためにPCAを使用していますが、大きな外れ値に頑健に構築したいのでロバストPCAコードを調べています。従来のPCAの主成分(固有ベクトル)ベクトルとしてRobust PCA出力を使用する方法
従来のPCAの場合、私はpythonのsklearn.decomposition.PCAを使用しています。これは主成分をベクターとしてうまく返し、そこでデータを投影することができます(明確にするために、私はSVD私はその方法がどのように機能するかを知っています)。私はそこにいくつかの事前にコード化されたRPCAのPythonコードを見つけました(https://github.com/dganguli/robust-pcaとhttps://github.com/jkarnows/rpcaADMMなど)。
最初のコードは、Candes et al。第2のコードは、行列分解のADMM法(Parikh、N.、& Boyd、S。2013)を使用し、X_1、X_2、X_3行列を返す。私は、標準的なPCMアルゴリズムによって返される主軸にこれらをどのように接続するかを考え出すのは非常に困難です。誰でもガイダンスを提供できますか?
特に、1つのデータセットXでは、N 3次元の点群があります。私はPCAを通して実行します:
pca=sklean.decompose.PCA(n_components=3)
pca.fit(X)
comps=pca.components_
これらの3つのコンポーネントは、私がすべてのポイントを投影する新しい基盤を定義します。ロバストPCAでは、行列L + S = Xを得る。 pca.fit(L)を実行しますか?私はRPCAが私に固有ベクトルを返すが、共分散行列の構築やSVDの実行の一部としてアウトライアを外すための内部的なステップを持っていると思っていただろう。
「ロバストPCA」とは、ほかの人がどのように使用しているのか/コーディングしているのではないかと思いますか? robust-pca
code
は、私はあなたが説明したならば、それが役立つと思うもののベクトルにそれらの行列を接続する問題標準のPCMアルゴリズムがあります。 – ImportanceOfBeingErnest
私は、より明確になるように質問に追加しました。 – AstroBen