シリーズ・全3本
前処理と特徴量はどこまで効くのか
前処理が大事だという話はどこでも聞きますが、どの工程がどれだけ精度を動かすのかを数字で見た人は多くありません。このシリーズでは、標準化のような基本の作法から、特徴量の作り込み、日本語テキストの語の絞り込みまでを一つずつ入れ外しして、効くもの、効かないもの、かえって邪魔になるものを切り分けています。表形式データと日本語テキストの両方を対象にしているので、モデルの種類によって効き方が変わるかどうかも見ています。
このシリーズで確かめていること
- 特徴量は足せば足すほど精度が上がるのか
- ライブラリの既定値のまま使うと、どこで損をするのか
- 日本語テキストの前処理は、分類の精度をどれだけ動かすのか
- 同じ処理でも、線形モデルと決定木ベースで効き方は変わるのか
連載順に読む
第1回特徴量の「全部盛り」はGBDTの精度を下げるか—5手法を実測比較
特徴量を全部盛りにしても、GBDT(LightGBM)の held-out 精度は今回は壊れませんでした。数値信号が豊富な合成データではむしろ改善する一方、実データ adult では精度が動かないまま特徴量数と学習時間だけが数倍に増えました。合成2種と実データ2種でablation比較し、手元で試せる実装例つきで記録します。
第2回KNN・MICEの欠損値補完を実測—効き目は下流モデルで大きく変わる
KNNImputerやMICEのような手の込んだ補完が中央値補完より効くかは、補完のあとに学習するモデルで変わりました。線形モデルでは差が残る一方、LightGBMでは埋めた値の誤差を3割以上減らしても得点はほとんど動きません。MICEが想定どおりの欠損(MAR)でかえって悪化した予想外れも含め、2データセット・欠損機構3種・欠損率3水準・seed10本で実測しました。コピペで動くサンプルつき。
第3回sklearnの既定値で精度が下がる場所を6データで実測—最初に疑うのはスケーリング忘れ
scikit-learnを既定のまま使うと精度が下がる箇所を、6つの分類データで比較しました。スケールがバラバラなwineではSVMの正解率が標準化だけで0.672から0.983へ上がる一方、元から同尺度の手書き数字ではわずかに下がります。max_iterとCの調整では改善を確認できませんでした。