---
title: フリーソフトではじめる機械学習入門 (第2版) 第6章
tags:  #機械学習 #回帰  
author: [荒木 雅弘](https://www.docswell.com/user/MasahiroAraki)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/G75YQ9DQ74.jpg?width=480
description: フリーソフトではじめる機械学習入門 (第2版) 第6章 by 荒木 雅弘
published: September 29, 23
canonical: https://www.docswell.com/s/MasahiroAraki/5NRXPV-2023-09-29-093834
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/G75YQ9DQ74.jpg)

6. 回帰
6.1 数値特徴に対する「教師あり・回帰」問題の定義
6.2 線形回帰
荒木雅弘: 『フリーソフトではじめる機械
6.3 回帰モデルの評価
学習入門（第2版）』 （森北出版，2018年）
6.4 正則化
スライドとJupyter notebook
6.5 バイアス-分散のトレードオフ
サポートページ
6.6 回帰木
6.7 モデル木


# Page. 2

![Page Image](https://bcdn.docswell.com/page/9J2GP28WJR.jpg)

6. 回帰
問題設定
教師あり学習
数値入力
→ 数値出力
機械学習
教師あり学習
教師なし学習
中間的学習
識別
回帰
主記憶=256
キャッシュ=64
チャネル=16
性能= 360.5


# Page. 3

![Page Image](https://bcdn.docswell.com/page/DEYV5Y69EM.jpg)

6.1 数値特徴に対する「教師あり・回帰」問題の定義
回帰のデータ
特徴ベクトル
x と正解情報 y のペア
{(xi , yi )}, i = 1, … , N
​
​
x は数値を要素とする d 次元ベクトル、 y は数値
xi = (xi1 , … , xid )T , y ∈ R
​
​
​
回帰問題の正解情報をターゲットとよぶこともある
回帰問題は関数
y = c^(x) を求める問題と見なせる
未知データに対して予測精度の高い関数を求めたい
どの特徴が出力値に対してどのような影響を及ぼしているかを知りたい


# Page. 4

![Page Image](https://bcdn.docswell.com/page/VJNMNPZD78.jpg)

6.2 線形回帰 (1/4)
目標：学習データに対してなるべく誤差の少ない直線を求める
問題の定義
x (x0 ≡ 1 の d + 1 次元) から出力 y を求める回帰式 c^(x) を1次式に限定
学習データから回帰式の重み w を求める
入力
​
d
c^(x) = wT x = ∑ wj xj
​
j=0
​
​


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YE9NR3Z8E3.jpg)

6.2 線形回帰 (2/4)
最小二乗法による重みの推定
E(w): 誤差の二乗和を損失関数（最小化の対象）として設定する
X : パターン行列 (特徴ベクトルを転置して行方向に並べたもの。N 行d + 1列)
y : 正解ベクトル (N 次元の列ベクトル)
w: 重みベクトル (d + 1 次元の列ベクトル)
N
1
1
E(w) = ∑(yi − c^(xi ))2 = (y − Xw)T (y − Xw)
2 i=1
2
​
​
​
​
​
E(w) を w で偏微分した値を0と置いて、損失関数が極小となるwを求める
X T (y − Xw) = 0 ⇔ X T y = X T Xw ⇔ w = (X T X)−1 X T y


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GE8KWM1Z7D.jpg)

6.2 線形回帰 (3/4)
線形回帰の精度向上
基底関数
ϕ(x) = (ϕ0 (x), … , ϕb (x)) を考える
​
​
b
c^(x) = wT ϕ(x) = ∑ wj ϕj (x)
​
​
​
j=0
基底関数の例
xが1次元のとき: ϕ(x) = (1, x, x2 , … , xb )
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=b)
X2 = poly.fit_transform(X)
xが2次元(x1 , x2 )のとき(`degree=2`): ϕ(x) = (1, x1 , x2 , x21 , x1 x2 , x22 )
​
重み
​
w が線形であれば、最小二乗法が適用可能
​
​
​
​
​
​


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LELZN3Q1JR.jpg)

6.2 線形回帰 (4/4)
基底関数を用いたときの問題点
汎化性能の低下
(a) 基底関数を⽤いずに1次式で線形回帰
(b) 基底関数を⽤いて5次式で線形回帰


# Page. 8

