y-randomization(y-scrambling)の結果が悪いとき、どうすればいいのか?

シェアする

回帰モデルやクラス分類を構築したいとき、扱うデータセットごとに適した手法は異なるため、今のデータセットに適した手法を選択するため、手法ごとの予測性能を評価します。トレーニングデータとテストデータに分けて、トレーニングデータで構築されたモデルを用いてテストデータを予測したり、ダブルクロスバリデーションによって得られた予測結果を用いたりして評価し、最終的にどの手法でモデルを構築するのか決めます。手法を決めたあとは、トレーニングデータとテストデータを合わせた、すべてのサンプルを用いて、その手法でモデルを構築します。

最終的に構築されたモデルをどのくらい信用してよいのか検証するため、y-randomization (y-scrambling) が行われます。詳細はこちらをご覧ください。

y-randomizationで過学習(オーバーフィッティング), Chance Correlation(偶然の相関)の危険度を評価!
回帰モデル・クラス分類モデルの評価 のなかで、yランダマイゼーション (y-randomization) についてです...

y-randomization により、データセット、すなわちサンプルと特徴量、そして選ばれた手法により、偶然の相関 (chance correlation) の影響をどの程度受けたモデルが構築されるのか検討できます。例えば、y-randomization 前の r2 が 0.9 で、y-randomization 後の r2 が 0.3 のとき、偶然の相関の影響が 0.3 あるため、実際は 0.9 説明できたモデルでも、本質的には 0.6 (0.9 – 0.3) しか説明変数 x から説明されていないと考えられます。

では、y-randomization 前の r2 が 0.9 で、y-randomization 後の r2 が 0.8 のように、y-randomization の結果がよくないとき、どう対処したらよいのでしょうか?

そもそも y-randomization で結果が悪くなる (手法以外の) 要因は主に二つあります。サンプル数が小さいことと特徴量の数が大きいことです。そのため、基本的にはサンプルを増やすことや特徴量を減らすことを考えます。サンプル数を増やすには、追加実験をしないといけないなど難しい場合には、特徴量を減らすしかありません。

ただ、特徴量を減らすとき、目的変数 y を用いた特徴量選択はしないほうがよいです。特に、y の予測精度を上げるように (例えばクロスバリデーションの結果がよくなるように)、特徴量を選択するとき、偶然の相関が考慮された上で特徴量が選択されることになります。ノイズなどで偶然 y と相関のある特徴量が選択されてしまうわけです。選択された特徴量により、本質的に y を説明できたのか、それとも偶然の相関によって説明できたのか、区別できません。

そのため、基本的には y を使わずに特徴量を選択することになります。化学的・物理的な背景やドメイン知識に基づいて特徴量を選択したり、同じ値をもつサンプルの割合や相関係数によって特徴を削除したりします。

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

そもそも、y-randomization の結果をよくすることが目的ではありません。y の予測精度を上げるように特徴量を選択してしまうと、y-randomization の結果はよくなりますが (y-randomization 前後の r2 の差は大きくなりますが)、よくなったからといって偶然の相関を排除できているわけではありません。

変数選択・特徴量選択のときの意識は、モデルの予測精度を上げることより、不要な変数・特徴量を削除することです
回帰モデルやクラス分類モデルの予測精度を上げるためモデルを解釈するため色々な目的で変数選択 (特徴量選択) をしていると思います。相関係数に...

目的を見誤らないように、データ解析・機械学習のやり方や戦略について考えるようにしましょう。

以上です。

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

シェアする

フォローする