Regression(回帰)
WSL 勉強会
2016/07/17(⽇)
友松祐太
2016/7/17 1
はじめに
• 本スライドは本・ネットの資料を参考に作成した資料です。資
料内に誤りがあるかもしれません。。(指摘をお願いします。)
2016/7/17 2
もくじ
• 1. Introduction
• 2. Simple Linear Regression(単回帰)
• 3. Multiple Linear Regression(重回帰)
• 4. Linear Regression Model(線形回帰モデル)
• 5. Curve Fitting(曲線フィッティング)
• 6. Conclusion
2016/7/17 3
1. Introduction
2016/7/17 4
回帰とは
• 変数間の関係を関数で表すことを回帰(Regression)という。
• 本⽇のお話は全て線形回帰に関するお話です
2016/7/17 5
回帰事例
• ある農家で肥料をどれくらい与えればどれくらいの収量が得ら
れるかを知りたい。
• 1年間で1つのサンプルしかとることが出来ない
• ⇒回帰で求めよう!!
2016/7/17 6
単回帰
X
施肥料
(ポンド/エーカー)
Y
収量
(ブッシェル/エーカー)
100 40
200 50
300 50
400 70
500 65
600 65
700 80
2016/7/17 7
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
単回帰
X
施肥料
(ポンド/エーカー)
Y
収量
(ブッシェル/エーカー)
100 40
200 50
300 50
400 70
500 65
600 65
700 80
2016/7/17 8
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
パターン⾒え
てきたよ!!
単回帰
X
施肥料
(ポンド/エーカー)
Y
収量
(ブッシェル/エーカー)
100 40
200 50
300 50
400 70
500 65
600 65
700 80
2016/7/17 9
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
パターン⾒え
てきたよ!!
直線が引け
そうだよ
単回帰
X
施肥料
(ポンド/エーカー)
Y
収量
(ブッシェル/エーカー)
100 40
200 50
300 50
400 70
500 65
600 65
700 80
2016/7/17 10
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
2. Simple Regression Model
(単回帰)
2016/7/17 11
単回帰
• 説明変数1つで⽬的変数を表す。
𝑦" = 𝑏% + 𝑏' 𝑥
という式で⽬的変数を説明するような回帰。
2016/7/17 12
単回帰
2016/7/17 13
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
単回帰
2016/7/17 14
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
最終的に求めたい直線を
𝑦" = 𝑏% + 𝑏' 𝑥
とおく。
𝑦" = 𝑏% + 𝑏' 𝑥
単回帰
2016/7/17 15
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
この点((𝑥*, 𝑦*)とする。)
に注⽬する
𝑦" = 𝑏% + 𝑏' 𝑥
単回帰
2016/7/17 16
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
観測点𝑥*に対する残差𝑒*
という。
𝑦" = 𝑏% + 𝑏' 𝑥
単回帰
2016/7/17 17
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
するとこの点は
𝑦* = 𝑦" + 𝑒*																								
= (𝑏% + 𝑏' 𝑥*) + 𝑒*
と書くことができる。
𝑦" = 𝑏% + 𝑏' 𝑥
単回帰
2016/7/17 18
0
10
20
30
40
50
60
70
80
90
0 100 200 300 400 500 600 700 800
収量()プッシェル/エーカー
施肥料(ポンド/エーカー)
𝑦" = 𝑏% + 𝑏' 𝑥
それぞれの点で残差が求まる。
この残差ができるだけ少なくな
るような直線が引ければよい!
単回帰
• 𝑦" = 𝑏% + 𝑏' 𝑥…この直線を求めたい
• 𝑦* = (𝑏% + 𝑏' 𝑥*) + 𝑒*…各観測点における基準変数と予測変数の関係
• 𝑒* = 𝑦* − (𝑏% + 𝑏' 𝑥*)←この残差の2乗和を最⼩にする
最⼩⼆乗法!!!
2016/7/17 19
単回帰
𝑄 𝑏%, 𝑏' = 1 𝑒*
2
3
*4'
= 1 𝑦* − 𝑦*5 2
3
*4'
= 1{𝑦* − (𝑏% + 𝑏' 𝑥*)}2
3
*4'
この𝑄 𝑏%, 𝑏' を𝑏%, 𝑏'に関してそれぞれ偏微分して=0となる連⽴⽅程式を解
くことで𝑏%, 𝑏'⼀意に定まる。
𝜕
𝜕𝑏%
𝑄 𝑏%, 𝑏' = 0
𝜕
𝜕𝑏'
𝑄 𝑏%, 𝑏' = 0
2016/7/17 20
単回帰
𝜕
𝜕𝑏%
𝑄 𝑏%, 𝑏' =
𝜕
𝜕𝑏%
1{𝑦* − (𝑏% + 𝑏' 𝑥*)}2
3
*4'
= 1(−2){𝑦*−(𝑏% + 𝑏' 𝑥*)}
3
*4'
= 0
⟺ 1 𝑦*
3
*4'
− 1 𝑏%
3
*4'
− 1 𝑏' 𝑥*
3
*4'
= 0
⟺ 𝑛𝑏% = 1 𝑦*
3
*4'
− 𝑏' 1 𝑥*
3
*4'
⟺ 𝑏% =
∑ 𝑦*
3
*4'
𝑛
− 𝑏'
∑ 𝑥*
3
*4'
𝑛
∴ 𝑏% = 𝑦? − 𝑏' 𝑥̅
2016/7/17 21
単回帰
𝜕
𝜕𝑏'
𝑄 𝑏%, 𝑏' = 1(−2𝑥*){𝑦* − (𝑏% + 𝑏' 𝑥*)}
3
*4'
= 0
𝑏% = 𝑦? − 𝑏' 𝑥̅より
⟺ 1 𝑥* 𝑦* − 𝑦? − 𝑏' 𝑥̅ + 𝑏' 𝑥*
3
*4'
= 0
⟺ 1 𝑥* 𝑦* − 𝑦? − 𝑏' 𝑥* − 𝑥̅
3
*4'
= 0
⟺ 𝑏' =
∑ 𝑥* 𝑦* − 𝑦?3
*4'
∑ 𝑥* 𝑥* − 𝑥̅3
*4'
⟺ 𝑏' =
∑ (𝑥* 𝑦* − 𝑥* 𝑦?)3
*4'
∑ (𝑥*
2
− 𝑥* 𝑥̅)3
*4'
2016/7/17 22
単回帰
⟺ 𝑏' =
∑ 𝑥* 𝑦*
3
*4' − 𝑦?∑ 𝑥*
3
*4'
∑ 𝑥*
2
− 𝑥̅ ∑ 𝑥3
*4' *
3
*4'
⟺ 𝑏' =
∑ 𝑥* 𝑦*
3
*4' − 𝑛𝑥̅ 𝑦?
∑ 𝑥*
2
− 𝑛𝑥̅23
*4'
⟺ 𝑏' =
1
𝑛
∑ 𝑥* 𝑦*
3
*4' − 𝑥̅ 𝑦?
1
𝑛
∑ 𝑥*
2
− 𝑥̅23
*4'
∴ 𝑏1 =
𝑠CD
𝑠C
2
,		
𝑏% = 𝑦? − 𝑏' 𝑥̅より			𝑏% = 𝑦? −
𝑠CD
𝑠C
2
𝑥̅
2016/7/17 23
3. Multiple Linear Regression
(重回帰)
2016/7/17 24
重回帰(説明変数2つの場合)
• 2つ以上の(独⽴な)説明変数で⽬的変数を説明するような回帰
• 説明変数が2つの時…
Y* = 𝛽% + 𝛽' 𝑥'* + 𝛽2 𝑥2* + 𝐸*
2016/7/17 25
重回帰(説明変数2つの場合)-最⼩⼆乗法
𝑄 𝑏%, 𝑏', 𝑏2 = 1 𝑒*
2
3
*4'
= 1 𝑦* − 𝑏% + 𝑏' 𝑥'* + 𝑏2 𝑥2*
2
3
*4'
これを, 𝑏%, 𝑏', 𝑏2で偏微分して、=0を取ると𝑏%, 𝑏', 𝑏2が⼀意に定まる。
𝑏' =
𝑟D' − 𝑟D2 𝑟2'
1 − 𝑟2'
2
𝑠D
𝑠C'
𝑏2 =
𝑟D2 − 𝑟D' 𝑟2'
1 − 𝑟2'
2
𝑠D
𝑠C2
𝑏I = 𝑦? − 𝑏' 𝑥' − 𝑏2 𝑥2
2016/7/17 26
重回帰(⼀般化)
𝒀 =
𝑌'
𝑌2
⋮
𝑌3
, 𝑿 =
1 𝑥''
1 𝑥2'
⋯
⋯
𝑥'O
𝑥2O
⋮ 	⋮ ⋱ ⋮
1 𝑥3' ⋯ 𝑥3O
, 𝜷 =
𝛽%
𝛽'
⋮
𝛽O
, 𝑬 =
𝐸'
𝐸2
⋮
𝐸3
𝒀 = 𝑿𝜷 + 𝑬
𝒆 = 𝒚 − 𝑿𝒃←これを最⼩⼆乗法で𝑏を求めると…
2016/7/17 27
𝒃 = 𝑿V
𝑿 W'
𝑿V
𝒚 ⼀意に定まる!
多重共線性
• 重回帰を⾏うときに、モデル内の説明変数の⼀部が⼀部の説明
変数と相関関係があるとき、回帰係数が増加して不安定になる。
⇒多重共線性という
• 重回帰⾏う際の説明変数は独⽴であるという仮定がある。
• 説明変数は独⽴変数ともいい、⽬的変数はそれらの独⽴変数に
よって⽬的変数が説明されるので従属変数ともいう。
2016/7/17 28
4. Linear Regression Model
(線形回帰モデル)
2016/7/17 29
線形回帰モデル
• これまでずっと線形回帰の話をしてきました。
ここで問題!
2016/7/17 30
線形回帰モデル
2016/7/17 31
線形回帰モデル
2016/7/17 32
𝑦 = 𝑏% + 𝑏' 𝑥 + 𝑏2 𝑥2
で回帰できそう!!
線形回帰モデル
2016/7/17 33
𝑦 = 𝑏% + 𝑏' 𝑥 + 𝑏2 𝑥2
で回帰できそう!!
これは
線形回帰?
⾮線形回帰?
線形回帰モデル
2016/7/17 34
𝑦 = 𝑏% + 𝑏' 𝑥 + 𝑏2 𝑥2
で回帰できそう!!
これは
線形回帰?線形回帰である!
線形回帰モデル
• 2変数の重回帰を思い出してみると…
𝑦 = 𝑏% + 𝑏' 𝑥' + 𝑏2 𝑥2
となる。
この式の𝑥'を𝑥2
に, 𝑥2を𝑥とすると、
𝑦 = 𝑏% + 𝑏' 𝑥 + 𝑏2 𝑥2
よって、これは線形回帰である。
2016/7/17 35
線形回帰モデル
• 2変数の重回帰を思い出してみると…
𝑦 = 𝑏% + 𝑏' 𝑥' + 𝑏2 𝑥2
となる。
この式の𝑥'を𝑥2
に, 𝑥2を𝑥とすると、
𝑦 = 𝑏% + 𝑏' 𝑥 + 𝑏2 𝑥2
よって、これは線形回帰である。
2016/7/17 36
?
線形回帰⼀般化(線形回帰モデル)
𝑦 𝒙, 𝒘 = 1 𝑤[ 𝜙[
]W'
[4%
𝒙 = 𝒘V
𝜙(𝒙)
𝜙 𝑥 :基底関数
基底関数を導⼊することによって⼊⼒に⾮線形な関数を⼊れるこ
とができる。
2016/7/17 37
線形回帰モデル
• 線形回帰モデルとは⼊⼒変数に関して関数の線形結合となって
いるようなモデル。
• これを線形回帰モデル(線形基底関数モデル)という。
• ⼊⼒が線形であるか⾮線形であるかは関係ない。
• 重みが⼀意に定まる
2016/7/17 38
線形回帰モデル -基底関数の種類-
• 𝜙[ = 𝑥*:線形回帰
• 𝜙[ = 𝑥*
:多項式回帰
• ガウシアン関数:RBFネットワーク,SVM
• シグモイド関数(tanh)
• 三⾓関数:フーリエ変換
• ウェーブレット関数
• 短形波(短形関数),三⾓波(三⾓形関数)
基底関数の選び⽅は無限⼤!
2016/7/17 39
線形回帰モデル
• 基底関数を導⼊することによって直線だけでなく曲線とフィッ
ティングできるようになった!
• ⼊⼒が⾮線形であっても、yは重みに関して線形なので、重み
を⼀意に定めることができる!
2016/7/17 40
5. Curve Fitting
(曲線フィッティング)
2016/7/17 41
曲線フィッティング
𝑦 𝒙, 𝒘 = 1 𝑤[ 𝜙[
]W'
[4%
𝒙 = 𝒘V
𝜙(𝒙)
𝜙[ 𝑥 = 𝑥[
とすると
𝑦 = 𝑤% + 𝑤' 𝑥'
+ 𝑤2 𝑥2
+ ⋯+ 𝑤]W' 𝑥]W'
2016/7/17 42
曲線フィッティング
2016/7/17 43
曲線フィッティング
2016/7/17 44
𝑦 = 𝑤%
曲線フィッティグ
2016/7/17 45
𝑦 = 𝑤% + 𝑤' 𝑥'
曲線フィッティング
2016/7/17 46
𝑦 = 𝑤% + 𝑤' 𝑥'
+ 𝑤2 𝑥2
曲線フィッティング
2016/7/17 47
𝑦 = 𝑤% + 𝑤' 𝑥'
+ 𝑤2 𝑥2
+ ⋯ + 𝑤_ 𝑥_
曲線フィッティング
• 𝑀 + 1 ≥ (観測点の個数)のとき、最⼩⼆乗法を⽤いると全て
の点を通るようなM次の曲線にフィッティングさせることがで
きる。
2016/7/17 48
曲線フィッティング
• Mを増やしていくと無理や
りデータ点とフィッティン
グさせようとするため、w
の値が極端に⼤きくなって
しまう。
• このような振る舞いをover-
fitting(過学習)という。
• 汎化性能が著しく落ちる。
2016/7/17 49
曲線フィッティング
• 正則化項というものを⽤いることによってこの過学習をおさえ
る事ができる。
• 正則化項を⽤いた線形回帰をリッジ回帰というらしい・・・
• 今回はその話はしません。(次回にできたらいいな。。。)
2016/7/17 50
6. Conclusion
2016/7/17 51
まとめ
• 1つの説明(独⽴)変数で⽬的(従属)変数を表すのが単回帰。
• 複数の説明(独⽴)変数で⽬的(従属)変数を表すのが重回帰。
• 説明変数が独⽴じゃないと多重共線性が起こるよ。
• 線形回帰は直線を引く回帰ではなく、重みに関して線形になっ
ている。
• 線形回帰、いろいろできる!
• 過学習には気をつけて!
2016/7/17 52
ご清聴ありがとうございました!
2016/7/17 53
参考
• [線形回帰モデルとは]
(http://jp.mathworks.com/help/stats/what-is-linear-
regression.html)
• [機械学習はじめよう]
(http://gihyo.jp/dev/serial/01/machine-learning)
• [線形回帰-wikipedia]
(https://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E5%9B%
9E%E5%B8%B0)
• パターン認識と機械学習(PRML) 上
• Rで学ぶ最新データ解析 回帰分析⼊⾨ 著豊⽥秀樹(2012)
• 回帰分析とその応⽤ 著ウォナコット(1998)
2016/7/17 54

Reggression①