特徴選択に主成分分析(PCA)を使用する


54

私は機能選択が初めてであり、PCAを使用して機能選択を実行する方法を知りたいと思っていました。PCAは、情報価値のない入力変数を除外するために使用できる各入力変数の相対スコアを計算しますか?基本的に、分散または含まれる情報の量によって、データの元の機能を順序付けできるようにしたいと考えています。

回答:


75

PCAを特徴選択のツールとして使用する場合の基本的な考え方は、係数(負荷)の大きさ(絶対値の最大から最小まで)に従って変数を選択することです。PCAは、(多かれ少なかれ相関のある)変数を、元の変数のk < pの無相関線形結合(射影)に置き換えようとしていることを思い出してください。手元の問題に最適なkを選択する方法を無視しましょう。これらのk主成分は、説明された分散を通じて重要度によってランク付けされ、各変数は各成分にさまざまな程度で寄与します。最大の分散基準を使用することは、特徴抽出に似ていますpk<pkk 、元の変数の代わりに、主成分が新しい機能として使用されます。ただし、最初のコンポーネントのみを保持し、絶対係数が最も高い変数を選択することもできます。数jは、変数の数の割合(たとえば、p変数の上位10%のみを保持する)、または固定カットオフ(たとえば、正規化された係数のしきい値を考慮する)に基づく場合があります。このアプローチは、ペナルティ付き回帰(またはPLS回帰)におけるLasso演算子と似ています。ただし、jの値も保持するコンポーネントの数も明らかな選択肢ではありません。j<pjpj

PCAを使用する場合の問題は、(1)元の変数すべてからの測定値が低次元空間への投影に使用されること、(2)線形関係のみが考慮されること、および(3)PCAまたはSVDベースの方法も同様である単変量スクリーニング法(t検定、相関など)として、データ構造の潜在的な多変量の性質(変数間の高次相互作用など)を考慮しないでください。

ポイント1について、いくつかのより精巧なスクリーニング方法は、例えば、提案されている主な特徴分析「のため使用されるもののように、または段階的な方法で遺伝子シェービング遺伝子発現研究に」。また、スパースPCAを使用して、結果の変数ロードに基づいて次元削減と変数選択を実行する場合があります。ポイント2について、非線形の関係を低次元空間に埋め込む必要がある場合は、カーネル PCAを使用できます(カーネルトリックを使用)。決定木、またはより良いランダムフォレストアルゴリズムは、ポイント3をより適切に解決できる可能性があります。後者では、変数の重要性の Giniまたは順列ベースの尺度を導出できます。

最後のポイント:分類または回帰モデルを適用する前に特徴選択を実行する場合は、必ずプロセス全体を相互検証してください(統計学習要素 §7.10.2 またはAmbroise and McLachlan、2002を参照)。


Rソリューションに興味があるように思えるので、分類コンテキストまたは回帰コンテキストでのデータの前処理と変数選択のための多くの便利な機能を含むキャレットパッケージをご覧になることをお勧めします。


1
ここには多くの良い情報がありますが、EFAの言及がないことに驚いています。因子分析は、特徴選択/次元削減に適していると考えています。また、PCAは、変数が無相関になるようにデータを再表現するのに本当に適していると考えています。私はあなたが同意しないと思いますか?
GUNG -モニカ元に戻し

3
np

それは明らかに難しい、微妙な問題です。あなたは私よりも多くのことを知っているので、あなたの意見に興味がありました。+1、ところで。
GUNG -モニカ元に戻し

2
2つのコメント。まず、ポイント2の解決策の1つとしてkPCAに言及します。しかし、固有ベクトル/読み込みがそこで利用できない場合、kPCAを機能選択にどのように使用できますか。それについて追加の質問があり、私はそれができないと主張しました。第二に、回帰で機能選択を行うための優先(?)方法としてLASSOに言及した場合、最後の段落の前の2番目は大幅に改善される可能性があります。このスレッドは非常に人気があり、多くの質問が重複しているため閉じられています。そのため、あなたの答えが可能な限り優れていることが重要です!
アメーバは、モニカーを復活

@chl、有益な答えをありがとう。「最初のコンポーネントのみを保持することを決定する」ことについて話します。なぜ最初のコンポーネントだけですか?1つのコンポーネントで、フィーチャ/変数を簡単にランク付けできます。複数のコンポーネント、たとえば3を使用してこれをどのように行いますか?コンポーネント間で変数をどのようにランク付けしますか?各主成分を調べて、その主成分から、まだ選択されていない機能のセットから、負荷が最大の特徴を選択できると思います。これらも、数値(j)または正規化された係数のしきい値によって選択できます。同意しますか?
サザー

6

N個のフィーチャのセットが与えられると、PCA分析は、(1)最大の分散を持つフィーチャの線形結合(最初のPCAコンポーネント)、(2)最初のPCAコンポーネントに直交する部分空間で最大の分散を持つ線形結合などを生成します(組み合わせの係数が単位ノルムを持つベクトルを形成するという制約の下で)最大分散を持つ線形組み合わせが「良い」機能であるかどうかは、実際に予測しようとしているものに依存します。このため、PCAコンポーネントであることと「良い」機能であることは、(一般に)2つの無関係な概念であると言えます。


(-1)これが元の質問にどのように答えているかわかりません。
アメーバは2014

-1

PCAで使用される分散は基本的に多次元エンティティであるため、分散に従ってフィーチャを並べ替えることはできません。フィーチャの順序は、選択した特定の方向(通常は最初の主要な要素)に分散を投影することによってのみ順序付けできます。つまり、フィーチャに分散があるかどうかは、投影方向の選択方法によって異なります。


2
私は理解していません。元の各特徴には分散があるため、確かに「分散に従って特徴を並べ替えることができます」。さらに、「選択した特定の方向への分散の投影によって」それらを順序付ける方法を理解していません。それはどういう意味ですか?
アメーバは、モニカーを復活させる

実際に分散を使用して機能を順序付けることができますが、その場合はPCAと関係があり、すべての機能をまとめて処理します。
ジェームズLI

投影について:フィーチャがn個ある場合、方向ベクトルはn次元空間の単位ベクトルにすぎません。m個のインスタンスベクトルの投影は、インスタンスベクトルとその単位ベクトルのスケール積であり、am次元ベクトルになります。そして、このm次元ベクトルの分散は、選択した方向へのデータセットの分散の「投影」です。
ジェームズLI

1
-1。あなたの答えの3つの文のすべてが間違っているか、誤解を招くほど明確ではないと思います。あなたがコメントで書いたすべてに同意しますが、あなたの答えがそれを意味するものと解釈される方法がわかりません。「フィーチャを分散に従って注文することはできません」-?? 「特定の方向への分散の投影によってのみフィーチャを順序付けることができます」-?? 「特徴にもっと分散があるかどうか…依存する...」-?? それはすべて間違っています。
アメーバは、モニカを復活させる

2
この質問がずっと前に聞かれたことを私は知りませんでした。そして、これらの回答のほとんどに同意します。私のポイントは次のとおりです。PCAは機能の選択に適していません。ここに誰も直接これを言いたくない。
ジェームズLI
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.