2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

39
PRML輪読会 第7回 made by C.M.Bishop modified by T.Sakaki PATTERN RECOGNITION AND MACHINE LEARNING CHAPTER 3: LINEAR MODELS FOR REGRESSION

Upload: takeshi-sakaki

Post on 28-May-2015

2.290 views

Category:

Education


1 download

DESCRIPTION

PRML勉強会2013冬  第7回 3章線形回帰モデルの3.2〜3.4です

TRANSCRIPT

Page 1: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

PRML輪読会 第7回 made  by  C.M.Bishop                                                                                        modified  by  T.Sakaki  

PATTERN  RECOGNITION    AND  MACHINE  LEARNING  CHAPTER  3:  LINEAR  MODELS  FOR  REGRESSION  

Page 2: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3章 線形回帰モデル

教師あり学習-­‐回帰問題について  

 回帰問題=所与: N個の観測値          と目標値      →新しいxに対するtの値を予測する  

目的:    過学習を避けて学習する  

方針:    尤度関数を求め、最尤推定によってパラメータを決定する      対数尤度法    誤差関数と正則化項の和を最小化する    ベイズ的に取り扱う(事前分布・事後分布を考える)  

Page 3: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解

バイアス bias  

 予測値の平均が、理想的な回帰関数 h(x)からどのくらい離れているか?  

バリアンス variance   各データ集合に対する解が、特定のデータ集合に関する期待値の周りでどのくらい変動しているか?  

  =データ集合の選び方の敏感さ    =各予測値がどれくらいバラけているか?  

正則化係数λの値をどのように決定するか?      正則化係数λ→大:複雑なモデル

Page 4: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解

サンプル  

・N=25点、100種類のデータを生成  

・各訓練データに付いて、正則化誤差関数を  

最小化  

・24個のガウス基底関数をフィッティング

Page 5: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

N=25点、100種類のデータを生成  

variance小 bias  大

Page 6: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

N=25点、100種類のデータを生成  

variance大 bias小

Page 7: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

N=25点、100種類のデータを生成  

variance  中 bias  中

Page 8: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解

•xが与えられたときのtの推定値:y(x)  

•損失関数:L(t,y(x))  •損失の期待値:E[L]を最小化するt  の推定値=Et[t|x]  

Page 9: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

条件付き期待値(回帰関数)  

期待二乗損失  

予測値と学習データからの期待値との差

学習データからの期待値と目標変数との差  →ノイズ  →達成可能な最小の期待損失  P.46の式1.90及びP.46の末尾  

~P.47の冒頭の記述参照

Page 10: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

有限個のデータからは理想的な回帰関数h(x)  を求めることは困難  

→第一項=データ集合から求められる予測関数と回帰関数の期待二乗誤差を考える  

Page 11: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

y(x;D)とh(x)の期待二乗誤差  

予測値の平均が、理想的な  回帰関数 h(x)からどのくらい離れているか?

各データ集合に対する解が、特定のデータ集合に関する期待値の周りでどのくらい変動しているか?

Page 12: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

期待損失=

(bias)2 + variance + noise

Page 13: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.2 バイアスーバリアンス分解  

バイアスとバリアンスのトレードオフについて

(bias)2 =1N

y(xn ) − h(xn ){ }2

n=1

N

variance =1N

1L

y (l)(xn ) −y(xn ){ }2

l

L

∑n=1

N

正規化係数λ→大:    パラメータが0に近づく   bias→大 variance→小

正規化係数λ→小:    ノイズにover-­‐fiKng   bias→小 variance→大

Page 14: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰

線形回帰問題    問題にあわせて、モデルの複雑さを適切に決めることが重要  

 → どうやって決定するか?   → 線形回帰モデルをベイズ的取り扱う       =事前分布・事後分布を扱う  

 利点:・過学習の回避       ・訓練データからモデルの複雑さを        自動的に決定

Page 15: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

・目標変数:t 入力変数:x モデルパラメータ:w    ・パラメータの事前分布を導入して、事後分布を求めて、パラメータを推定  

・尤度関数  

・wの共役事前分布  

・wの事後分布  

Page 16: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰

・事後確率はガウス分布  

・最頻値と期待値は一致するので、事後確率を最大  

・無限に広い事前分布         を考えたとき  

事後分布の平均は最尤推定による値 (3.15)  と一致

Page 17: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

事前分布及び事後分布 事前分布

事後分布

α:初期分布の精度  β:ガウスノイズの精度

Page 18: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰

・対数尤度関数

lnp w |t( ) = −β2

tn −wTφ xn( ){ }

2

n=1

N

∑ −α2wTw +const

λ =αβ

事後分布をwについて最大化することは, 二乗和誤差関数と二次正則化項の和の最小化と等価

P.142  式3.27

Page 19: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

具体例:

目標関数  パラメータは固定  

データ点を観測する毎に  

 現在の事後分布→次の時点の事前分布  

のように逐次処理

y(x,a) = a0 +a1x(a0 = −0.3,a1 = 0.5)

α = 2.0,β = 1/0.2( )2 = 25

Page 20: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

データ観測前  

事前分布   データ空間  

Page 21: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

データを1つ観測  

尤度関数   事後分布   データ空間  

Page 22: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

データを2つ観測  

尤度関数   事後分布   データ空間  

Page 23: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3 ベイズ線形回帰  

データを20個観測  

尤度関数   事後分布   データ空間  

Page 24: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布  

新たなデータxが得られる度に、逐次的にtを予測したい!  

→予測分布を考える  

ノイズ wの不確かさ

Page 25: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布

予測分布の導出

p t x , w ,β( ) =Ν ty

x , w ( ),β−1( ) =Ν t

w Tφ x ( ),β−1( )

目標変数の条件付き分布

P.138 式(3.8)  

重みの事後分布

p w t ( ) =Ν

w mN ,SN( ) P.151  式(3.49)  

下記の予測分布を求めたい

p t x , t ,α,β( ) P.155  式(3.58)  

Page 26: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布

用いる式

p x( ) =Ν x µ,Λ−1( )

p y x( ) =Ν y Ax +b,L−1( )

p y( ) =Ν x Aµ +b,L−1 + AΛ−1AT( ) の時

x → w t ,y →t x ,

t α,β

p w t ( ) =Ν

w mN ,SN( )

p t x , w ,α,β( ) =Ν t

w Tφ x ( ),β−1( )

p t x , t ,α,β( ) =Ν t mN

T φ x( ),β−1 +φ x( )T SNφ x( )( ) P.155  式(3.58)  

µ →mN ,Λ−1 →SN ,x →

w T ,A→φ x( ),L−1 →β

Page 27: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布  

事例: Sin関数に対し、9個のガウス基底関数を用いて回帰   データ数1個目  

予測分散 事後分布から得られた関数

Page 28: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布  

事例: Sin関数に対し、9個のガウス基底関数を用いて回帰   データ数2個目  

予測分散 事後分布から得られた関数

Page 29: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布  

事例: Sin関数に対し、9個のガウス基底関数を用いて回帰   データ数4個目  

予測分散 事後分布から得られた関数

Page 30: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.3.2 予測分布  

事例: Sin関数に対し、9個のガウス基底関数を用いて回帰   データ数25個目  

予測分散 事後分布から得られた関数

Page 31: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

3.4 等価カーネル

訓練データの目標値の線形結合により予測を行う  =線形平滑器のパラメータ

Page 32: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

等価カーネル  

予測値は下記の式で表される  

予測値 tnによる訓練データの重みづけ合計  

平滑化行列  等価カーネル    

Page 33: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

等価カーネル  

・重みtn  はx  と xnの距離に依存  ・xとxn  が近いほど大きな重みとする  

Page 34: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

等価カーネル  

k(x、x‘)の例: x=0の場合のx’をプロット  

基底関数が局所的でなくても  等価カーネルはx’に対して局所的な関数になる  

Polynomial   Sigmoidal  

Page 35: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

等価カーネル  

○等価カーネルは共分散関数:    

6章のガウシアンプロセスを用いる事で、基底関数を用いず、また直接カーネル関数を定義する必要がない  

近傍点での相関が強く、より離れた点の組では相関が小さい

