機械学習において汎化性能はとても大事。
その汎化にかかわる評価方法の一部をご紹介。
交差検証
モデルの汎化性能を評価する手段。2種紹介。
・k-分割交差検証
回帰によく用いられる。変数kに用いられる数字は5~10が多い。
scikit-learnではmodel-selectionモジュールのcross_val_score関数としてある。
他の交差検証の分割手法も実装されている。
1、5分割の検証を行う際データを5つに分割する。
2、モデルを訓練する。1の最初の分割をテストセットとして用い、残りの2~5の分割を訓練セットとして用いる。
3、テストセットに用いる分割を1つずつずらして繰り返し、分割結果に対して精度を計算
・層化k分割交差検証
クラス分類に用いられる。基本はk-分割交差検証と似ている。
こちらもscikit-learnにあり。
クラス分類はデータが分割した際同じクラスのデータが固まってしまう可能性がある。その際1クラス内ずつで分割を行ってくれる。
グリッドサーチ
お次がパラメータをチューニングしてモデルの汎化性能を向上する方法。
そこに最も用いられているものがグリッドサーチ。
その為にはモデルの需要なパラメータに対して最良の汎化性能を与える性能を見つける必要がある。
そこに最も用いられているものがグリッドサーチ。scikit-learnに実装されている。
すべてのパラメータのすべての組み合わせに対して試行してくれる便利機能。
注意点
交差検証に関して注意すべき点が1つ。
(グリッドサーチ時でも交差検証を用いる際がある!)
使用したテストデータは利用済みとなる。
つまり同じデータを使ってモデルの性能を評価すると過度に良い検証結果がでてしまう。
その危険を避ける手法の1つは、データをまず3分割にすること。
訓練セット、検証セット、テストセットである。
検証セットで最良のパラメータを選択、訓練データと検証データでモデルの再構築、テストデータで評価すればいい。
この点には気を付けなければならない。
参考文献
・Pythonではじめる機械学習ーscikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
(著者 Andreas C.Muller、Sarah Guido 発行所 株式会社オライリー・ジャパン)