koji/メガネ男の日誌

日々の学び、活動状況を記録します。仕事のことは少なめ。

「はじめてのパターン認識」を読む 第2章 識別規則と学習法の概要 2項 汎化能力

f:id:kj_man666:20200506082143j:plain

はじめてのパターン認識 を1章ずつ読んでまとめたいと思います。

2章は長いので、半分に分けています。

前半はこちら

学習データとテストデータの作り方

<用語解説>

学習

 学習データに対する識別関数の出力値と、教師データとの誤差が最小になるように、識別関数のパラメーターを調整すること

汎化能力

 未知のデータに対する識別能力

汎化誤差

 未知の学習データに対する識別関数の出力値と教師データとの誤差誤差

母集団

 データの集合

真の分布

 母集団の d次元特徴の分布のこと。p で表される

偏り(バイアス)

 学習データp_Lとテストデータp_Tの各特徴の平均値や分散に生じているズレのこと

 学習データとテストデータは、あくまで真の分布からランダムでサンプリングされているため、偏り(バイアス)をゼロにすることは非常に困難である。

真の誤り率

 母集団から学習データを抽出して識別関数を設計し、同じ母集団から抽出したテストデータを用いてテストした際の誤り率のこと

再代入誤り率

 母集団から学習データを抽出して識別関数を設計し、テストの際も学習データと同じデータを用いて測定した誤り率のこと

 再代入誤り率が大きい場合は、そもそも識別機の能力が足りていないことがわかる。

手元にあるデータを、学習用とテスト用に分割する手法

(1)ホールドアウト法

 手元のデータを二つに分割し、一方を学習p_Lに使い、もう一つをテストp_Tのために使い、誤り率を推定するために使用する手法

f:id:kj_man666:20200510141841p:plain

Pythonで簡単にホールドアウト法用のデータ分割をする方法 | WATLAB -Python, 信号処理, AI-

 学習につかうデータを多くすればテスト用のデータが減少するため、学習精度はよくなるが性能評価bigdata-tools.comの精度は悪くなる。

 テストに使うデータを多くすれば学習用のデータが減少するため、学習そのものの精度が悪くなる。

 真の誤り率、再代入誤り率、ホールド誤り率の間には、下記の関係が成り立つ。

 再代入誤り率の期待値 =< 真の誤り率 =< ホールドアウト誤り率

 pythonだと、train_test_split を使って実装しますね。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)

scikit-learnでデータを訓練用とテスト用に分割するtrain_test_split | note.nkmk.me

(2)クロスバリデーション法(交差確認法)

 手元の各クラスのデータをそれぞれ m 個のグループに分割し、m - 1 個のグループのデータを使って識別機を学習し、残りの一つのグループのデータでテストを行う。

 これを m 回繰り返し、それらの誤り率の平均を性能予測値とする手法。

f:id:kj_man666:20200510144704j:plain

クロスバリデーションとグリッドサーチ(備忘録) - Qiita

 手元にあるすべてのデータを学習とテストに利用するので、よい性能予測を行える。

 ただし、分割のやり方次第では偏りが生じてしまうので、分割のやり方を変えて考査確認法を繰り返し、その平均で誤差識別率を予測することが必要。

pythonですと、cross_val_score を使いますね。

from sklearn.model_selection import cross_val_score

# cv=5で分割数を指定
scores = cross_val_score(forest, X, y, cv=5)

(3)ジャックナイフ法(一つ抜き法)

 データ全体のうち1つだけをテストデータとする方法。

 その後、テストデータと学習用データを入れ替えて繰り返し、全てのケースがテスト事例となるよう検証を繰り返す。

f:id:kj_man666:20200510145318p:plain

機械学習、ディープラーニングでの学習データとテストデータの分割手法について - AI人工知能テクノロジー

(4)ブーストラップ法

 母集団となるデータがあるときに,母集団から重複を許してランダムにいくらかデータを取り出して再標本化をする手法

ブートストラップサンプリング(Bootstrap Sampling)法とそのscikit-learnを用いた実行 - Qiita

汎化能力の評価方法とモデル選択

<用語解説>

モデル選択

 パラメータの数を変え、テストデータに対する誤り率がもっとも小さくなるパラメータを選択する方法

平均2乗誤差(MSE Mean Square Error)

 線形回帰モデルの性能を数値化する効果的な手法の一つで、実際の値とモデルによる予測値との誤差の平均値。

平均二乗誤差 MSE:Mean Square Errorが楽々わかる!回帰モデルの性能評価 | AIZINE(エーアイジン)

バイアス・分散トレードオフ

 バイアス(偏り)を小さくすれば分散(バリアンス)が大きくなり、分散(バリアンス)を小さくすればバイアス(偏り)が大きくなる現象。

 汎化能力を決める大きな要因となる。

バイアス(偏り)

 真の値(学習データ)と平均予測値のずれの大きさ

 バイアスが大きいとはモデルの予測がかなり外れていることを表し、バイアスが小さいということはモデルがかなりの精度で予測できている

分散(バリアンス)

 予測値のばらつきの大きさ

 バリアンスが大きいと学習データごとに予測値が大きく変化することを表し、バリアンスが小さいと学習データにかかわらず予測値がほぼ一定になる

【機械学習】バイアスとバリアンスの違いを分かりやすく | pekochin

過学習

 学習(訓練)データにあまりに適合しすぎて、学習(訓練)データでは正解率が高いのに学習(訓練)データとは異なるデータ(例えば、評価データ)では正解率が低くなってしまう、つまり、学習(訓練)データだけに最適化されてしまって汎用性がない状態に陥ること

AIが学習しすぎる?「過学習」問題とそれを抑制する方法 | AI入門ブログ

 学習データを使ってパラメータの調整をし、テストデータを使って誤り率を評価しても、誤り率が目標よりも小さくならない場合は、学習だけではどうすることはできないので、識別関数を変える必要がある。

過去のまとめ

「はじめてのパターン認識」を読む 第1章 はじめに - koji/メガネ男の日誌

「はじめてのパターン認識」を読む 第2章 識別規則と学習法の概要 1項 識別規則と学習法の分類 - koji/メガネ男の日誌

以上になります、最後までお読みいただきありがとうございました。