![Page Image](https://bcdn.docswell.com/page/4JMVXD15JW.jpg)

6.3 回帰モデルの評価 (1/2)
回帰モデルの評価法(1)
平均二乗誤差 (MSE：Mean Squared Error)
手法間の評価に有効
N
1
MSE =
∑(yi − c^(xi ))2
N i=1
​
​
​
​
相関係数
出力と正解とがどの程度似ているかを-1から1までの値で表す
R=
∑N
^(xi ) − c~)(yi − y~)
i=1 (c
​
​
∑N
^(xi )
i=1 (c
​
​
− c~)2
​
​
​
∑N
i=1 (yi
​
​
− y~)2
​
​
​
c~ : c^(xi )の平均, y~ : yの平均
​
​


# Page. 9

![Page Image](https://bcdn.docswell.com/page/PJR2N4LZE9.jpg)

6.3 回帰モデルの評価 (2/2)
回帰モデルの評価法(2)
決定係数
「正解と予測の差の二乗」と「正解の分散」との比を1から引いたもの
相関係数
R の二乗と等しい
N
∑i=1 (yi − c^(xi ))2
2
R =1−
N
∑ (y − y~)2
​
i=1
​
​
i
​
​
​


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PEXDN2W17X.jpg)

6.4 正則化 (1/4)
正則化の考え方
誤差関数に正則化項を導入
→ 複雑な重み w （過学習）の回避
∣w∣ : 0となる重みが多くなる
L2ノルム ∥w∥2 : 重みを0に近づける
L1ノルム
リッジ回帰
誤差の二乗和にL2ノルム正則化項を加える
E(w) =
1
(y − Xw)T (y − Xw) + αwT w
2
​
w が解析的に求まる
w = (X T X + αI)−1 X T y
α : 正則化項の重み


# Page. 11

![Page Image](https://bcdn.docswell.com/page/3EKXNMVM7D.jpg)

6.4 正則化 (2/4)
ラッソ回帰
誤差の二乗和にL1ノルム正則化項を加える
d
1
E(w) = (y − Xw)T (y − Xw) + α ∑ ∣wj ∣
2
j=1
​
微分不可能な点があるため、解析的に解を求められない
解法の例 : coordinate descent algorithm
1つの変数（軸）の値だけを誤差が減る方向に変更することを繰り返す
​
​


# Page. 12

![Page Image](https://bcdn.docswell.com/page/L735VYM2E5.jpg)

6.4 正則化 (3/4)
リッジ回帰とラッソ回帰
最⼩⼆乗法の解
リッジ回帰の解
重みを0に近づけている
ラッソ回帰の解
0となる重みを多くしている


# Page. 13

![Page Image](https://bcdn.docswell.com/page/87DD85667G.jpg)

6.4 正則化 (4/4)
リッジ回帰とラッソ回帰
https://duchesnay.github.io/pystatsml/machine_learning/linear_regression.html


# Page. 14

![Page Image](https://bcdn.docswell.com/page/VJPX8DZZ78.jpg)

6.5 バイアスー分散のトレードオフ
バイアスと分散
バイアス：正解（＝真のモデル）からのズレ
分散：求まるモデルの安定性
単純なモデル
正解をカバーしていないかもしれない → バイアス 大
データが多少ぶれても結果は似ている → 分散 小
複雑なモデル
正解をカバーしている可能性が高い → バイアス 小
データが少し違えば結果が大きく異なる → 分散 大 （正則化項はこれを小さくしようとしている）
単純なモデル
複雑なモデル


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2EVLN1WMJQ.jpg)

6.6 回帰木 (1/3)
回帰木とは
識別における決定木の考え方を回帰問題に適用
ターゲット値の分散が小さくなるように分割
データを分割する質問
このノードに属するデータの平均値
出⼒値
（⾊が濃いほど
⼤きい値）


# Page. 16

![Page Image](https://bcdn.docswell.com/page/57GXK2DXEL.jpg)

6.6 回帰木 (2/3)
CART (classification and regression tree)
木の構造を二分木に限定
識別の際のデータの分類基準はジニ不純度
2クラスの場合のジニ不純度
Gini(p) = 2p(1 − p)
p : 正例の割合
クラスの出現が等確率のとき最大
回帰に用いるときのデータの分類基準：ターゲット値の分散
子ノードの重み付き分散和が最小＝分割後の分散の減少量が最大 となる特徴を選ぶ


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4EQ8NP15JP.jpg)

6.6 回帰木 (3/3)
CARTの特徴選択基準
データ
D の分散
N
SS(D) = ∑(yi − y~)2
​
​
​
i=1
分割後の分散の減少量が最大となる特徴を選ぶ
ΔSS(D) = SS(D) − PL ⋅ SS(DL ) − PR ⋅ SS(DR )
​
DL : 左部分木のデータ
​
DR : 右部分木のデータ
PL : 左部分木のデータ数の割合
PR : 右部分木のデータ数の割合
​
​
​
​
​
​


# Page. 18

![Page Image](https://bcdn.docswell.com/page/KJ42GYRVE1.jpg)

6.7 モデル木
モデル木とは
リーフを線形回帰式にした回帰木
CHMIN
&lt;= 7.5
class =
-0.0055 * MYCT
+ 0.0013 * MMIN
+ 0.0029 * MMAX
+ 0.8007 * CACH
+ 0.4015 * CHMAX
+ 11.0971
&gt; 7.5
MMAX
&lt;= 28000
&gt; 28000
class =
-0.4882 * MYCT
+ 0.0218 * MMIN
+ 0.003 * MMAX
+ 0.3865 * CACH
- 1.3252 * CHMIN
+ 3.3671 * CHMAX
- 51.8474


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LE1MD6Q47G.jpg)

6.8 まとめ
線形回帰
最小二乗法で回帰関数のパラメータを求めることができる
基底関数によって複雑な関数も表現可能
正則化で過学習を回避
回帰木
決定木を用いて回帰を行う
振る舞いが異なるデータが混合しているときに有効
リーフを線形回帰式にしたものがモデル木


