Designated Survivor in The Era of Artificial Intelligence

備忘録的なブログです。主に統計学・機械学習の技術について学習したことをまとめます。

はじめてのパターン認識 第2章

はじめに

本章の主な話題は - データから識別規則を学習する方法の概略
- 汎化能力とはなにか?
- 手元のデータセットで汎化能力を評価する方法
- 過学習/バイアス・分散トレードオフ です。

汎化性能は、機械学習を実際の問題に適応する際に非常な重要な指標となってくるので、確実に理解する必要があります。

2.1 識別規則と学習法の分類

識別規則とは、入力データからクラスへの写像のことです。

入力データをどのようにクラスに写像するかによって、様々な手法が存在します。
- 事後確率を最大にするクラスに分類
- 距離によって分類(k最近傍法など)
- 関数値による方法
- 決定木による方法

本章では、線形識別関数をクラス分類に適用する場合を念頭に汎化性能や過学習といった概念を説明しています。

まず学習法には、教師あり学習教師なし学習という二つが存在します。

教師あり学習とは、入力データに対して正解データがひも付けられているような場合に使用する学習法です。
教師なし学習とは、入力データに対して正解データがひも付けられておらず、似た性質をもつデータをまとめて自動的にクラス(似たデータの塊)を生成することを目的とする学習法です。

実は筆者は機械学習の勉強を始めた当初、恥ずかしいことにk最近傍法とK-平均法を混同していました。

k最近傍法は教師あり学習です。学習データ内の各入力データには正解クラスがひも付けられています。 新しいデータが入力されたら、入力データの近傍k個のデータがどのクラスに属しているかに基づいてクラス分類を行います。

K-平均法はクラスタリング教師なし学習)の手法です。学習データには正解クラスはひも付けられていません。 各データはk個のクラスタに分類され、そのクラスタ内の平均ベクトルを用いてクラス分類が行われます。

2.2 汎化能力

学習データを用いて識別関数のパラメタを学習したあと、学習された識別関数が未知のデータに対しても正しく識別を行えるかどうかを確認する必要があります。この未知のデータに対する識別能力のことを汎化能力と呼びます。

誤り率

汎化能力の推計法について理解するためには、まず誤り率について知っておく必要があります。

誤り率とは、ある学習データ D_ Lで設計された識別規則を、学習データとは別のテストデータ D _ Tに適応した時の誤りの割合のことで、以下のように表されます:


\varepsilon (p _ L , p_T)

 p _ Lは学習データの分布、 p _ Tはテストデータの分布のことです。

真の誤り率とは、母集団を学習データとテストデータに用いた時の誤り率のことで、以下のように表されます:


\varepsilon (p , p)

 pは母集団の分布。

再代入誤り率とは、学習データとテストデータが同じ時の誤り率のことで、以下のように表されます:


\varepsilon (p _ L , p _ L)

学習データとテストデータの分け方

1 ホールドアウト法

データセットの一部を学習データ、残りをテストデータとして用いる方法です。この方法で得られる誤り率のことをホールドアウト誤り率といい、以下の関係が成り立つことが知られています:


E_{D _ L} \{\varepsilon (p _ L , p _ L)\} \leq \varepsilon(p, p) \leq E_{D _ T} \{\varepsilon(p _ L, p _ T) \}

ここで、 E _ {D _ T} は多数の学習データを用いて設計して計算した再代入誤り率の期待値を、 E_{D _ T}は一つの学習データセットで構築した識別規則に対して多数のテストデータセットを適用してもとめたホールドアウト誤り率の期待値を表しています。

2 交差確認法

データセットをM個に分割し、M - 1個分のデータを学習データセットとして使用し、残りをテストデータして用いる方法です。そして求められた誤り率の平均を性能評価の指標として用います。

3 ブートストラップ法

ブートストラップサンプリングを用いて、再代入誤り率のバイアスを推計する方法です。

再代入誤り率は学習データとテストデータが同一なので、真の誤り率とくらべて低く出てしまいます。これをバイアスと呼びます。
ブートストラップ法では、ブートストラップサンプリングを用いてこのバイアスを推計し、その補正を行います。

ブートストラップサンプリングとは、例えばN個のデータが手元に存在する場合、そのデータセットに対してN回の復元抽出を行い学習データを構築する方法です。
復元抽出とは、あるデータを抽出した後、そのデータを再びデータセットに戻してから次の抽出を行うということです。したがって、1つのデータが複数回抽出される可能性があります。

手元にあるデータセットの集合を N、ブートストラップサンプリングされたデータの集合を N ^ *とすると、バイアスは以下のように計算できます:


bias = \varepsilon (N ^ * , N ^ *) - \varepsilon (N ^ * , N)

ここで、 \varepsilon (N ^ * , N ^ * ) は再代入誤り率なので、 \varepsilon (N ^ * , N ^ * ) \leq \varepsilon (N ^ *,  N ) という関係が成り立ち、 bias \leq 0となります。

ブートストラップサンプルを多数生成し、それによって得られる誤識別率の平均を用いて、真の誤識別率を推計することができます。


\varepsilon = \varepsilon (N , N) - \overline{bias}

モデル選択とバイアス・分散トレードオフ

誤識別率を推計する手法はこれまでで説明しましたが、誤識別率が目標より小さくならない場合はどうすれば良いのでしょうか?
この場合にはモデルを変更することが考えられます。モデルを複雑なものに変更すればモデルの表現能力が向上するので、誤識別率の低下が望めます。
本章では線形回帰を例にモデル選択とバイアス・分散トレードオフについて説明しています。

線形回帰の性能を測る指標としてMean Squared Errorがよく用いられます。


MSE_D = E_D \{ (y(x ; D) - h(x))^2 \}

 y(x ; D)は学習された線形関数、 h(x)は推計したい信号成分、 E_D { } は多数の学習データを用いて学習を行った場合の期待値を表しています。

では、バイアス・分散トレードオフとは何のことでしょうか?
詳細は本に書いてあるので省きますが、イメージは以下のようなものです。

  • バイアス:関数がどれだけデータにフィットしているかを表している指標。バイアスが小さければ小さいほど、学習データへの当てはまりがよいことを表しています。
  • 分散:複数のデータセットで学習を行う場合を考えます。分散はそれぞれのデータが学習された関数がどれだけお互いに異なるかを表しています。分散が大きければ、服数の学習データセットで学習した際、データセットごとに推計されるパラメタの値が違ったものになると予想される。

分散とバイアスはトレードオフの関係にあります。バイアスを小さくしようと次数を大きくすると分散が大きくなり、分散を小さくしようと次数を小さくするとバイアスが大きくなります。

MSEを分解すると分散とバイアスのトレードオフがわかりやすくです。


E_D \{ (y(x ; D) - h(x))^2 \} = (E_D \{y(x ; D) \} - h(x) )^2 + E_D \{ (y(x ; D) - E_D \{y(x ; D) \} )^2 }

第1項はバイアスを、第2項は分散を表しています。

最適なモデルを選択するためには、バイアスと分散のトレードオフを考慮して、テストデータでのMSEが最小となるモデルを選択する必要があります。

おわりに

技術ブログ第二回目です。長く書きすぎました。
次回からはメリハリをつけて書きたいと思います。