タグ付けされた質問 「pca」

主成分分析(PCA)は、線形次元削減手法です。これは、多変量データセットを、できるだけ多くの情報(できるだけ多くの分散)を維持する、構築された変数のより小さなセットに削減します。主成分と呼ばれるこれらの変数は、入力変数の線形結合です。

1
GBMパッケージとGBMを使用したキャレット
私はを使用してモデルのチューニングを行ってきましたがcaret、gbmパッケージを使用してモデルを再実行しています。caretパッケージが使用gbmし、出力が同じである必要があることは私の理解です。ただし、を使用した簡単なテスト実行でdata(iris)は、評価指標としてRMSEとR ^ 2を使用したモデルで約5%の不一致が示されています。を使用して最適なモデルのパフォーマンスを見つけたいが、部分的な依存関係プロットを利用するためにcaret再実行しgbmます。再現性のために以下のコード。 私の質問は次のとおりです。 1)これらの2つのパッケージは同じであっても違いがあるのはなぜですか(確率的ですが、5%がやや大きな違いであることがわかります。特に、次のような素晴らしいデータセットを使用していない場合 iris、モデリングの) 。 2)両方のパッケージを使用する利点または欠点はありますか? 3)無関係:irisデータセットを使用した場合、最適な値interaction.depthは5ですが、読み取り値が最大値floor(sqrt(ncol(iris)))である2 を超えるはずです。これは厳密な経験則ですか、それとも非常に柔軟ですか。 library(caret) library(gbm) library(hydroGOF) library(Metrics) data(iris) # Using caret caretGrid <- expand.grid(interaction.depth=c(1, 3, 5), n.trees = (0:50)*50, shrinkage=c(0.01, 0.001), n.minobsinnode=10) metric <- "RMSE" trainControl <- trainControl(method="cv", number=10) set.seed(99) gbm.caret <- train(Sepal.Length ~ ., data=iris, distribution="gaussian", method="gbm", trControl=trainControl, verbose=FALSE, tuneGrid=caretGrid, metric=metric, bag.fraction=0.75) …

1
PCAで行われたステップと比較した因子分析で行われたステップ
PCA(主成分分析)の実行方法は知っていますが、因子分析に使用する手順を知りたいです。 PCAを実行するために、たとえば、マトリックス考えてみましょう。AAA 3 1 -1 2 4 0 4 -2 -5 11 22 20 私はその相関行列を計算しましたB = corr(A): 1.0000 0.9087 0.9250 0.9087 1.0000 0.9970 0.9250 0.9970 1.0000 次に[V,D] = eig(B)、固有値分解を行い、固有ベクトルを作成しました。 0.5662 0.8209 -0.0740 0.5812 -0.4613 -0.6703 0.5844 -0.3366 0.7383 および固有値: 2.8877 0 0 0 0.1101 0 0 0 0.0022 111 PCAの手順と比較して、因子分析の手順を理解してください。

4
AIC(またはBIC)を使用したPCAモデルの選択
赤池情報量基準(AIC)を使用して、PCAで抽出する適切な数の要因を選択します。唯一の問題は、パラメーターの数を決定する方法がわからないということです。 ような行列考えます。ここで、は変数の数、は観測値の数を表します。共分散行列は対称であるため、最尤推定では、AICのパラメーター数をます。T×NT×NT\times NXXXNNNTTTX∼N(0,Σ)X∼N(0,Σ)X\sim \mathcal N\left(0,\Sigma\right)ΣΣ\SigmaN(N+1)2N(N+1)2\frac{N\left(N+1\right)}{2} あるいは、PCAで、の最初の固有ベクトルと固有値を抽出し、それらをおよびと呼び、\ Sigma = \ beta_ {f} \ Lambda_ {f} \ beta_を計算できます。{f} '+ I \ sigma_ {r} ^ {2} ここで、\ sigma_ {r} ^ {2}は平均残差分散です。あなたが持っている場合は、私の数によって、F要因を、あなたが希望Fのパラメータ\ Lambda_ {F} 、Nf個のパラメータbeta_ {F} \、および1つのにおけるパラメータsigma_ {R} ^ {2} \。fffΣΣ\Sigmaβfβf\beta_{f}ΛfΛf\Lambda_{f}Σ=βfΛfβ′f+Iσ2rΣ=βfΛfβf′+Iσr2\Sigma=\beta_{f}\Lambda_{f}\beta_{f}'+I\sigma_{r}^{2}σ2rσr2\sigma_{r}^{2}ffffffΛfΛf\Lambda_{f}NfNfNfβfβf\beta_{f}111σ2rσr2\sigma_{r}^{2} このアプローチは正しいですか?因子の数が増えると、最尤法よりも多くのパラメーターにつながるようです。NNN

