線形回帰

線形回帰についてClaude Opus 4.5に説明してもらいました。
自分は間違いを指摘したり、構成を整理しました。

線形回帰

線形回帰(Linear Regression)は、機械学習の最も基本的なアルゴリズムです。データから直線的な関係を見つけ出し、予測に活用します。


データから関係を見つける

まず、具体的なデータを見てみましょう。

例:勉強時間とテスト点数

生徒 勉強時間(時間) テスト点数
A 1 35
B 2 50
C 3 58
D 4 72
E 5 80
F 6 92

このデータをグラフにプロットすると、勉強時間と点数の間に関係があることがわかります。

001

データ点がほぼ直線上に並んでいることがわかります。この関係を直線で表すことができれば、「7時間勉強したら何点取れるか?」を予測できます。

線形回帰の目的

データ点に最もよく当てはまる直線を見つけ、新しい入力に対する予測を行うこと。


最適な直線を求める方法

では、どのようにして「最適な直線」を見つけるのでしょうか?まず、いくつかの直線を引いてみましょう。

002

3本の直線のうち、緑の直線Bが最もデータ点に近いように見えます。しかし、「最も近い」とはどういう意味でしょうか?

残差(誤差)を測る

各データ点と直線の距離(残差)を測ることで、直線の良さを数値化できます。

003

平均二乗誤差(MSE)で直線の良さを測る

残差をそのまま足すと、プラスとマイナスが打ち消し合ってしまいます。そこで、残差を二乗してから平均を取ります。

残差二乗の計算例

生徒 実際の点数 予測値 残差 残差\(^2\)
A 35 35.5 -0.5 0.25
B 50 47.0 +3.0 9.00
C 58 58.5 -0.5 0.25
D 72 70.0 +2.0 4.00
E 80 81.5 -1.5 2.25
F 92 93.0 -1.0 1.00
残差二乗の合計 16.75
平均二乗誤差(MSE) \(16.75 \div 6 = 2.79\)

このMSE(平均二乗誤差)が小さいほど、直線がデータによく当てはまっています。

004

最小二乗法の考え方

MSE(残差二乗の平均)を最小にする直線のパラメータ(傾きと切片)を見つける。これが最小二乗法です。


勾配降下法による学習

最適な直線を見つけるには、MSEを最小化するパラメータを探す必要があります。勾配降下法は、少しずつパラメータを調整して最適値に近づく方法です。

005

具体例 : パラメータ更新の1ステップ

現在の直線 : 傾き \(w = 10\)、切片 \(b = 20\)(予測式: \(\text{点数} = 10 \times \text{時間} + 20\)

この直線の \(\text{MSE} = 15.5\)(まだ大きい)

勾配を計算した結果:

  • 傾きの勾配 \(= -3.0\)(傾きを増やすとMSEが減る)
  • 切片の勾配 \(= +2.0\)(切片を減らすとMSEが減る)

学習率 \(\eta = 0.5\) で更新:

  • 新しい傾き: \(w = 10 – \eta \times (-3.0) = 10 – 0.5 \times (-3.0) = 11.5\)
  • 新しい切片: \(b = 20 – \eta \times (+2.0) = 20 – 0.5 \times (+2.0) = 19.0\)

更新後の直線の \(\text{MSE} = 8.2\)(改善!)

学習率の重要性

  • 大きすぎる:最小値を飛び越えて発散
  • 小さすぎる:収束が非常に遅い
  • 適切な値:安定して最小値に到達


線形回帰とニューラルネットワーク

線形回帰は、実は最もシンプルなニューラルネットワークと見なすことができます。

007

線形回帰の用語 ニューラルネットワークの用語
入力変数 \(x\) 入力ノード
重み \(w\) 結合重み
切片 \(b\) バイアス
予測値 \(\hat{y}\) 出力
MSE最小化 損失関数の最小化
勾配降下法 誤差逆伝播法

ニューラルネットワークへの拡張

線形回帰に以下を追加すると、より複雑なパターンを学習できます:

  • 隠れ層 : 中間の処理層を追加
  • 活性化関数 : 非線形性を導入(ReLU、シグモイドなど)


数式のまとめ

本章で扱った概念を数式でまとめます。

単回帰モデル

予測式(1変数)

$$\hat{y} = wx + b$$

\(w\): 重み(傾き)、\(b\): バイアス(切片)、\(\hat{y}\): 予測値

損失関数 (平均二乗誤差)

MSE (Mean Squared Error)

$$\text{MSE} = \frac{1}{m}\sum_{i=1}^{m}(y_i – \hat{y}_i)^2$$

\(m\): データ点の数、\(y_i\): 実際の値、\(\hat{y}_i\): 予測値

勾配降下法

パラメータ更新則

$$w \leftarrow w – \eta \frac{\partial \text{MSE}}{\partial w}$$
$$b \leftarrow b – \eta \frac{\partial \text{MSE}}{\partial b}$$

\(\eta\): 学習率

MSEの勾配

$$\frac{\partial \text{MSE}}{\partial w} = -\frac{2}{m}\sum_{i=1}^{m}(y_i – \hat{y}_i)x_i$$
$$\frac{\partial \text{MSE}}{\partial b} = -\frac{2}{m}\sum_{i=1}^{m}(y_i – \hat{y}_i)$$

正規方程式 (解析解)

単回帰の解析解

$$w = \frac{\sum_{i=1}^{m}(x_i – \bar{x})(y_i – \bar{y})}{\sum_{i=1}^{m}(x_i – \bar{x})^2}$$
$$b = \bar{y} – w\bar{x}$$

\(\bar{x}\): \(x\)の平均、\(\bar{y}\): \(y\)の平均

重回帰の行列解

$$\mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}$$

まとめ





«       »
カテゴリーAI