Hold-out
衛宮さんちの今日のごはん#10 のWeb最速放送が始まるまで勉強
と言いつつ時間がきてしまったので先に視聴
壁走り、花の作画がすごすぎる、そして腹減る
これからも残業しなければ勉強時間は確保できそう
Hold-out
- load_breast_cancer(脳の癌のデータ)に対してHold-outで識別
- データセットの数は約500個
- 次にMNISTという手書き文字のデータセットに対してHold-outで識別
- MNISTは70,000個のデータ、9クラスのデータセット
- MNISTは最初の60,000個が学習データ、10,000個がテストデータと決まっている
- つまり60,000個の中で検証データを更に分け、精度を上げる必要がある
- 試しに60,000個を学習させると、識別器によっては1時間たっても終わらない
- 60,000個もデータがある場合は、Hold-outでも工夫が必要
Hold-out Stratified
- 学習データ、テストデータのクラスバランスが悪い場合を確認するため、極端な例としてデータセットの95%を学習データ、5%をテストデータとしてみる
- ShuffleSplitでデータセットを分割し、クラスバランスを確認すると偏りが見える
- そういった場合はStratifiedShuffleSplitを使用する
- そうするとクラスバランスを保ったまま学習データ、テストデータに分けてくれる
学んだこと
- 前日で学んだ、データセットの数に対しての分割方法について、コードを動かして「あー本当に計算リソースによっては時間かかりすぎて無理だな」と実感
- StratifiedShuffleSplit すごい
- sklearnからimportするだけでStratifiedを一発で出来てしまうなんて便利すぎる