2
PCAとランダムフォレスト
最近のKaggleコンテストでは、トレーニングセット用に10の追加機能を手動で定義しました。これらの機能は、ランダムフォレスト分類器のトレーニングに使用されます。新しい機能を備えたデータセットに対してPCAを実行し、それらが互いにどのように比較されているかを確認することにしました。分散の〜98%が最初の成分(最初の固有ベクトル)によって運ばれることがわかりました。次に、分類器を複数回トレーニングし、一度に1つの機能を追加し、交差検証とRMSエラーを使用して分類の品質を比較しました。機能を追加するごとに分類が改善され、最終結果(10個の新しい機能すべてを含む)が(たとえば)2個の機能を使用した最初の実行よりもはるかに優れていることがわかりました。 PCAが分散の〜98%がデータセットの最初のコンポーネントにあると主張したのに、なぜ分類の品質はそれほど向上したのですか? これは他の分類器にも当てはまりますか?RFは複数のコアにまたがるので、トレーニングは(たとえば)SVMよりもはるかに高速です。 データセットを「PCA」空間に変換し、変換した空間で分類器を実行した場合はどうなりますか。結果はどのように変わりますか?

5
PCAを使用してクラスター分析の変数を選択できますか?
クラスター分析を行うには、変数の数を減らす必要があります。私の変数は強く相関しているので、因子分析 PCA(主成分分析)を行うことを考えました。ただし、結果のスコアを使用する場合、クラスターはあまり正確ではありません(文献の以前の分類と比較して)。 質問: 回転行列を使用して、各コンポーネント/ファクターの負荷が最も大きい変数を選択し、これらの変数のみをクラスタリングに使用できますか? 書誌参照も参考になります。 更新: いくつかの明確化: 私の目標: SPSSによる2ステップアルゴリズムを使用してクラスター分析を実行する必要がありますが、変数は独立していないため、それらの一部を破棄することを考えました。 私のデータセット: 100,000ケースの15個のスカラーパラメータ(変数)に取り組んでいます。一部の変数は強く相関しています( Pearson)> 0.9>0.9>0.9 疑い: 独立変数のみが必要なので、主成分分析を実行し(申し訳ありませんが、元の質問で間違って因子分析について話しました、私の間違い)、各成分の負荷が最も大きい変数のみを選択します。PCAプロセスにはいくつかの任意のステップがあることは知っていますが、この選択は、変数を選択するためにITジョリフ(1972および2002)によって提案され、1999年にJRキングおよびDAジャクソンによって提案された「メソッドB4。 そのため、この方法で独立変数のサブグループを選択することを考えていました。次に、グループを使用してさまざまなクラスター分析を実行し、結果を比較します。

2
因子分析の最初の
主成分分析では、最初のkkk主成分は、分散が最大のkkk 直交方向です。言い換えると、第1主成分は最大分散の方向になるように選択され、第2主成分は最大分散を持つ第1主成分に直交する方向になるように選択されます。 因子分析にも同様の解釈がありますか?たとえば、最初の要因は、元の相関行列の非対角成分を最もよく説明する要因であると考えています(たとえば、元の相関行列と、要因)。これは本当ですか(または、私たちが言える類似の何かがありますか)?kkk

