はじめに
はじめてのパターン認識 を読み進めて理解した内容を章ごとにまとめていきます。随時アップデート予定。
各章のまとめ
2.1 識別規則と学習法の分離
はじめてのパターン認識では、回帰は扱わず、識別問題のみを扱う。
2.1.1 識別規則の構成法
- 識別規則は入力データからクラスへの写像
- 写像の実現方法は識別規則によってさまざま
- 関数値の正負
- ダミー変数表現
- 事後確率の最大値
- 決定木の終端ノード
- 写像の実現方法は識別規則によってさまざま
- 写像とは?
- 2つの集合があるとき、一方の集合の要素を他方の集合の要素に結びつける対応関係
- 1つの集合を入力データ、もう1つの集合をクラスを考える
- 機械学習とは結局、入力を出力に移す写像そのものを自動的に取得する手法 と考えてよい
2.1.2 教師付き学習
- 識別規則の学習
- 識別規則は、入力データ(特徴ベクトル)からクラスへの写像を $y=f(x)$ という関数を用いて表現するが、この $f()$ を学習データを用いて決めること
- 学習データ
- 入力データとそのクラスを指定したデータを対にしたもの
- 教師データ
- クラスを指定したデータ
- 2クラスの場合には、$t$ $\in$ { $-1,+1$ } で表す
- クラスが3以上ある場合は、ダミー変数表現を用いて $t=$ { $0,1,0,0,0,0,0$ }$^T$ のように表す
- 学習データセット
- 学習に用いられる全ての対の集合のこと。$D_L$ と表す
- 学習の目的
- 学習データを正しく識別できる $w$ を求めること
- 識別関数例:$y = f(x;w) = w_1x_1 + ・・・ + w_dx_d = w^Tx$
- 学習データセットを用いて、識別関数の出力と教師データの誤差が小さくなるようにパラメータ $w$ を調整する
2.1.3 教師付き学習と線形回帰
- 関数近似(回帰)
- 教師入力として2値 $t$ $\in$ { $0,1$ } ではなく任意の関数値が与えらえる場合は、識別関数は入力 $x$ に対して与えられた関数値を出力するように学習が行われる
- 教師付き学習
- 入力が所属するクラス $t$ $\in$ { $0,1$ } などの教師がいる学習
2.1.4 教師なし学習
- 教師なし学習
- 入力データ間の距離や類似度、統計的な性質に基づいてクラスを自動的に生成することが目的
2.2 汎化能力
- 学習
- 学習データに対する識別関数の出力値と教師データの誤差が最小になるように識別関数のパラメータを調整すること
- 汎化能力
- 未知のデータに対する識別能力
- 汎化誤差
- 未知のデータと識別関数の出力との誤差
2.2.1 学習データとテストデータの作り方
- 真の誤り率
- 真の分布 $p$ に従う学習データを用いて設計し、真の分布 $p$ に従うテストデータを用いてテストした時の誤り率
- 真の分布とは、母集団の $d$次元特徴の分布
- 再代入誤り率
- 母集団から学習データをサンプリングし、テストにも同じデータを用いて測定した誤り率のこと
- 再代入謝り率が低い場合は、識別器の能力を何らかの方法で上げる必要がある
- 100円硬貨の識別をするとき
- 国内の全100円硬貨の集合を母集団とする
- バイアス(偏り)
- 100円硬貨 7000枚を学習データ、3000枚をテストデータとしたとき合計は 10000枚になるがこれらは母集団(真の分布)からサンプリングされており、重さや透磁率などの平均や分散が真の分布と同じにならない
ホールドアウト法
- データを2つに分割し、一方を学習データとして使用し、もう一方を誤り率を計算するためのテストデータとして使用する
- ホールドアウト誤り率
- ホールドアウトで分割したテストデータを用いて計算した誤り率のこと
交差検証法
- データを $m$ 個のグループに分割し $m-1$個のグループのデータを使って識別器を学習し、残りの1つのグループでテストを行うことを $m$回繰り返しそれらの誤り率の平均を性能予測値とする
- 手元にあるデータ全てを学習とテストに使うのでより良い性能予測を行うことができる
- データの分割が偏る可能性がある
leave-one-out 法
- データの数(レコード数)とグループの数を等しくした交差検証法
- 1つを除いた全てのデータで学習し、除いた1つでテストすることをデータ数分繰り返す
- 時間かかりそう
ブートストラップ法
- 再代入誤り率の偏りを補正するために利用
- 再代入誤り率の偏りとは、学習データと同じデータを使ってテストをした場合、誤識別率は真の識別率よりも低く出るがこの差のこと
- ブートストラップサンプルという N個のデータからN回復元抽出(サンプルしたデータを元に戻す)を行って作ったサンプルを使って学習データ、テストデータにも使用して算出した誤識別率を $ε(N^,N^)$ としたとき
- $bias = ε(N^*, N) - ε(N, N)$