ウホウホゴリラッホ

主に勉強したことをまとめていきます。twitter:@pytran3

はじパタ 第2章

識別規則と学習法の概要

汎化能力を評価する」とは、学習データにないデータに対する予測能力を評価するということである。この章では主に手元にあるデータを学習データとテストデータに分ける方法をまとめる。

ホールドアウト法

最も単純な方法で実行時間も早い方法でもある。データを学習データとテストデータの二つに分けて汎化性能はテストデータに対するもので評価する。データの割合はtrain : test = 4 : 1とするのが良いらしいという風潮がある。導入としてはシンプルでわかりやすいが、学習に使えるデータがやや少なく後に紹介する方法を基本的には使っていく。

交差検証法 (Cross Validation)

データをk等分して一つをテストデータ、残りを学習データにして性能を検証する。この時テストデータの選び方はk通りあるため、それらのスコアの平均をその学習機の汎化性能とする。k個に分割する際にデータが偏る可能性があるため、より良い検証のためには分割の仕方を変えて交差検証法を繰り返す必要がある。
一番シンプルで使いやすい。とりあえずこれで検証するのが良さそう。

ジャックナイフ法 (Jack knife, leave-one-out)

交差検証法において、データの数とグループの数を等しくした場合をいう。一つを除いたすべてのデータで学習し、除いた一つでテストすることをデータ数分繰り返す。

ブートストラップ法

データからランダム抽出されたデータN,N^*を用いて真の誤識別率を推定する。N^*はブートストラップサンプルと呼ばれ、学習データとして用いられる。
真の識別率εとした場合に、学習データを第一項、テストデータを第二項とした時に以下の式で推定される。
 ε = \frac{1}{n} \displaystyle{\sum_n} \left( ε \left(N^*, N^* \right) - ε \left( N^*, N \right) \right) 真の識別率と学習データに対する識別率との差を推定するために、学習データにないデータの識別率を繰り返し求めている。

汎化性能と過学習

汎化性能とは未知のデータに対する予測性能のことである。そのため学習データに対する予測性能の最大化が必ずしも汎化性能の最大化とはならない。学習が進み学習データに関しては性能が向上、または維持しているにも関わらず汎化性能が悪化することを過学習という。また表現力が高すぎるモデルを使ってしまって汎化性能が上がらない場合にも過学習と呼ばれる。はじパタの例のように次数を上げすぎてしまうケースや線形学習器で良く識別できるのに非線形学習器を利用してしまうケースが該当する。両者は本質的には同じ状態のように見えるが、学習のしすぎ<=>表現力の上げすぎという違いがある。