Transcript 非線形回帰分析
1
非線形回帰分析
狩野 裕
2
線形回帰分析
• 推定値を陽に求めることができる
– 特別な最適化問題を解く必要がない
• 多くのモデルが線形回帰モデルで
記述できる
– e.g. 分散分析
yijk ak b j eijk
a1 x1 a2 x2 b1 x3 b2 x4 eijk
3
非線形回帰分析
• 推定値を求めるには反復推定が必要
– 特別なprocedureが必要...tnlin
• 非線形回帰モデル
yi f (xi , ) ei
(i 1,2,..., n)
• cf. 線形回帰モデル
yi 0 1 xi1 p xip ei
(i 1,2,..., n)
4
最小2乗法
• データとモデルの距離(の2乗)を
最小化する
n
min
y f ( x , )
i 1
i
i
2
5
ニュートン法
関数 f(x) の最小値を与えるxの値を探す
250
200
150
100
50
-3
-2
-1
1
2
3
4
5
• 微分を使って f’(x)=0を解くことができれ
ばよいが,解けないことが多い
• 方程式f’(x)=0が解けないとき,ニュート
ン法などの反復法で解くことになる
250
ニュートン法
6
200
次の関数 f の最小値
を与えるxの値を探す.
150
100
50
250
200
-3
-2
-1
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
250
150
200
100
150
50
100
-3
-2
-1
1
2
3
4
5
Step 0 初期値としてx=4としてみる
50
-3
-2
-1
250
Step 1 x=4で2次関数近似して,2次関数の最小
値を与えるx=x1を求める
200
150
Step 2 x=x1で2次関数近似して,2次関数の最
小値を与えるx=x2を求める
Step 3 以下これを繰り返して最小値を与えるxが
安定したところで打ち切り,その値を最初の関数
fの最小値を与えるxとする.
100
50
-3
-2
-1
7
ニュートン法のアルゴリズム
Step 0 初期値としてx=4としてみる
Step 1 x=4で2次関数近似して,2次関数の
最小値を与えるx=x1を求める
f ( x)のx x0での2次関数近似
f ( x) f ( x0 ) f ' ( x0 )( x x0 )
近似2次関数の微分
Step 2 x=x1で2次関数近似して,2次関数の
最小値を与えるx=x2を求める
Step 3 以下これを繰り返して最小値を与える
xが安定したところで打ち切り,その値を
最初の関数fの最小値を与えるxとする.
f ' ' ( x0 )
d
f
(
x
)
f
'
(
x
)(
x
x
)
( x x0 ) 2
0
0
0
dx
2
f ' ( x0 ) f ' ' ( x0 )( x x0 ) 0
近似2次関数の最小値
x x0 f ' ' ( x0 ) 1 f ' ( x0 )
ニュートン法のアルゴリズム
Step1
適当な初期値x0を選ぶ.t 0, 0.001とする.
Step2
xt 1 xt f ' ' ( xt ) 1 f ' ( xt )
Step3
| xt 1 xt | Step4へ
| xt 1 xt | t t 1としてStep2へ
Step4
f ' ' ( x0 )
( x x0 ) 2
2
解をxˆ xt 1として終了する.
8
ニュートン法のアルゴリズム
多変数の場合
p変数関数の最小化
ニュートン法のアルゴ
リズム
f ( x) f ( x1 , , x p )
Step1
グラディエント
(Gradient )
f ( x)
x
f (x) 1
g ( x)
x
f ( x)
x p
ヘシアン( Hessian )
2 f ( x)
2 f ( x)
x
x
x1x p
2
1 1
f ( x)
H ( x)
2
xx' 2 f (x)
f ( x)
x x x x
p
p
p 1
適当な初期値
x 0を選ぶ.t 0, 0.001とする.
Step2
x t 1 x t H (x t ) 1 g (x t )
Step3
|| x t 1 x t || Step4へ
|| x t 1 x t || t t 1として
Step2へ
Step4
解を
xˆ x t 1として終了する.
9
ガウス・ニュートン法
• 最小2乗法におけるニュートン法の変形
– 2階微分を1階微分で近似
n
h( ) yi f (x i , )
2
i 1
n
h' ' ( ) 2 f ' (x i , ) yi f (x i , ) f ' ' (x i , )
i 1
n
2
2 f ' ( x i , )
i 1
2
10
反復法の問題点
• 反復の初期値を与えなければならない
• よい初期値でないといけない
– いくつかの初期値で試してみる
• 反復が収束しないことがある
– ステップ幅の調節
1
xt 1 xt ct f ' ' ( xt ) f ' ( xt )