Python ではじめる機械学習 6. 回帰

>100 Views

November 22, 25

スライド概要

profile-image

機械学習・音声認識・プログラミングに関する書籍を執筆しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

6. 回帰 6.1 数値特徴に対する「教師あり・回帰」問題の定義 6.2 線形回帰 6.3 正則化 6.4 回帰木 荒木雅弘 : 『Pythonではじめる機械学 習』 (森北出版,2025年) スライドとコード

2.

6. 回帰 問題設定 教師あり学習 数値入力 → 数値出力 機械学習 数値特徴 教師あり学習 識別 回帰 中間的学習 教師なし学習 築年数 41 平均部屋数 7.0 地区⼈⼝ 322 価格 4.526 数値

3.

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

4.

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

5.

6.2 線形回帰 (2/6) 最小二乗法による重みの推定 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

6.

6.2 線形回帰 (3/6) 回帰モデルの評価法(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 ) − c~)2 i=1 (c ​ ​ ​ ​ ​ ~2 ∑N i=1 (yi − y ) ​ ​ ​ ​ ​ c~ : c^(xi )の平均, y~ : yの平均 ​ ​

7.

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

8.

6.2 線形回帰 (5/6) 線形回帰の精度向上 基底関数 ϕ(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 が線形であれば,最小二乗法が適用可能 ​ ​ ​ ​ ​ ​

9.

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

10.

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

11.

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

12.

6.3 正則化 (3/4) リッジ回帰とラッソ回帰 Lasso 回帰の解 Ridge 回帰の解 正則化項のとりえる範囲 重みを0に近づけている (a) Ridge 回帰 0となる重みを多くしている (b) Lasso 回帰

13.

6.3 正則化 (4/4) バイアスー分散のトレードオフ バイアス:正解(=真のモデル)からのズレ 分散:求まるモデルの安定性 単純なモデルは,正解をカバーしていないかもしれない(バイアス 大)が,データが多 少ぶれても結果は似ている(分散 小) 複雑なモデルは,正解をカバーしている可能性が高い(バイアス 小)が,データが少し 違えば結果が大きく異なる(分散 大) (正則化項は分散を小さくする) ・真のモデルをカバーして いないかもしれない. ・学習は安定している. ・真のモデルをカバーして いる可能性は⾼い. ・学習が不安定. 真のモデル (a) 単純なモデルを⽤いた学習 (b) 複雑なモデルを⽤いた学習

14.

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

15.

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

16.

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

17.

6.4 回帰木 (4/4) モデル木 リーフを線形回帰式にした回帰木 CHMIN <= 7.5 class = -0.0055 * MYCT + 0.0013 * MMIN + 0.0029 * MMAX + 0.8007 * CACH + 0.4015 * CHMAX + 11.0971 > 7.5 MMAX <= 28000 > 28000 class = -0.4882 * MYCT + 0.0218 * MMIN + 0.003 * MMAX + 0.3865 * CACH - 1.3252 * CHMIN + 3.3671 * CHMAX - 51.8474

18.

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