2
主成分分析を使用して回帰の変数を選択する方法は?
現在、モデリングに使用する変数を選択するために主成分分析を使用しています。現時点では、実験でA、B、Cの測定を行っています-私が本当に知りたいのは、測定を減らし、CとBの記録を停止して時間と労力を節約できるかということです。 3つの変数すべてが、データの分散の60%を占める最初の主成分に大きく負荷をかけることがわかります。コンポーネントスコアから、これらの変数を特定の比率(aA + bB + cC)で加算すると、わかります。データセットの各ケースについてPC1でスコアを取得でき、このスコアをモデリングの変数として使用できますが、それではBとCの測定を停止できません。 PC1のAとBおよびCの負荷を2乗すると、変数AはPC1の分散の65%を占め、変数BはPC1の分散の50%を占め、変数Cも50%を占めることがわかります。各変数A、B、Cによって説明されるPC1の分散の別の変数は別の変数と共有されますが、Aはわずかに多くを占めてトップになります。 この変数はPC1の分散の大部分を表し、これが次に分散の大部分を表すため、モデリングで使用する変数Aまたは場合によっては(必要に応じてaA + bB)を選択できると考えるのは間違っていますか?データ? 過去にどのアプローチをしましたか? 他の重いローダーがある場合でも、PC1に最も重い負荷をかける単一の変数? すべてが重いローダーであっても、すべての変数を使用したPC1のコンポーネントスコア?

1
PCAとTruncatedSVDのscikit-learn実装の違い
代数的/厳密なレベルでの主成分分析と特異値分解の関係を理解し​​ています。私の質問は、scikit-learnの実装についてです。 ドキュメンテーションは、「[TruncatedSVD]はPCAに非常に似ていますが、共分散行列ではなく、サンプルベクトルを直接操作します。」これは、両方のアプローチの代数的な違いを反映しています。ただし、後で説明します:「この推定器[TruncatedSVD]は、2つのアルゴリズムをサポートしています。高速ランダム化SVDソルバーと、(X * XT)または(XT * X)の固有ソルバーとしてARPACKを使用する「単純な」アルゴリズムのいずれか多い方です。効率的。」PCAについて、「データの特異値分解を使用してそれを投影する線形次元削減...」と述べています。PCA実装は、同じ2つのアルゴリズム(ランダム化およびARPACK)ソルバーと、もう1つのアルゴリズムLAPACKをサポートしています。コードを見ると、PCAとTruncatedSVDの両方のARPACKとLAPACKの両方がサンプルデータXでsvdを実行しており、ARPACKは(svdsを使用して)スパース行列を処理できることがわかります。 したがって、さまざまな属性とメソッドを除いて、PCAがLAPACK、PCA、およびTruncatedSVDを使用して正確な完全特異値分解を実行できることを除いて、scikit-learnの実装はまったく同じアルゴリズムのようです。最初の質問:これは正しいですか? 2番目の質問:LAPACKとARPACK使用scipy.linalg.svd(X)とscipy.linalg.svds(X)、というXサンプルマトリックスが、彼らは特異値分解またはの固有分解を計算するにもかかわらず、または内部では「ランダム化」ソルバーは積を計算する必要はありませんが。(これは数値の安定性に関連しています。データのSVDによるデータのPCAの理由を参照してください。)これは正しいです?X ∗ X TバツT∗ XXT∗XX^T*Xバツ∗ XTX∗XTX*X^T 関連コード:PCAのライン415 TruncatedSVDのライン137。
12 pca  scikit-learn  svd  scipy 

1
カーネルPCAのカーネルを選択するには?
カーネルPCA(主成分分析)による最終的なデータ出力で適切なデータ分離をもたらすカーネルを選択する方法と、カーネルのパラメーターを最適化する方法は何ですか? できればレイマンの用語を大いに歓迎し、そのような方法を説明する論文へのリンクもいいでしょう。

4
距離行列のみでPCAを実行する
ペアワイズ距離しかない大規模なデータセットをクラスター化したい。k-medoidsアルゴリズムを実装しましたが、実行に時間がかかりすぎるため、PCAを適用して問題の次元を減らすことから始めたいと思います。ただし、この方法を実行するために知っている唯一の方法は、私の状況にはない共分散行列を使用することです。 ペアワイズ距離のみを知っているPCAを適用する方法はありますか?

4
非常に高次元のデータに対してPCAを実行するにはどうすればよいですか?
主成分分析(PCA)を実行するには、データから各列の平均を差し引き、相関係数行列を計算してから、固有ベクトルと固有値を見つける必要があります。まあ、むしろ、これはPythonで実装するために行ったものですが、相関係数行列(corrcoef)を見つける方法では高次元の配列を使用できないため、小さな行列でしか機能しません。画像に使用する必要があるため、現在の実装では本当に役に立ちません。 データマトリックスを取得して、代わりにを計算することは可能であると読みましたが、それは私にはうまくいきません。まあ、私はそれが(私の場合は)ではなくマトリックスであることになっているという事実を除いて、それが何を意味するのか理解しているとははっきりとはわかりません。私はそれらについてeigenfacesチュートリアルで読みましたが、どれも私が本当に理解できるような方法でそれを説明していないようです。D D ⊤ / N D ⊤ D / N N × N P × P P » NDDDD D⊤/ nDD⊤/nDD^\top/nD⊤D / nD⊤D/nD^\top D/nn × nn×nn \times np × pp×pp\times pP » Np≫np\gg n 簡単に言うと、このメソッドの簡単なアルゴリズムの説明はありますか?
12 pca  python 

