機械学習モデルの検証の手法の種類とその注意点について
コラビットの川原です。
今回は、機械学習モデルの検証の手法の種類とその注意点についてについて書きます。
データの分け方
3種類の分け方ができます。
学習用、検証用、テスト用です。
まず、モデルの学習用に使う学習用のデータ、ハイパーパラメータ等のチューニングのための検証用データの2種類ですが、この2種類を用いて過学習のないバランスの良い結果のモデルを作ります。
そして、そのモデルの精度をテストするためにテスト用データを用います。
前者二つでモデルのチューニングをを行い、それに全く関わっていないテストデータで精度を確認することにより、汎化性能の高いモデル作りができます。
モデルの検証方法の種類
検証方法についても色々あります。
ホールドアウト法
一番実装が簡単な方法です。
単純に学習データと検証用データ、そしてテストデータを分けてモデルをチューニングする方法です。
例えば、6:2:2の割合で学習用、検証用テスト用と分けたりします。
これはデータ数の規模が多い場合に適していますが、少ない場合には向いていません。
k分割交差検証
まず、テストデータだけ分けます。
その残りで、k個に分割します。
それをkパターン作成します
仮にk=3とした場合は、下記のような感じです。
1回目: |●|●|○|2回目: |●|○|●|3回目: |○|●|●|
黒丸と白丸で分けてみましたが、黒丸が学習データで白丸が検証用データです。
3パターン全てでモデルのチューニングを行い、その中の平均や中央値などのモデルを選びます
そのモデルにたいして、テストデータで精度をテストします。
シャッフル式k分割交差検証
k分割交差検証の前にデータのシャッフルを行い、p回繰り返します。
その中で、良いモデルを選択し、テスト用データで精度テストする方法です。
k分割交差検証といっしょでデータの規模が少ない場合に適しています。
リーブワンアウト法(ジャックナイフ法)
まず、テストデータだけ分けます。
その残りで、学習用データの件数がn-1件で検証用データの件数が1件となるように、データをnパターン分作成します。
仮にn=10とした場合は下記のようになります。
1回目: |●|●|●|●|●|●|●|●|●|○|2回目: |●|●|●|●|●|●|●|●|○|●|....10回目: |○|●|●|●|●|●|●|●|●|●|
これは本当にデータの規模が少ない場合に適しています。
注意点
- 学習用と検証用、テスト用ではデータに偏りがないように注意する。例だが、例えば2値分類モデルの場合、学習用データに一方の答えのものばかりが偏っていて、検証用にもう一方の答えのものが偏ってしまうと、良いモデルが作れないことは容易に想像できる。
- 時系列データの場合はシャッフル時には要注意。検証用およびテスト用データは時系列が新しいデータであるべき。
- データの重複には注意。データはユニークにすること
- データの規模によって検証方法の選択を決めること、十分な数があればホールドアウト法で良いかもしれないが、少ない場合はちゃんと交差検証やリーブワンアウト法でチューニングするべき。
以上のことに気をつけてよりよいモデルを作成しましょう!