10

ガウス混合モデルを使用した画像分類に取り組んでいます。3 つのクラスに属する約 34,000 のフィーチャがあり、すべて 23 次元空間にあります。さまざまな方法を使用して、トレーニング データとテスト データの両方で特徴のスケーリングを実行しましたが、スケーリングの実行後に精度が実際に低下することがわかりました。多くの機能間で多くの次数の違いがあったため、機能のスケーリングを実行しました。なぜこれが起こっているのか知りたいのですが、特に機能の大きな違いを考えると、機能のスケーリングにより精度が向上すると思いました。

4

1 に答える 1

25

特に特徴の大きな違いを考えると、特徴のスケーリングにより精度が向上すると思いました。

現実世界の相棒へようこそ。

一般に、いくつかの機能が他の機能を「支配する」ことがないように、機能を同じ「スケール」にしたいのは事実です。これは、機械学習アルゴリズムが本質的に「幾何学的」である場合に特に当てはまります。「幾何学的」とは、サンプルを空間内のとして扱い、予測を行う際に点間の距離 (通常はユークリッド/L2) に依存することを意味します。つまり、点の空間関係が重要です。GMM と SVM は、この性質のアルゴリズムです。

ただし、特に一部の機能が本質的にカテゴリ/序数であり、それらを残りの機能に追加するときに適切に前処理しなかった場合、機能のスケーリングによって問題が発生する可能性があります。さらに、機能のスケーリング方法によっては、特定の機能に外れ値が存在すると、その機能の機能スケーリングが台無しになることもあります。たとえば、「最小/最大」または「単位分散」スケーリングは、異常値に敏感になります (たとえば、特徴の 1 つが年収または現金残高をエンコードし、データセットに少数の億万長者がいる場合)。

また、このような問題が発生した場合、原因が明らかでない場合があります。機能のスケーリングを実行して結果が悪くなり、機能のスケーリングに問題があるという意味ではありません。そもそもあなたの方法がおかしかった可能性があり、機能スケーリング後の結果はたまたまさらにおかしくなっています。

では、あなたの問題の他の原因は何ですか?

  1. 最も可能性の高い原因は、高次元のデータと十分なトレーニング サンプルがないことです。これは、GMM が 34000 次元のデータを使用して共分散行列を推定するためです。多くのデータがない限り、1 つ以上の共分散行列 (ガウス分布ごとに 1 つ) がほぼ特異または特異になる可能性があります。これは、GMM からの予測がナンセンスであることを意味します。これは、ガウス関数が「爆発」したか、事前定義された回数の反復後に EM アルゴリズムがあきらめたためです。
  2. 不十分なテスト方法。データを適切なトレーニング/検証/テスト セットに分割しておらず、テストを適切に実行していませんでした。あなたが最初に持っていた「良い」パフォーマンスは、信頼できるものではありませんでした. 検証やテスト セットではなく、モデルが適合されたトレーニング データを使用してテストするのが自然な傾向であるため、これは実際には非常に一般的です。

それで、あなたは何ができますか?

  1. 画像の分類に GMM を使用しないでください。特に画像カテゴリをラベルとして認識している場合は、適切な教師あり学習アルゴリズムを使用してください 特に、特徴のスケーリングを完全に回避するには、ランダム フォレストまたはそのバリアント (たとえば、非常にランダム化されたツリー) を使用します。
  2. より多くのトレーニング データを取得します。「単純な」(つまり、「おもちゃ」/合成画像) を分類している場合、またはそれらをいくつかの画像クラス (たとえば、<= 5 に分類している場合) を除きます。これは、私が空中から引き出したランダムな小さな数字であることに注意してください。) 、クラスごとに大量の画像が必要です。適切な出発点は、クラスごとに少なくとも数百を取得するか、より高度なアルゴリズムを使用してデータ内の構造を活用し、パフォーマンスを向上させることです。

基本的に、私のポイントは、機械学習のフィールド/アルゴリズムを、暗記してランダムに試すブラックボックスや一連のトリックとして(単に)扱わないことです。ボンネットの下のアルゴリズム/数学を理解するようにしてください。こうすることで、発生した問題をより適切に診断できるようになります。


編集(@Zeeによる説明の要求に応じて)

論文に関しては、LibSVM の著者によるA Practical Guide to Support Vector Classificationだけが思い浮かびます。その中の例は、さまざまなデータセットでの SVM の特徴スケーリングの重要性を示しています。たとえば、RBF/Gaussian カーネルを考えてみましょう。このカーネルは、平方 L2 ノルムを使用します。フィーチャの縮尺が異なる場合、これは値に影響します。

また、特徴をどのように表現するかも重要です。たとえば、高さを表す変数をメートルから cm またはインチに変更すると、PCA などのアルゴリズムに影響します (その機能の方向に沿った分散が変更されるため)。これは「典型的な」スケーリング (たとえば、最小/最大、Z -スコアなど) これは表現の問題です。単位に関係なく、人物の身長は同じです。典型的な機能スケーリングはデータを「変換」し、人の「高さ」を変更します。デビッド・マッケイ教授は、彼の著書「Information Theory for Machine Learning」のAmazonページで、彼の著書に PCA を含めなかった理由を尋ねられたとき、このようなコメントをしています。

順序変数とカテゴリ変数については、機械学習のベイズ推論、統計学習の要素で簡単に説明されてます。彼らは、それらを特徴としてエンコードする方法について言及しています。たとえば、3 つのカテゴリを表すことができる変数を 3 つのバイナリ変数に置き換え、そのうちの 1 つを「1」に設定して、サンプルがそのカテゴリを持っていることを示します。これは、線形回帰 (または線形分類子) などの方法にとって重要です。これは、スケーリング自体ではなく、カテゴリ変数/機能のエンコードに関するものですが、それらは機能の前処理設定の一部であるため、知っておくと便利です。詳細は、以下の Hal Duame III の本に記載されています。

Hal Duame III著の本A Course in Machine Learning 。「スケーリング」で検索してください。本の最も初期の例の 1 つは、それが KNN にどのように影響するかです (RBF/ガウス カーネルを使用する場合に GMM、SVM などが使用する L2 距離を使用するだけです)。詳細については、第 4 章「機械学習の実践」を参照してください。残念ながら、画像/プロットは PDF に表示されません。この本は、特に自然言語処理 (NLP) に取り組んでいる場合に、特徴のエンコードとスケーリングに関する最も優れた扱いの 1 つです。たとえば、特徴に対数を適用する (つまり、対数変換) についての彼の説明を参照してください。そうすれば、対数の合計は機能の積の対数になり、これらの機能の「効果」/「寄与」は対数によって先細りになります。

前述のすべての教科書は、上記のリンクから自由にダウンロードできます。

于 2014-10-31T07:37:29.710 に答える