PCAとLDAを組み合わせるのは理にかなっていますか?


25

たとえば、ベイズ分類器を介して、教師付き統計分類タスク用のデータセットがあるとします。このデータセットは20個のフィーチャで構成されており、主成分分析(PCA)や線形判別分析(LDA)などの次元削減手法を使用して2つのフィーチャに要約します。

どちらの手法も、データをより小さな特徴部分空間に投影しています。PCAでは、データセットの分散を最大化する方向(コンポーネント)を見つけ(クラスラベルを考慮せず)、LDAでは、 -クラス分離。

今、私はこれらの技術を組み合わせることができるのか、どのように、そしてなぜできるのか、それが理にかなっているのか疑問に思っています。

例えば:

  1. PCAを介してデータセットを変換し、それを新しい2Dサブスペースに投影する
  2. LDAを介した(既にPCA変換済みの)データセットの変換 クラス内の分離

または

  1. PCAステップをスキップし、LDAの上位2つのコンポーネントを使用します。

または意味のある他の組み合わせ。


2
普遍的なものはあり得ないbest practice。PCAとLDAは、次元削減手法として非常に異なります。時々、人々はLDAに先立ってLDAを行いますが、重要な差別的側面を(廃棄されたPCと共に)捨てるリスクがあります。あなたが尋ねる質問は、実際にこのサイトで何回か何らかの形で尋ねられました。「PCA LDA」を検索して、人々がそれに言ったことを読んでください。
ttnphns 14

@SebastianRaschka:ここでの私の答えは役に立ちましたか、またはこれらの問題についてさらに質問がありますか?
アメーバは、モニカを復活させる14

@amoeba申し訳ありませんが、今まで答えが見つかりませんでした-どういうわけか、亀裂をすり抜けたに違いない、ありがとう!

回答:


44

概要:LDAの前にPCAを実行して、問題を正規化し、過剰適合を回避できます。

LDA投影は、固有分解を介して計算されることを思い出してください。ここで、およびはクラス内およびクラス間の共分散行列です。未満のデータポイントがある場合(は空間の次元、つまりフィーチャ/変数の数)、は特異であるため、反転できません。この場合、LDAを直接実行する方法はありませんが、PCAを最初に適用すれば機能します。@Aaronは、彼の返信に対するコメントの中でこの発言をしましたが、私はそれに同意します(しかし、あなたがこれから見るように、一般的に彼の答えには同意しません)。ΣW1ΣBΣWΣBNNΣW

ただし、これは問題の一部にすぎません。全体像は、LDAが非常に簡単にデータをオーバーフィットする傾向があるということです。クラス内共分散行列、LDA計算で反転されることに注意してください。高次元行列の場合、反転は非常に敏感な操作であり、推定が本当に良い場合にのみ確実に実行できます。しかし、高次元で、の正確な見積もり得ることは本当に難しいですし、練習1で頻繁に持っている必要が多くのことをより多く推定値が良好であることを期待して起動するデータポイント。それ以外の場合ΣWN1ΣWNΣW ほぼ特異になり(つまり、いくつかの固有値が非常に低くなります)、これにより過剰適合、つまり、トレーニングデータでのクラスの分離がほぼ完全になり、テストデータでのチャンスパフォーマンスが得られます。

この問題に取り組むには、問題を正規化する必要があります。それを行う1つの方法は、PCAを使用して最初に次元を減らすことです。他にもおそらく間違いなく良いものがあります。例えば、を使用する正則化LDA(rLDA)メソッドは、代わりに小さな使用し(これは収縮推定量と呼ばれます))、ただし、PCAを最初に実行することは、概念的には最も単純なアプローチであり、多くの場合はうまく機能します。1λΣW+λλΣW

これが過剰適合の問題の説明です。10次​​元、50次元、100次元、150次元の空間の標準ガウス分布(平均ゼロ、単位分散)から3つのクラスのクラスごとに60個のサンプルを生成し、LDAを適用してデータを2Dに投影しました。

LDAの過適合

次元が大きくなるにつれて、クラスがどんどん良くなり、実際にはクラス間に違いないことに注意してください。

クラスをわずかに分離した場合、PCAがオーバーフィットを防ぐ方法を確認できます。最初のクラスの最初の座標に1を追加し、2番目のクラスの最初の座標に2を追加し、3番目のクラスの最初の座標に3を追加しました。現在、それらはわずかに分離されています。左上のサブプロットを参照してください。

LDAの過剰適合とPCAによる正則化

オーバーフィッティング(一番上の行)はまだ明らかです。しかし、PCAでデータを前処理し、常に10次元(最下行)を維持すると、クラスがほぼ最適に分離されたままで、オーバーフィッティングが消えます。

PS。誤解を防ぐために:私はPCA + LDAが良い正則化戦略であることを主張していないです、私は単にそれがあることを実証しています(逆に、私はrLDAを使用するようにアドバイスします)可能な戦略。


更新。非常によく似たトピックは、@ cbeleitesが提供する興味深く包括的な回答とともに、以下のスレッドで以前に説明されています。

いくつかの良い答えとこの質問も参照してください。


真剣にそれは素晴らしい答えです!そして、基礎となる理論を説明している間、あなたはそこにも素晴らしい実用的な説明を持っています。これは私の参考文献コレクションに対するもう一つの素晴らしい答えです。どうもありがとう!

2番目のプロットがわかりません。クラスはLDA(下の行)の前にPCAと分離されていないようです
-PierreE

@ PierreE、2番目のプロットでは、クラスはほとんど分離されないように生成されます。分離はごくわずかです。一番下の行では、このわずかな分離を見ることができますが、よく見る必要があります。青と赤のクラスに注目すると、一方が左に、もう一方が右にシフトしていることがわかります。
アメーバは

なるほど、分かりました。一番上の行にあるクラスの分離が実際には過剰適合であることを忘れていました。ありがとう
ピエール

1

2つのクラスの問題がある場合、LDAは1次元に落とし込みます。最初にPCAを実行する理由はありません。


1
うーん、私はここであなたの推論に従っていません:私はあなたが選択しない限り、LDAがあなたを1次元に落とさないことをかなり確信しています。値を減らして固有値を並べ替えた後に保持する固有ベクトルの数によって異なります。多分私はここで何かを見逃しています...しかし、私はクラスの数に言及しませんでした。それぞれ20の機能を持つ3つのクラスがあり、それらを3Dサブスペースに投影したいとします。

1
PCAを最初に行う唯一の理由は、クラス内共分散行列が特異である場合です。20の機能と3つのクラスがある場合、それは特異ではないので、最初にPCAを実行しないでください。
アーロン14

4
assume we have 3 classes。@SebastianRaschka:LDAは最大2つの判別関数を許可します。LDAの固有値の数はmin(num_groups-1、num_features)です。
ttnphns 14

@Sebastian LDAから選択する判別関数の数は、LDAで何をしたいかによって異なります。スペース変換として、それはほとんど「監視された」PCAのようなものであり、必要なだけ選択します。超平面分離分類法として、定義により、超平面は次元N-1です。しかし、min(num_groups-1,num_features)どこから来たのかまだわからないため、追加情報についてそのトピックに関する質問をするかもしれません
...-Matthieu

1
@Matthieuこれは、クラス間マトリックスの間にあるため、ランク1以下のc(クラスの数)マトリックスを追加して作成します。そのため、最大でc-1個の非ゼロの固有値しか持てません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.