科学の箱

科学・IT・登山の話題

機械学習

Pythonではじめる機械学習 – Chap05 – Model Evaluation and Improvement

投稿日:2019年12月21日 更新日:

Chapter 5. Model Evaluation and Improvement

学習モデルの評価

  • 定量的なモデルの評価は教師付きモデルが主になる。
  • 教師なしモデルは定性的なアプローチで評価することになる。

教師付きモデル評価の手順

  1. train_test_split()により訓練データと検証データに分割する
  2. fit()によりモデルを生成する
  3. scoreを確認する→高いほどよいが過学習にならないように注意する

モデル評価

  • 訓練データのスコアを高くすることが目的ではない。モデルを一般化させることが重要である。
  • クロスバリデーション
  • scoreにより提供される正解率及びR2
  • グリッドサーチ

5.1 Cross-Validation

クロスバリデーションとは

  • 生成されたモデルについて一般化したときの性能を評価する
  • k-fold クロスバリデーションが有名

5.1.1 Cross-Validation in scikit-learn

cross validationの手順

  • モデルの生成
  • cross_val_score()で各foldのスコアを確認する
  • 各scoreの平均および分散を確認する

cross validationスコアの分散が高い理由

  • 分割されたデータに偏りがある→実際にデータを見てみてどのような偏りがあるかを確認する
  • サンプルされたデータ量が少ない→小さいFoldで試してみる

5.1.2 Benefits of Cross-Validation

Cross validationのメリット

  • ランダムの結果として学習データ→分類難しい、テストデータ→分類簡単の場合、テストデータの正解度はかなり高くなる。
  • ランダムの結果として学習データ→分類簡単、テストデータ→分類難しい場合、テストデータの正解度はかなり低くなる。
  • Cross validationにより上記のランダムデータにより正解度は平均化される。
  • one time の検証だと75%のみが学習に用いられる。foldを増やすと、例えば10回では90%まで上げることができる。

Cross validationのデメリット

  • コストが高い

Cross Validationで注意すべきこと

  • CVはモデルを生成するわけではない。
  • 内部的にはモデルが生成される。しかし目的は学習データに対して生成されたモデルがどの程度適合するかを確認するだけである。

5.1.3 Stratified k-Fold Cross-Validation and Other Strategies

KFoldはデータがソートされたままで分割される

  • あらかじめデータがソートされていると正しい割合を反映しない
  • Stratified Cross Validationを用いるか、KFoldでShuffle = Trueとする。

Leave one out

  • 一件を除きすべてを学習データにする。一件はテストデータになる。
  • テストデータの一件をランダムに変えながら交差検証を実行する
  • 計算コストは高くなるが、検証結果はホールドアウト、交差検証よりよくなる?

交差検証におけるグループ分割の方法は多種ある

  • ただし一般的に使われるのはKFold, StratifiedFold, GroupKFoldである。

5.2 Grid Search

モデル構築の手順

  • モデルが一般化できるかを評価=交差検証
  • モデルのパラメータを改善

5.2.2 The Danger of Overfitting the Parameters and the Validation Set

Grid Search

  • パラメータの評価にテストデータを用いる→新しいデータに対して同じ正解率が出るかは不明、過学習になっている可能性が高い。
  • 学習データによるモデルの生成→テストデータによる評価→選択→これによりテストデータに対して最適化されたモデルが選択される。モデルはテストデータの情報を含んでいるために、新しいデータに対しての適合はよくわからない。

5.2.3 Grid Search with Cross-Validation

Grid SearchとCVを組み合わせる

  • 複数モデルを構築するので検証データのスコアを平均できる
  • データに極端に依存した結果とはならない

Grid SearchとCVは同じ文脈で使われることが多い

  • 「交差検証」という用語をGrid Searchも含めて使うことが多い
  • CVはあくまでも別データに対してモデルを評価する手法である
  • CVではパラメータの探索は行わない

5.3 Evaluation Metrics and Scoring

confused matrixにより評価する

  • accuracyのみではモデルに対する正しい評価ができない
  • accuracy, recall, precision, f1を含めた評価が重要である。

threshholdを変更して分類を調整する

  • がん患者の発見ではrecallを上げる、つまりFalse Positiveを受け入れることが重要である。
  • この調整はthreshholdで実施する
  • 正しいthreshholdを見つける定量的な方法はない

Operating point

  • ビジネス要件に従ってrecallを決定する
  • ただし新しいモデルにおいてrecallおよびprecisionのトレードオフがどのようになっているかはわからない
  • そこでprecision recall curveを利用する

Receiver operating characteristics curve(ROC)

  • Recall = True Positive Ratio
  • ROC = True Positive Ratio against False Positive Ration

5.3.3 Metrics for Multiclass Classification

多クラス分類の評価は基本はバイナリ分類と同じ

  • 正解率
  • 混同行列

5.3.4 Regression Metrics

線形モデルの評価は分類に比べると単純である

  • score関数を利用する
  • R2を利用する

5.3.5 Using Evaluation Metrics in Model Selection

GridSearchCVのcross_val_score()におけるモデル選択の基準

  • scoringパラメータのデフォルトはaccuracyである。
  • このパラメータを変更することで評価に用いる基準を変更できる

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

irisデータについて簡単な機械学習をしてみる

irisデータを使って簡単な機械学習をしてみる。 ここで説明している内容は以下になる。 データの読み込み、前処理 トレインデータと検証データへの分割 モデル選定 モデル構築および検証 データの読み込み …

no image

クラスタリング

Rによるクラスタ分析の実行 県別の持家率と自家用車普及率からクラスタ分析を実行し似た県を探してみる。。 データソース 持家と自家用車普及率のデータは下記から取得する 持家普及率のデータはこちらから取得 …

no image

conjoint分析の資料

マニュアル conjointパッケージ caFactorialDesign Rでconjointパッケージを利用した例 Rでコンジョイント分析 Rでコンジョイント分析 |極めて個人的なメモ コンジョイ …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – ロジスティック回帰

ロジスティック回帰 確率を得るために パーセプトロンの判別式により確率をとることはできない。パーセプトロンのヒンジ損失は正負のみを判断し、間違っている場合だけパラメータの更新をする。つまりぎりぎりで正 …

no image

Mahout in Action/chap2

2.1 レコメンドには2種類ある。 collaborative filtering contents based filtering collaborative filteringではコンテンツの内容 …

2019年12月
« 11月   4月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

side bar top



アーカイブ

カテゴリー