機械学習の入り口、線形回帰。最小二乗法で係数を求める仕組みを理解します。
回帰って具体的にはどんなモデルなの?
最も単純なのが線形回帰。 y = β₀ + β₁x₁ + β₂x₂ + ... というふうに、特徴量の重み付き和でyを予測するモデルよ。
係数 β を求める方法が最小二乗法(Least Squares)。 予測値と実測値の残差の二乗和を最小化する係数を選ぶの。
なんで二乗するんですかぁ?
符号を消して、大きな誤差ほど強く反映できるためよ。 二乗誤差は数学的にも扱いやすくて、解析的に解けるの(正規方程式)。
解析的って?
勾配降下法のような数値最適化を使わず、行列演算で一発で答えが出る、という意味。 β = (XᵀX)⁻¹Xᵀy が正規方程式の解。
ややこしそうですぅ…
DS検定★ では公式そのものより『最小二乗法は残差の二乗和を最小化する』『線形回帰は y = Σβᵢxᵢ + 切片 という形』を押さえれば十分よ。
線形回帰のとき、入力データに気をつけることってある?
いくつかあるわ。 (1)多重共線性=説明変数同士が強く相関している状態、(2)外れ値が結果に強い影響を与える、(3)非線形な関係は直線で近似しきれない、など。
多重共線性があると係数の解釈が難しくなる。 VIF(分散拡大係数)で診断し、必要なら相関の高い変数を除く・主成分分析を使う、といった対処をするの。
わぁ、回帰でも気をつけることがたくさんあるんですねぇ。
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2.1, 3.9, 6.0, 8.1, 10.0])
model = LinearRegression()
model.fit(X, y)
print(f'切片: {model.intercept_:.2f}') # 0.06
print(f'係数: {model.coef_[0]:.2f}') # 2.00
確認クイズ
線形回帰の最小二乗法で最小化される目的関数として正しいのはどれか。
- 残差の絶対値の和 Σ|yᵢ - ŷᵢ|
- 残差の二乗和 Σ(yᵢ - ŷᵢ)²
- 残差の三乗和 Σ(yᵢ - ŷᵢ)³
- 予測値の二乗和 Σŷᵢ²
こたえを見る
正解: 2. 残差の二乗和 Σ(yᵢ - ŷᵢ)²
残差の二乗和 Σ(yᵢ - ŷᵢ)²を最小化するのが最小二乗法です。 二乗することで符号が消え、大きな誤差を強調でき、数学的にも扱いやすくなります。