2
PCAの交差検証を実行して主成分の数を決定する方法は?
主成分分析用の独自の関数であるPCAを記述しようとしています(もちろん、既に多くの記述がありますが、自分で実装することに興味があります)。私が遭遇した主な問題は、交差検証ステップと予測二乗和(PRESS)の計算です。どの交差検証を使用するかは関係ありません。これは主に背後にある理論についての質問ですが、Leave-one-out交差検証(LOOCV)を検討してください。理論から、LOOCVを実行するには次のことが必要であることがわかりました。 オブジェクトを削除する 残りをスケール いくつかのコンポーネントでPCAを実行する (2)で取得したパラメーターに従って削除されたオブジェクトをスケーリングする PCAモデルに従ってオブジェクトを予測する このオブジェクトのPRESSを計算します 同じアルゴリズムを他のオブジェクトに再実行する すべてのPRESS値を合計します 利益 私はこの分野で非常に新しいので、私が正しいことを確認するために、結果を私が持っているいくつかのソフトウェアからの出力と比較します(また、いくつかのコードを書くために、ソフトウェアの指示に従います)。残差二乗和とを計算するとまったく同じ結果が得られますが、R2R2R^2PRESSの計算は問題です。 相互検証ステップで実装することが正しいかどうか教えてください。 case 'loocv' % # n - number of objects % # p - number of variables % # vComponents - the number of components used in CV dataSets = divideData(n,n); % # it is just a variable responsible …

2
PCAソリューションはユニークですか?
特定のデータセットでPCAを実行すると、独自のソリューションが提供されますか? つまり、ポイント間の距離に基づいて、2D座標のセットを取得します。これらの制約を満たす点の少なくとももう1つの配置を見つけることは可能ですか? 答えが「はい」の場合、どうすればこのような別の解決策を見つけることができますか?
12 pca 

3
PCAおよびLDAにおける「再構築エラー」の意味
PCA、LDA、Naive Bayesをそれぞれ圧縮と分類に実装しています(圧縮と分類にLDAの両方を実装しています)。 私はコードを書いてあり、すべてが動作します。私が知っておく必要があるのは、報告書に関して、再構成エラーの一般的な定義です。 私は多くの数学とその使用法を文献で見つけることができます...しかし、私が本当に必要なのは鳥瞰図/わかりやすい言葉の定義なので、レポートに適合させることができます。

1
PCAとPLSの「読み込み」と「相関読み込み」の違いは何ですか?
主成分分析(PCA)を実行するときに行う一般的なことの1つは、2つの負荷を互いにプロットして、変数間の関係を調べることです。主成分回帰とPLS回帰を行うためのPLS Rパッケージに付属するペーパーには、相関負荷プロットと呼ばれる別のプロットがあります(ペーパーの図7および15ページを参照)。相関負荷は、それが説明するように、(PCAからまたはPLS)スコアとの相関関係と実際の観測データです。 ローディングと相関ローディングは、スケーリングが少し異なることを除いて、かなり似ているように思えます。組み込みのデータセットmtcarsを使用したRでの再現可能な例は次のとおりです。 data(mtcars) pca <- prcomp(mtcars, center=TRUE, scale=TRUE) #loading plot plot(pca$rotation[,1], pca$rotation[,2], xlim=c(-1,1), ylim=c(-1,1), main='Loadings for PC1 vs. PC2') #correlation loading plot correlationloadings <- cor(mtcars, pca$x) plot(correlationloadings[,1], correlationloadings[,2], xlim=c(-1,1), ylim=c(-1,1), main='Correlation Loadings for PC1 vs. PC2') これらのプロットの解釈の違いは何ですか?そして、(もしあれば)実際に使用するのに最適なプロットはどれですか?

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