PCAとトレイン/テストの分割


35

複数のバイナリラベルセットがあるデータセットがあります。ラベルのセットごとに、分類器をトレーニングし、相互検証によって評価します。主成分分析(PCA)を使用して次元を減らしたい。私の質問は:

データセット全体に対して PCAを一度実行してから、上記のように相互検証に低次元の新しいデータセットを使用することは可能ですか?または、すべてのトレーニングセットに対して個別のPCAを実行する必要がありますか(つまり、すべての分類子およびすべての相互検証フォールドに対して個別のPCAを実行することを意味します)。

一方では、PCAはラベルを使用しません。一方、テストデータを使用して変換を行うため、結果に偏りが生じる可能性があります。

作業を節約することに加えて、データセット全体でPCAを1回実行すると、すべてのラベルセットのデータセットを一度に視覚化できることに注意してください。ラベルセットごとに異なるPCAがある場合、各ラベルセットを個別に視覚化する必要があります。


将来の参考のために。caretパッケージを使用したRのPCAとの相互検証を行う方法については、この質問を参照してください:CaretでのPCAとk-fold相互検証
アメーバは、モニカを復活させる


回答:


34

汎化誤差を測定するには、後者を実行する必要があります。すべてのトレーニングセットに対して個別のPCA(つまり、すべての分類子およびすべてのCVフォールドに対して個別のPCAを実行することを意味します)。

次に、同じ変換をテストセットに適用します。つまり、テストセットで個別のPCA を実行しないでください。ここで説明するように、トレーニングセットの平均(および必要に応じて標準偏差で除算)を減算します。トレーニングセットのPCAの後にテストセットをゼロ中心にします。次に、トレーニングセットのPCにデータを投影します。


  • 使用するPCの数に対して自動基準を定義する必要があります。
    「実際の」分類の前の最初のデータ削減ステップにすぎないため、少数のPCを使用してもパフォーマンスは低下しません。経験から何台のPCが良いかと予想される場合は、それを使用することができます。

  • また、すべての代理モデルに対してPCAをやり直す必要があるかどうかを後でテストすることもできます(1つのPCAモデルのみで分析を繰り返す)。このテストの結果は報告する価値があると思います。

  • PCAを繰り返さないというバイアスを一度測定したところ、分光分類データを使用すると、すべてのサロゲートモデルに対してPCAを再実行しない場合、一般化エラー率の半分しか検出されませんでした。

ただし、記述(視覚化など)の目的で、データセット全体の追加の PCAモデルを構築できます。必ず、2つのアプローチを互いに分離してください。


データセット全体の最初のPCAがクラスラベルを表示せずに結果にどのようにバイアスをかけるのか、という感覚をつかむのはまだ難しいと感じています。

ただし、データは表示されます。また、クラス間分散がクラス内分散と比較して大きい場合、クラス間分散はPCA投影に影響します。通常、分類を安定させる必要があるため、PCAステップが実行されます。つまり、追加のケースモデルに影響を与える状況です。

クラス間の分散が小さい場合、このバイアスはそれほど大きくありませんが、その場合、PCAは分類に役立ちません。PCAプロジェクションは、クラス間の分離を強調することはできません。


おかげで、これはまさに私が思っていたものですので、独立したソースからそれを聞いて良いです。データセット全体の最初のPCAがクラスラベルを表示せずに結果にどのようにバイアスをかけるのか、という感覚を得ることはまだ難しいと感じています。
ビット単位

@Bitwise:私の編集を参照してください
cbeleitesサポートモニカ

こんにちは、@ cbeleitesです。このスレッドをPCAおよびトレーニング/テストの分割(多くあります!)に関する質問の「標準的な」スレッドにし、それらを重複としてマークしたいと思います。私は、重複した質問でしばしば生じる誤解を解消するかもしれないあなたの答えに1つの文を追加する自由を取りました。あなたが私の編集に満足していることを願っていますが、チェックしてください!+1、ところで。
アメーバは、モニカを復活させる14

@amoeba、どうもありがとう。はい、それはあなたが追加した重要なポイントです。質問集を整理する作業に感謝します。
cbeleitesはモニカをサポートします14

1
@FelipeAlmeida:はい
cbeleitesはモニカをサポートします

2

この質問に対する答えは、実験計画によって異なります。予測しようとしているデータを知る前にモデルを構築する必要がない限り、データセット全体に対してPCAを実行できます。既知のサンプルと未知のサンプルが多数あるデータセットがあり、PCAの未知のデータを含む未知のデータを予測したい場合、データの多様性をより詳細に把握でき、パフォーマンスの向上に役立ちますモデルの。PCAは監視されていないため、既知のサンプルと同じことを未知のサンプルに行うことができるため、「ピーク」ではありません。

一方、現在モデルを構築する必要があるデータセットがあり、将来のある時点で、その事前構築モデルを使用して予測する必要がある新しいサンプルを取得する場合、各フォールドで個別のPCAを実行する必要がありますそれが一般化することを確認してください。この場合、新しい機能がどのように見えるかわからないため、モデルを再構築して新しい機能を説明することはできないため、テストデータでPCAを実行することは「ピーク」です。この場合、モデルが実際に使用される場合、未知のサンプルの特徴と結果の両方は利用できないため、モデルをトレーニングする際には利用できません。


0

後者を行う、毎回トレーニングセットのPCA

PCAでは、縮小行列:Uを学習します。これは、投影を取得するのに役立ちますZ_train = U x X_train

テスト時には、トレーニングフェーズから学習した同じUを使用して、投影を計算しますZ_test = U x X_test

したがって、基本的には、トレーニング中に取得した縮小された特徴空間にテストセットを投影しています。

基本的な前提は、テストとトレインセットが同じ分布からのものであるということです。これは上記の方法を説明しています。

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