数学弱者の奮闘記

数学弱者目線の記事を書いていきます

はじめてのパターン認識(はじパタ) 第2章 2.2.1 解説という名の妄想

はじパタの2章2.2.1で個人的にわかりにくかったところについてお気持ちを解説(妄想)していきます。
やはりはじパタの内容は数学弱者にとって重い。 ちなみに1章の超次元立方体の話は本文で語られているお気持ちだけ理解して、細かい理解はもちろん飛ばしました。

だいぶ妄想なので、合っているかはわかりません。

目次

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

(1)ホールドアウト法

いきなり出てくる以下の式の期待値が何なのかがすぐに理解できなかった。

 E_{D_L} \{\varepsilon(p_L,\ p_L) \} \le \varepsilon(p,\ p) \le E_{D_T} \{\varepsilon(p_L,\ p_T)\}

本文の説明も理解が難しい。

 E_{D_L}\{\}多くの学習データセット D_Lを用いて設計し(以下略) 、  E_{D_T}\{\}一つの学習データセット p_Lを用いて設計し(以下略)」

いや、意味わからんけど(笑)
わからないが、わからないなりに以下で妄想してみる。

まず、「設計」は、巷で言うところのモデルの訓練(または学習、トレーニング)ということにしておく。もしかしたらモデル選択まで含めているのかもしれないが、まあ訓練ということでいいでしょう。

次に、期待値が一体何なのかについて改めて考えてみたい。
個人的には、期待値は(標本)平均と似たものだと思っている。大数の法則から、(標本)平均 \bar{X}は期待値E[X]に確率収束する。取ってきた標本(データ)の数が多いと、標本平均はE[X]にほぼ等しい。

では、 E_{D_L} \{\varepsilon(p_L,\ p_L) \}はどのような意味なのか。
とある一つのデータセット D_Lが得られたとする。このデータセットで識別器を設計し、同じデータセットでテストをし、誤り率を測定する。これをN回行う。つまり、N回新たなデータセット \{D_L\}_i, \ (i=1,2,...,N)を得て、その度ごとにそのデータセットでテストをし、誤り率を測定する。このN回で得た誤り率の平均 \dfrac{1}{N} \sum_{i=1}^{N}\varepsilon_i(p_L,\ p_L)は、 E_{D_L} \{\varepsilon(p_L,\ p_L) \}に確率収束する。この場合、 E_{D_L} \{\varepsilon(p_L,\ p_L) \}の期待値の計算で使う確率密度関数 \varepsilon(p_L,\ p_L)確率密度関数である、ということでいいのだろうか。計量経済学をテキスト使いながら学んでいた時にも思ったことだが、期待値に関して曖昧な説明しかしないせいで、この期待値は一体何なんだとなることが多くてイライラする。この手のテキストはいちいち天才を想定しすぎなんだよな。
また、「 E_{D_L}\{\}多くの学習データセット D_Lを用いて設計し」の「多くの」というのは、多くの \{D_L\}_i, \ (i=1,2,...,N)で期待値(平均)を取るということなのだろう。たぶん。

 E_{D_T} \{\varepsilon(p_L,\ p_T)\} に関しては、同様に考えると、「一つのデータセット p_L( D_Lと表記しないのはなぜだろう?)で識別器を設計し、この識別器を数多くのテストデータセット \{D_T\}_i,\ i=1,2,...,Nで測定した誤り率の期待値(≒平均)」ということになるだろうか。
合ってるかは全くわからん(笑)。

(4)ブートストラップ法

これもまぁ意味が分からない。事前知識無しでこれだけ読んで理解できる人はいるのだろうか。
ブートストラップ法については他の本でちゃんと勉強しないといけないんだろうな。 以下でまた妄想を展開していく。

数式の展開

まず、下の脚注にある (1-\dfrac{1}{N})^N の展開がよくわからない。これは単純に数学の勉強不足。テイラー展開だとは思うが、、、。
代わりに、以下のように考えると同じ結果が得られるので、別解を紹介する。 (ここを参考にしました: ネピア数eに関連したいろいろな数列の極限値を求めてみよう - 身勝手な主張 )

 (1) lim_{n\rightarrow-\infty}\left(1+\dfrac{1}{n}\right)^n = eが成り立つ。
 (2) lim_{n\rightarrow\infty}\left(1-\dfrac{1}{n}\right)^n =  lim_{-n\rightarrow-\infty}\left\{\left(1+\dfrac{1}{-n}\right)^{-n}\right\}^{-1} = e^{-1}

(1)の証明: x = -nとする。  lim_{n\rightarrow-\infty}\left(1+\dfrac{1}{n}\right)^n = lim_{x\rightarrow\infty}\left(1-\dfrac{1}{x}\right)^{-x}  = lim_{x\rightarrow\infty}\left(\dfrac{x-1}{x}\right)^{-x} = lim_{x\rightarrow\infty}\left(\dfrac{x}{x-1}\right)^{x}  = lim_{x\rightarrow\infty}\left(\dfrac{x}{x-1}\right)^{x-1}\left(\dfrac{x}{x-1}\right) = lim_{x\rightarrow\infty}\left(1+\dfrac{1}{x-1}\right)^{x-1}\left(\dfrac{x}{x-1}\right)  = e \times 1 = e

ブートストラップ法の気持ち

次に、ブートストラップ法の気持ちを考えてみたい。
なにをやっているのかは本文を読めば分かるのだが、なぜそれをバイアスの推定値として使うのかが全く説明されておらず、ちんぷんかんぷんである。

なので以下で気持ちを妄想していく。
まず、整理をしてみる。

バイアスの理論値(真の誤り率-再代入誤り率):
 bias = \varepsilon(p, p) -  \varepsilon(N, N)

バイアスの推定値:
 \hat{bias} = \varepsilon(N^*, N^*) -  \varepsilon(N^*, N)

バイアスの推定値の平均: \bar{bias}

バイアスの理論値と推定値を比較してみると、 \varepsilon(N^*, N^*) \varepsilon(p, p)と同じものとみなしているお気持ちが見えてくる。もちろん \varepsilon(N^*, N^*) \varepsilon(p, p)とは違うものなので、その差異を抑えるために、N回抽出する作業を何回も行って複数の \varepsilon(p, p)を得て、その平均を取るのだろう。

もとのデータセットNが例えば無限大のデータ数だとするとこれは真の分布となり、Nから無限回データを復元抽出してその抽出データで算出する誤り率は真の誤り率  \varepsilon(p, p)と同じである(同じだよね?)。ブートストラップ法はNが大きいことを仮定しないといけなそうだ。

一方の \varepsilon(N^*, N)だが、真のバイアスの方と比較すると、 N^* Nを同一視しているように見えてくる。 Nから抽出したものなのだから N^* Nと同じとみなすということなのだろうか。