回帰モデルやクラス分類を構築したいとき、扱うデータセットごとに適した手法は異なるため、今のデータセットに適した手法を選択するため、手法ごとの予測性能を評価します。トレーニングデータとテストデータに分けて、トレーニングデータで構築されたモデルを用いてテストデータを予測したり、ダブルクロスバリデーションによって得られた予測結果を用いたりして評価し、最終的にどの手法でモデルを構築するのか決めます。手法を決めたあとは、トレーニングデータとテストデータを合わせた、すべてのサンプルを用いて、その手法でモデルを構築します。
最終的に構築されたモデルをどのくらい信用してよいのか検証するため、y-randomization (y-scrambling) が行われます。詳細はこちらをご覧ください。
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 を使わずに特徴量を選択することになります。化学的・物理的な背景やドメイン知識に基づいて特徴量を選択したり、同じ値をもつサンプルの割合や相関係数によって特徴を削除したりします。
そもそも、y-randomization の結果をよくすることが目的ではありません。y の予測精度を上げるように特徴量を選択してしまうと、y-randomization の結果はよくなりますが (y-randomization 前後の r2 の差は大きくなりますが)、よくなったからといって偶然の相関を排除できているわけではありません。
目的を見誤らないように、データ解析・機械学習のやり方や戦略について考えるようにしましょう。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。