更新:2025/02/27

最小二乗法、残差の意味と導出について

はるか
はるか
最小二乗法、データの誤差を最小にする方法。
ふゅか
ふゅか
そう!データのバラつきを考慮して、最適な直線を求める手法ね。統計とか機械学習でよく使われるの!

1. 最小二乗法とは?

最小二乗法(さいしょうにじょうほう、Least Squares Method)は、データのばらつきを考慮しながら最適な近似直線(回帰直線)を求める方法です。データの誤差をできるだけ小さくするように関数を決める手法の一つで、特に統計や機械学習で広く利用されます。

2. 最小二乗法の基本的な考え方

最小二乗法では、観測されたデータと予測値の差(残差)の二乗和を最小にするようにモデルのパラメータを決定します。

例えば、直線 \[ y = ax + b \] をデータに当てはめる場合、各データ点 \((x_i, y_i)\) に対して残差は \[ \epsilon_i = y_i - (ax_i + b) \] となります。この残差の二乗の和 \[ S = \sum_{i=1}^{n} (y_i - (ax_i + b))^2 \] を最小化するように \(a\)(傾き)と \(b\)(切片)を求めるのが最小二乗法の目的です。

はるか
はるか
残差って、実際の値と予測値の差のこと。

ふゅか
ふゅか
うん、それを二乗して合計したものを「残差平方和」って呼ぶの!その和を最小にするのが最小二乗法!

3. 最小二乗法の計算方法

直線のパラメータ \(a\) と \(b\) は以下の式で求められます。

\[ a = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \]

ここで、\(\bar{x}\) は \(x\) の平均値、\(\bar{y}\) は \(y\) の平均値です。

\[ b = \bar{y} - a\bar{x} \]

共分散 \( s_{xy} \) や分散 \( s_x^2 \) を使って表すと、最小二乗法による直線のパラメータ \( a \)  は次のようになります。

\[ a = \frac{s_{xy}}{s_x^2} \]

また、bの式から回帰直線がxの平均値とyの平均値を通ることがわかる。

4. 最小二乗法の導出

最小二乗法では、データ \((x_1, y_1), (x_2, y_2), …, (x_n, y_n)\) に対して、誤差(残差)の二乗和を最小にするような直線 \[ y = ax + b \] を求めます。

4.1. 残差平方和の定義

各データ点 \((x_i, y_i)\) に対する残差(誤差)は、 \[ \epsilon_i = y_i - (ax_i + b) \] この残差の二乗の和(残差平方和)を最小にするような \(a, b\) を求めるのが最小二乗法です。 \[ S(a, b) = \sum_{i=1}^{n} (y_i - (ax_i + b))^2 \] この関数 \(S(a, b)\) を \(a\) と \(b\) に関して最小化します。

4.2. 偏微分して最小値を求める

関数 \(S(a, b)\) を最小にするには、\(a, b\) に関して偏微分し、それを \(0\) にする方程式を求めます。

4.3.  切片 \(b\) に関する偏微分

\[ \frac{\partial S}{\partial b} = \sum_{i=1}^{n} 2(y_i - (ax_i + b)) (-1) = -2 \sum_{i=1}^{n} (y_i - ax_i - b) \] これを 0 とすると、 \[ \sum_{i=1}^{n} (y_i - ax_i - b) = 0 \] \[ \sum_{i=1}^{n} y_i = a \sum_{i=1}^{n} x_i + n b \] ここで、\(x\) の平均値 \(\bar{x} = \frac{1}{n} \sum x_i\)、\(y\) の平均値 \(\bar{y} = \frac{1}{n} \sum y_i\) を使うと、 \[ \bar{y} = a\bar{x} + b \]

4.4. 傾き \(a\) に関する偏微分

次に、傾き \(a\) に関して微分します。 \[ \frac{\partial S}{\partial a} = \sum_{i=1}^{n} 2(y_i - (ax_i + b))(-x_i) = -2 \sum_{i=1}^{n} x_i (y_i - ax_i - b) \] これを 0 とすると、 \[ \sum_{i=1}^{n} x_i y_i = a \sum_{i=1}^{n} x_i^2 + b \sum_{i=1}^{n} x_i \]

\[ \sum_{i=1}^{n} x_i y_i - b \sum_{i=1}^{n} x_i = a \sum_{i=1}^{n} x_i^2 \]

\[ \sum_{i=1}^{n} x_i y_i - (\bar{y} - a \bar{x}) \sum_{i=1}^{n} x_i = a \sum_{i=1}^{n} x_i^2 \]

ここで、\(\sum x_i = n\bar{x}\) を使うと、

\[ \sum_{i=1}^{n} x_i y_i - \bar{y} n\bar{x} + a\bar{x} n\bar{x} = a \sum_{i=1}^{n} x_i^2 \]

\[ \sum_{i=1}^{n} x_i y_i - n\bar{x}\bar{y} = a \sum_{i=1}^{n} x_i^2 - a n\bar{x}^2 \]

\[ \sum_{i=1}^{n} x_i y_i - n\bar{x}\bar{y} = a (\sum_{i=1}^{n} x_i^2 - n\bar{x}^2) \]

ここで、共分散と分散の定義を使います。

\[ s_{xy} = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y}) = \frac{1}{n} \sum_{i=1}^{n} x_i y_i - \bar{x} \bar{y} \]

\[ s_x^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2 = \frac{1}{n} \sum_{i=1}^{n} x_i^2 - \bar{x}^2 \]

これを用いると、

\[ a = \frac{s_{xy}}{s_x^2} \]

となります。

PR