変数選択・特徴量選択のときに注意すること

変数選択・特徴量選択の手法はいろいろあります。同じ値をもつサンプルの割合が大きい特徴量を削除したりとか、相関係数の絶対値が大きい特徴量の組の一つを削除したりとか、

[Pythonコード付き] 相関係数で変数選択したり変数のクラスタリングをしたりしてみましょう
回帰分析やクラス分類をする前の、データセットの前処理の話です。2 つの説明変数 (記述子・特徴量) の間で、相関係数の絶対値が大きいとき、それらの変数は似ているということです。余計な変数は、回帰モデル・クラス分類モデルに悪影響を及ぼすため、...

 

モデルの予測精度を高めるように特徴量を選択したりとか、

Stepwise (ステップワイズ) 法による説明変数 (入力変数・記述子・特徴量) の選択~手軽な変数選択手法~
Stepwise (ステップワイズ) 法による変数選択について、pdfとパワーポイントの資料を作成しました。Stepwiseの特徴や、データセットが与えられたときにStepwiseで何ができるか、Stepwiseをどのように計算するかが説明...
GAPLS, GASVR でモデルの推定性能がよくなるように説明変数の選択をしよう![Pythonコードあり]
遺伝的アルゴリズム (Genetic Algorithm, GA) を使って説明変数を選択する話です。2つの手法である Genetic Algorithm-based Partial Least Squares (GAPLS) Geneti...

 

乱数の特徴量のような目的変数と関係ない特徴量を削除したりとか

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
Boruta という、ランダムフォレスト (Random Forest, RF) の変数重要度に基づいた変数選択手法について、パワーポイントの資料とその pdf ファイルを作成しました。いろいろなデータセットを解析しましたが、モデルの推定性...

 

いろいろです。

その中で、モデルの予測精度を高めるような特徴量選択、というのはとても魅力的です。ただ、特徴量選択で高めることのできるモデルの予測精度とは何なのか、把握しておいた方がよいです。というのも、ここでのモデルの予測精度というのは、広い意味での内部バリデーションの結果としての予測精度だからです。たとえば、stepwise や GAPLS, GASVR といった特徴量選択手法において、クロスバリデーションにおける予測結果がよくなるように特徴量を選択することがあります。これにより、すべての特徴量を用いたときよりも、クロスバリデーション後の r2 が高くなることが多いです。この特徴量選択では、クロスバリデーションにおける予測結果をモデルの予測精度といっているわけです。しかし、クロスバリデーションにおける予測結果が向上したからといって、必ずしも新しいサンプルに対する精度が高くなるわけではありません。クロスバリデーションの結果に、特徴量セットがオーバーフィット

人工知能・機械学習のときには過学習 (オーバーフィッティング) に気をつけよう!~過学習とその対処法~
応化先生と生田さんが過学習 (オーバーフィッティング) について話しています。 応化:今日は過学習についてです。 生田:過学習?学習し過ぎるってこと? 応化:その通りです。 生田:だったら悪いことじゃなさそうに聞こえるけど・・・。学習をたく...

 

している可能性があります。

では、クロスバリデーションではなく、別途バリデーションデータを準備して、その予測結果がよくなるように、つまりバリデーションデータの r2 の値を大きくするように、特徴量を選択すればよいのでしょうか。この場合、バリデーションデータに特徴量セットがオーバーフィットする危険が高まるだけで、本質的な解決にはなっていません。そもそもクロスバリデーションは、外部バリデーションを繰り返すことです。特徴量選択において向上できるモデルの予測精度とは、今あるデータセットで計算できる予測精度であり、広い意味での内部バリデーションにおける予測精度なのです。

基本的に、データセットにおける特徴量の数は大きいことが多いです。そのような非常に自由度の高い中で、特徴量セットを最適化することになりますので、最適化に用いたサンプルに、特徴量セットがオーバーフィットする可能性が高いわけです。特にサンプル数が小さいときには、とても注意が必要です。

【失敗例】yの値を推定したいサンプルがモデルの適用範囲内に入るように変数選択と次元削減をすればいいのでは!?
これから書くことか過去の失敗例です。ご注意ください。 回帰モデルでもクラス分類モデルでも、あるデータセットに基づいてモデルが構築されたとします。そのモデルを用いて新しいサンプルの目的変数 y の値を推定するとき、新しいサンプルがモデル構築用...
[Pythonコード付き] テストデータのMAEをトレーニングデータから推定する方法を開発したので紹介します [金子研論文]
回帰分析において、新しいサンプルを推定するときの誤差の絶対値の平均値を推定するための指標を開発しました。イメージとしては、テストデータとしてサンプルがたくさんあるときの、モデルの適用範囲 (Applicability Domain, AD)...

 

対処法としては、たとえばクロスバリデーションの fold 数 (分割数) を小さくしたりとか、外部データのサンプル数を大きくしたりとかです。また、目的変数の情報を使わずに、事前に特徴量を選択しておく (自由度を減らしておく) こともあります。同じ値をもつサンプルの割合が大きい特徴量を削除したりとか、相関係数の絶対値が大きい特徴量の組の一つを削除したりとかですね。目的変数の情報を使わない、というのが重要でして、用いるとオーバーフィットの危険が出てきてしまいます。他には、PLS の最適成分数の上限値を小さくするなど、モデル構築手法における自由度を小さくするのも一つの手です。波長選択をするときや、時系列データにおける時間遅れを選択するときには、選択する領域の数を小さくすることもよいでしょう。

[Pythonコードあり] スペクトル解析における波長領域や時系列データ解析におけるプロセス変数とその時間遅れを選択する方法
遺伝的アルゴリズム (Genetic Algorithm, GA) を使って回帰モデルの推定性能がよくなるように、説明変数 (記述子・特徴量・入力変数) を選択する手法を以前解説しました。 今回は、スペクトル解析における波長選択と、時系列デ...

 

以上のように、モデルの予測精度を高めるタイプの特徴量選択手法を用いるときは、今あるデータセットに特徴量セットがオーバーフィットしないよう工夫して、用いるとよいでしょう。ただ、どんな工夫をしても、オーバーフィットを避けられないこともありますので、その場合は他のタイプの特徴量選択手法を用いるのがよいと思います。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

 

タイトルとURLをコピーしました