マエカワの備忘録的な何か

思い立ったが吉日

知的学習システム 其の三 20180423

はじめに

 今回は,最小二乗法から入っていって,最終的に最尤推定までやっていきました.

最小二乗法について

データがあるならまずは見ろ

 しっかりとデータがあるならば,散布図を見てデータを観察することから始めること.
 そのほか,機械学習のみならず,あらゆる分野ではまず人工データでシステムを試す.人工データで成功してから実データを入力してみる.人工データでうまくいかないものが,実データでうまくいくはずもない.

最初の妄想

 最小二乗法を用いていくにあたって,まずは自分の目でデータを見て,フィッティングをしていく必要がある.今回の講義では,すべて直線フィッティングできるものとし,進めていく.つまり,データ群が

   \displaystyle 
y=ax+b

で表現することができるという過程に基づいて進めていく.この a bを決めるゲームこそが回帰問題と呼ばれ,その手法として最小二乗法が存在する.

回帰問題の難しいところ

 箇条書きにしていく

  • 原理
  • 信頼度
  • サンプル数
  • フィッティング関数の形

 ここら辺のことをしっかりと見て考えることが学生の苦手とする範囲だという.そして,このようなことを考えることこそが「本当にデータを見ること」だという.

原理

 原理についてですが,結局フィッティング関数とデータ群の誤差の絶対値の二乗が最小になるように a,bの値を変えていくわけです.

   \displaystyle
D=\left\{x_n,y_n\right\}_{n=1}^N

がデータとして与えられているとき,

   \displaystyle
\hat{y}=ax_n+b

で推定していきます.データ点 x_nに対応する \hat{y_n}と,真のデータ値 yの差を誤差とみなし \epsilon_nで表すと次のように記述できる.

   \displaystyle 
\begin{cases}
\epsilon_1=\left|\hat{y_1}-y_1\right|\\
\epsilon_2=\left|\hat{y_2}-y_2\right|\\
\vdots\\
\epsilon_n=\left|\hat{y_n}-y_n\right|\\
\end{cases}

これらの値が小さくなるほどうれしいので,微分を使って求めていく.その際,絶対値があると微分不可能になって厄介なので二乗する.これが二乗になるゆえん.最小化に使える武器は,案外少なくて,微分法くらいしかないとも言っていた.それはさておき,二乗したものの平均を求めると,

   \displaystyle 
E=\frac{1}{N}\sum_{n=1}^N\epsilon_n^2

ここで質問.この Eは変数として何を持っているでしょう.

正解は a b x_n y_nは既知の値として得られているので,変数にはなりえない.
 この E a bそれぞれについて偏微分して,傾き 0の部分が最も誤差が小さくなっている a bの組み合わせ.
 この原理を統計的推定に落とし込んでいくのが今回の主題です.

統計的推測

 統計的推測とは,得られたデータから確率モデルを推測することをいう.今回はデータ群が正規分布に基づくと仮定して進めていくので,推定するのは \mu \sigmaになる.さっきの話と似ている.
 さっきは誤差関数 Eを最小化していたが,ここでは,尤度関数 Lを最大化することを考えていく.データ \vec{x}=\{x_1,x_2,\dots ,x_N\}が独立に得られたときの尤度関数は,

   \displaystyle 
\begin{eqnarray}
L&=&p\left(\vec{x}|\mu , \sigma^2\right)\\
&=&\Pi_{n=1}^N\mathcal{N}\left(x_n|\mu,\sigma^2\right)
\end{eqnarray}

になる.独立なので,かけてOK.これを微分して極値を求めていくわけだが,このままの形では面倒くさい.そこで,頭に \logをつけて掛け算を足し算に変換していきます.

   \displaystyle
\log\Pi_{n=1}^N\mathcal{N}\left(x_n|\mu,\sigma^2\right)=\sum_{n=1}^N\log\mathcal{N}\left(x_n|\mu,\sigma^2\right)

この対数を絡めてやった尤度関数のことを,「対数尤度関数」と呼ぶ.実際に \mu \sigmaの推定値を求めてあげると

   \displaystyle
\begin{cases}
\mu_{ML}=\frac{1}{N}\sum_{n=1}^Nx_n=\hat{\mu} \\
\sigma_{ML}=\frac{1}{N}\sum_{n=1}^N\left(x_n-\mu_{ML}\right)^2=\hat{\sigma}
\end{cases}

これは,得られたデータから求められる平均値と分散値.

最尤推定は本当にいいものなのか

  \mu_{ML} \sigma_{ML}の期待値を見ると

   \displaystyle 
\begin{cases}
E[\mu_{ML}]=\mu \\
E[\sigma^2_{ML}]=\frac{N-1}{N}\sigma^2
\end{cases}

となっている.これは,サンプル数が少ないと \sigma^2が過小評価されてしまうことをあらわしている.最尤推定時に不偏分散を用いるのもこの過小評価分をチャラにするため.

   \displaystyle
\frac{N}{N-1}\frac{1}{N}\sum_{n=1}^N\left(x_n-\mu\right)=\frac{1}{N-1}\sum_{n=1}^N\left(x_n-\mu\right)

こんな感じ.
 過小評価してしまうという欠点はあるものの,尤度推定はとても強力な推定方法.