Share
Embed
Transcript
10 slides
-
3 どのように回帰直線を引くか? ✓ 回帰直線は各データをよく表すように引きたい… ⇒各データと回帰直線の誤差(残差)が最小となる ように回帰直線の係数a, bを決定する ✓ 機械学習の人は誤差,統計の人は残差と呼んでる印象 x
y i番目のデータ(x(i),y(i)) x(i) y(i) ax(i)+b 回帰直線 y=ax+b 誤差 (残差) -
4 最小二乗法で扱う誤差関数 ✓ 誤差関数を誤差の2乗の和とし,誤差関数が最小となる ような係数a, bを計算する方法が最小二乗法 最小二乗法で扱う誤差関数E(a,b) , =
=1 1 2 () − () + 2 aとbの 2変数関数 誤差の2乗 x y i番目のデータ(x(i),y(i)) x(i) y(i) ax(i)+b 回帰直線 y=ax+b 誤差 (残差) 各データの2乗誤差を 全データ(n個)足し合わせたもの -
5 誤差関数は下に凸の2次関数 ✓ 誤差関数をa,bそれぞれに着目して展開すると それぞれ下に凸の2次関数であることがわかる ✓ 偏微分により簡単に最小値を求めることが可能 , =
=1 1 2 () − () + 2 = =1 1 2 () 2 − 2() () − + () − 2 =1 1 2 2 + 2 () − () + () − () 2 E a E b a,bどちらに着目しても 誤差関数はa,bに関して下に凸の2次関数 (狭義の凸関数と呼ばれる) 最小となる1点が存在 -
6 誤差関数を最小化する(1/2) ✓ 誤差関数をa,bそれぞれ偏微分して0とし連立方程式を 解くことで,誤差関数を最小とする解a*,b*を求める , = =1 1
2 () − () + 2 ∗, ∗ = − =1 () − ∗() − ∗ () = 0 ∗, ∗ = − =1 () − ∗() − ∗ = 0 ⟺ ∗ =1 () 2 + ∗ =1 () = =1 ()() ∗ =1 () + ∗ = =1 () 合成関数の微分 -
7 誤差関数を最小化する(2/2) この関係式を前頁1段目の式に代入する ∗ =1 () 2 + ∗
=1 () = =1 ()() ⟺ ∗ =1 () 2 + −∗ + =1 () = =1 ()() ⇔ ∗ = σ ()() − σ () σ () 2 − σ () = − ∙ 2 − 2 = (との共分散) (の分散) ∗ =1 () + ∗ = =1 () ⟺ ∗ = −∗ σ () + σ () = −∗ + n個のx i ,y i の平均 ✓ このように回帰直線の係数a*,b*が求められる -
8 行列で記述するほうがすっきり ✓ 行列で記述するほうが簡単にかける = =1 1 2 ()
− () + 2 = 1 2 (1) − (1) + 2 + ⋯ + () − () + 2 = 1 2 − T − (1) = (1) + (2) = (2) + () = () + … (1) (2) ⋮ () = (1) (2) ⋮ () + = (1) (2) ⋮ () 1 1 ⋮ 1 ⟺ = このように行列を定義すると,誤差関数は下記のとおり -
9 行列表現での最小化 ✓ 誤差関数を係数ベクトルwで微分して0とする = 1 2 − T −
∗ = 0 ⟺ 1 2 ∙ 2 −T − ∗ = ⟺ T − T∗ = ⟺ T∗ = T ⟺ ∗ = T −1 T ✓ ベクトルの微分がわからない方は「ベクトル 微分」で検索してください (いろいろ公式がでてきます) ✓ ここらへんの式変形は成分表示してがんばって計算したら大体理解できます ベクトルの微分公式より 展開 移行 両辺に逆行列を左からかける (Tが逆行列を持つと仮定) -
10 なぜ誤差を二乗したのか? , = =1 () − () +
✓ 各データの誤差は正/負両方存在するため そのまま足し合わせると誤差が相殺されてしまう ✓ 誤差を2乗すれば非負となり,和で評価が可能になる ✓ 誤差の絶対値をとると最小値を求めるのが難しくなるため 2乗する方法を採用 これだと解析的に最小値を求めるのが難しい!