局所的なカーネルを定義することでxが予測できる

Page 36: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

等価カーネル  ○全てのデータ点xに対して、カーネル関数の合計は1  

※ただし、いくつかのxに対するカーネル関数の値は負となる  

○他のカーネル関数と同様、等価カーネルは内積で表現可能  

Page 37: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

Rで実装

M  <-­‐  9                #  number  of  basis  func]ons  alpha  <-­‐  2        #  hyper  parameter  beta  <-­‐  25        #  hyper  parameter(precision)  LaKce  <-­‐  30  #  number  of  graph's  laKce    s  <-­‐  0.1  

#  training  data  xlist  <-­‐  seq(0,  1,  length=25)  tlist  <-­‐  sin(2*pi*xlist)+rnorm(length(xlist),  sd=0.2)  D0  <-­‐  data.frame(x=xlist,  t=tlist)  

引用元:hcp://d.hatena.ne.jp/n_shuyo/20090709

M = 9α = 2β = 25L = 30s =1

xlist 0~1を25等分した  等差数列  

tlist

xlistの値をSin関数に代入し、さらに誤差を与えたデータセットを

生成  

基底関数の数

データ点の数

Page 38: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

Rで実装 predic]ve  <-­‐  func]on(D)  {          #  design  matrix          phi  <-­‐  func]on(x)  sapply(x,func]on(x)exp(-­‐(x-­‐seq(0,1,length=9))^2/(2*s*s)))          PHI  <-­‐  t(phi(D$x))  

       #  covariance  matrix  &  means          S_N_inv  <-­‐  alpha  *  diag(M)  +  beta  *  t(PHI)  %*%  PHI          S_N  <-­‐  solve(S_N_inv)          m_N  <-­‐  beta  *  S_N  %*%  t(PHI)  %*%  D$t  

       #  regression  func]on          y  <-­‐  func]on(x)  (t(phi(x))  %*%  m_N)          plot(y,  xlim=c(0,1),  ylim=c(-­‐1.2,1.2))          par(new=T)          plot(D,  xlim=c(0,1),  ylim=c(-­‐1.2,1.2),  ylab="")  

       #  predic]ve  distribu]on          var_N  <-­‐  func]on(x){  1/beta  +  (t(phi(x))  %*%  S_N  %*%  phi(x))[1]  }          func]on(x,  t){                    mapply(func]on(x,  t)dnorm(t,  m=(t(m_N)  %*%  phi(x))[1],  s=var_N(x),  log=T),  x,  t)          }  }  

引用元:hcp://d.hatena.ne.jp/n_shuyo/20090709

φj x( ) = exp −x − µj( )2

2s2⎧ ⎨ ⎪

⎩ ⎪

⎫ ⎬ ⎪

⎭ ⎪

Φ =

φ0 φM −1 φ0 φM −1

⎜ ⎜ ⎜

⎟ ⎟ ⎟

SN−1 = αI + βΦTΦ

mN = βSNΦTt

y = φT x( )mN

Ν tmNT φ x( ),

β−1 + φ x( )TSNφ x( )

⎝ ⎜ ⎜

⎠ ⎟ ⎟

Page 39: 2013.12.26 prml勉強会 線形回帰モデル3.2~3.4

Rで実装

draw_dist  <-­‐  func]on(p){          x  <-­‐  seq(0,1,length=LaKce)          t  <-­‐  seq(-­‐1.5,  1.5,  length=LaKce*2)          z  <-­‐  outer(x,  t,  p)          persp(x,  t,  z,  theta=0,  phi=60,  shade=0.4)  }  p  <-­‐  predic]ve(D0[sample(length(D0$x))[1:1],])  draw_dist(p);  p  <-­‐  predic]ve(D0[sample(length(D0$x))[1:2],])  draw_dist(p);  p  <-­‐  predic]ve(D0[sample(length(D0$x))[1:4],])  draw_dist(p);  p  <-­‐  predic]ve(D0)    draw_dist(p);

引用元:hcp://d.hatena.ne.jp/n_shuyo/20090709

データ点1個で回帰

データ点2個で回帰

データ点4個で回帰

全データ点25個で回帰