パラメータチューニング、交差検証などのメモ


参考サイト:


そもそも・・・

  • 交差検証:モデルの汎化性能を評価
  • Grid Search, Randomized Search : パラメータチューニング



パラメータチューニングと交差検証

 訓練データとテストデータに分割し、訓練データで交差検証を行い、テストデータで汎化性能を見ようとすると、テストデータが一種類しか無いので、結果が偏る可能性がある。

そこで、交差検証をネストさせることにより、訓練データとテストデータを何度も分割させることで、テストデータを複数種類用意し、汎化性能を見る。ただし、計算コストが跳ね上がるので注意!

交差検証のネストについては、『sklearnのgrid_searchでパラメータチューニングしつつcross_val_screで交差検証を行うコード』に記載



交差検証種類

  • KFold :
     データセットをKグループ(フォールド)に等しく分割。分類データに偏りがあると、各グループのクラスに偏り(グループ1にはクラスAがあるが、グループ1にはないなど)が発生し、学習がうまくいかない場合がある。KFoldの回数は、どれが適切かはハッキリ言えないらしく、TitanicやHouse Pricesでは、5回が多かった感じ。いくつかのサイトでは、8回〜10回位を勧めているのが見られた。

  • Stratified KFold :
     例えばクラス分類がA-90%, B-10%などのように不均等の際に、どのグループもA-90%, B-10%の比率になるようにクラス比率のバランスを取りながらデータの分割を行う。

  • Repeated KFold :
     KFoldをしてされた回数分リピートする分割法。KFlodのサンプルの分割法は1リピートにつきランダムで変わるので、毎回のリピートでサンプルが同じようなグループになることはない。

  • 1つ抜き交差検証(leave-one-out) :
     データ全体のうち1つだけをテストデータとする方法。その後、テストデータと訓練データを入れ替えて繰り返し、全てのケースがテスト事例となるように検証を繰り返す。(ジャックナイフ法とも呼ばれる)。全てのデータを一つ一つテストに使うので、データが大きいと処理に時間がかかる。

                                                                                          参考サイトより         



パラメータチューニング時のPipelineの利用

パラメータチューニング時にデータリークを防ぐため、データ分割毎にstandardizationを行うようにPipelineを利用する例。(ElasticNetによる回帰)                                                          

機械学習Tips保管庫

データ解析、機械学習のための学習内容の保管庫。復習用。

0コメント

  • 1000 / 1000