線形回帰についてClaude Opus 4.5に説明してもらいました。
自分は間違いを指摘したり、構成を整理しました。
線形回帰
データから関係を見つける
まず、具体的なデータを見てみましょう。
例:勉強時間とテスト点数
| 生徒 | 勉強時間(時間) | テスト点数 |
|---|---|---|
| A | 1 | 35 |
| B | 2 | 50 |
| C | 3 | 58 |
| D | 4 | 72 |
| E | 5 | 80 |
| F | 6 | 92 |
このデータをグラフにプロットすると、勉強時間と点数の間に関係があることがわかります。
データ点がほぼ直線上に並んでいることがわかります。この関係を直線で表すことができれば、「7時間勉強したら何点取れるか?」を予測できます。
線形回帰の目的
データ点に最もよく当てはまる直線を見つけ、新しい入力に対する予測を行うこと。
最適な直線を求める方法
では、どのようにして「最適な直線」を見つけるのでしょうか?まず、いくつかの直線を引いてみましょう。
3本の直線のうち、緑の直線Bが最もデータ点に近いように見えます。しかし、「最も近い」とはどういう意味でしょうか?
残差(誤差)を測る
各データ点と直線の距離(残差)を測ることで、直線の良さを数値化できます。
平均二乗誤差(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(平均二乗誤差)が小さいほど、直線がデータによく当てはまっています。
最小二乗法の考え方
MSE(残差二乗の平均)を最小にする直線のパラメータ(傾きと切片)を見つける。これが最小二乗法です。
勾配降下法による学習
最適な直線を見つけるには、MSEを最小化するパラメータを探す必要があります。勾配降下法は、少しずつパラメータを調整して最適値に近づく方法です。
具体例 : パラメータ更新の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\)(改善!)
学習率の重要性
- 大きすぎる:最小値を飛び越えて発散
- 小さすぎる:収束が非常に遅い
- 適切な値:安定して最小値に到達
線形回帰とニューラルネットワーク
線形回帰は、実は最もシンプルなニューラルネットワークと見なすことができます。
| 線形回帰の用語 | ニューラルネットワークの用語 |
|---|---|
| 入力変数 \(x\) | 入力ノード |
| 重み \(w\) | 結合重み |
| 切片 \(b\) | バイアス |
| 予測値 \(\hat{y}\) | 出力 |
| MSE最小化 | 損失関数の最小化 |
| 勾配降下法 | 誤差逆伝播法 |
ニューラルネットワークへの拡張
線形回帰に以下を追加すると、より複雑なパターンを学習できます:
- 隠れ層 : 中間の処理層を追加
- 活性化関数 : 非線形性を導入(ReLU、シグモイドなど)
数式のまとめ
本章で扱った概念を数式でまとめます。
単回帰モデル
$$\hat{y} = wx + b$$
\(w\): 重み(傾き)、\(b\): バイアス(切片)、\(\hat{y}\): 予測値
損失関数 (平均二乗誤差)
$$\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\): 学習率
$$\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}$$
まとめ
- 線形回帰は、データから直線的な関係を学習する
- 残差 (予測と実際の差)の二乗和を最小化する直線を探す
- MSE (平均二乗誤差)で直線の良さを評価する
- 勾配降下法で少しずつパラメータを調整して最適解に近づく
- 線形回帰は活性化関数のない1層ニューラルネットワークと等価
広告
さくらのレンタルサーバムームードメイン
Oisix(おいしっくす)
らでぃっしゅぼーや
珈琲きゃろっと
エプソムソルト
【FRONTIER】
AdGuard Ad Blocker
AdGuard VPN
AdGuard DNS