13 特徴量と前処理をどう選ぶべきか

前処理, 特徴量変換という言葉はだいぶ曖昧に使われて, コンセンサスのある定義も存在しません. しかし, これは私の個人的な考えですが, 以下のように使用する目的によって分けることができます. ただし, 完全に分割できるわけでなく, 複数の役割を同時に担っているものもあります.

  1. データをアルゴリズムに適用できる形式に変換すること
  2. 数値計算の安定化
  3. モデルをデータへ近似させる補助

これまで TD や pandas で解説してきた範囲は (1) に対応します. 多くのアルゴリズムとその実装は, 入力データを数値の配列の形式で受け取ります. あちこちにセル結合のあるエクセルファイルや, 自然言語で書かれた乱雑なテキストは受け付けません. これは機械学習の理論からだいぶ離れた話になるため, ここではこれ以上触れません.

数値特徴量の正規化 (normalize, min-max 変換)や標準化 (standardize) は変数のスケールを統一することで数値計算の桁落ちを減らしたり, 最適化の計算の収束を早める効果があります. 具体的な話は 10.2 章で言及したとおりです. これは (2) の観点です.

一方で, 正則化をする際には, 正規化や標準化で変数の平均とスケールを揃えておかないと, 正則化の強さが特徴量ごとにばらばらになり, 歪んだ結果を生み出します. 理論上は特徴量ごとに異なる強さの正則化を与えることも可能ですが, そのための実装や計算処理は非効率です. また, これは回帰モデルの話になりますが, 最小二乗法は目的変数の分布が正規分布, あるいはそれに近い対称分布になることを暗に仮定しています. そのため, 目的変数のヒストグラムがべき分布に近い形状を示すならば, 目的変数を対数変換Box-Cox変換によってより対称な分布に変換すると当てはまりが改善される場合がよくあります. これらは, 実際のデータに含まれる特徴量や目的変数の分布を, 使用するモデルが想定している分布に近づけるための変換処理と言えます. つまり, モデルと最適化アルゴリズムだけではできない, データへの近似を手動で行うということです. これが (3) の意味です. この (3) が最も選択肢が多く, 実際の作業量も最も多くなります.

もちろん, 説明書通りの前処理をしなかったのに, より良いパフォーマンスを示すことも時にはあります. しかし, 理論に従わず野放図にいろいろなモデルを試すことは, モデルの改善の余地がどこにあるのかをわかりにくくしてしまいます. よほど計算リソースに余裕があるか, 逆に全くリソースのない切羽詰まった状況で博打するのでない限り, 可能性を1つずつ確認するほうが良いと私は考えます.

以降では, 多種多様な変換処理がそれぞれどういう性質を持ち, どういう場面でどう効果を発揮できるのかのヒントを与えます.