# 最小二乗法の導出方法についてわかりやすく解説！

> 当サイト【スタビジ】の本記事では最小二乗法について解説してきます。最小二乗法とは単回帰分析・重回帰分析におけるパラメータの決定方法であり、残差の平方和を最小化することで求めることができます！今回は最小二乗法の導出方法について解説していきます

- URL: https://toukei-lab.com/least_squares_method
- 公開: 2023.11.05 / 更新: 2025.08.18
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では最小二乗法について解説していきます。最小二乗法とは、観測されたデータに一番よく合う直線や曲線を見つけるための方法です。これを使うと、たくさんの点（データ）の中でそれらの点に一番近い線を引くことができます。今回はそんな最小二乗法の導出方法について解説していきます。
:::

こんにちは！

スタビジ編集部です！

今回は最小二乗法について解説していきます！

<mark>最小二乗法とは「データに一番よく合う直線や曲線を見つけるための方法」です。</mark>

これを使うと、たくさんの点（データ）の中で、それらの点に一番近い線を引くことができます。

:::talk{who="umatan" side="right"}
統計学を学び始めると必ず学び始める概念なので、しっかりと理解していきましょう！（もちろん復習にも使うことができます。）
:::

この記事では、そんな最小二乗法の導出方法について解説していきます！

:::point
**・最小二乗法の導出方法について解説！**
:::

以下のYoutube動画でも解説していますので合わせてチェックしてみてください！！

::youtube{#tgHvJUS78qM}

## 最小二乗法の導出方法について解説！

それでは具体的な事例で見ていきましょう！

たとえば、クラスの5人の友達で英語と数学のテストの点数の関係を調べたいとします。

<mark>5人の友達で英語と数学のテストの点数をグラフにプロットしてみることにしましょう。</mark>

<mark>しかし、みんなの点はバラバラで一つの線で完全には結べません。</mark>

そこで、最小二乗法を使うとこれらの点の「真ん中」を通るような直線を引くことができます。

これが「**最も合っている直線**」というわけです。

![最小二乗法　例](/wp-content/uploads/2023/11/3acf7efab41648e4755d0c9f3f90198b-1024x576.jpg)

どうして「最も合っている」と言えるのかというと、各点から直線までの距離（これを「残差」といいます）の二乗（つまり、距離×距離）を合計したものが最小になる線を引くからです。

:::talk{who="umatan"}
なぜ二乗するかというと、点が直線より上にある場合も下にある場合もあるから単純に距離を足し合わせてしまうとプラスとマイナスが打ち消しあってしまうからだよ！二乗することで、すべてプラスにして合計しやすくしているんだ！
:::

この点で言えば、絶対値でも問題なさそうですが、正規分布との相性が良く、2乗した値が使われています！

最小二乗法は<mark>「残差の平方和を最小にする方法」</mark>であり、これによって尤もらしい直線を表せるパラメータを導出することができるわけですね！

### 問題設定（単回帰分析の場合）

ここからちょっと数式を交えて見ていきましょう！

実際に最小二乗法の問題設定を見ていきます！

最小二乗法は変数が大量にある多変数問題でも使えるのですが、ここではシンプルな単変数において[単回帰分析](/residual)を行いたいケースで数式展開をしていきましょう！

$y_{i}$は目的変数、$x_{i}$は説明変数、$\hat{y_{i}}$は予測値とすると残差平方和は以下のようになり、この式を最小化する$β_{0}$と$β_{1}$を見つけたいということになります。

$E=\sum_{i=1}^{n}(y_{i}-(β_{0}+β_{1}x_{i}))^{2}$

回帰式は$β_{0}+β_{1}x_{i}$で表されているので、回帰式で算出した予測値と観測値であるデータ$y_{i}$の差を2乗したものを合計していることがわかります。

これこそが残差平方和なのです。

<mark>繰り返しになりますが、最小二乗法のゴールは単回帰モデルにおけるパラメータ$\hat{β_{0}}, \hat{β_{1}}$を導出することです。</mark>

したがって先ほどの問題設定を$β_{0}, β_{1}$のそれぞれで偏微分してみましょう。偏微分した式が0になるパラメータが残差平方和を最小にする最適なパラメータになることが知られています。

<mark>$\frac{δE}{δβ_{0}}=-2\sum_{i=1}^{n}(y_{i}-β_{0}-β_{1}x_{i})$</mark>

<mark>$\frac{δE}{δβ_{1}}=-2\sum_{i=1}^{n}(y_{i}-β_{0}-β_{1}x_{i})x_{i}$</mark>

これらの式を0としたとき、式展開することができます。

左辺に0を代入して、そのまま左辺に項を移せばいいので簡単ですね！以下のようになります。

<mark>$\sum_{i=1}^{n}y_{i} = nβ_{0}+\sum_{i=1}^{n}β_{1}x_{i}$</mark>

<mark>$\sum_{i=1}^{n}x_{i}y_{i} = \sum_{i=1}^{n}β_{0}x_{i}+\sum_{i=1}^{n}β_{1}x_{i}^{2}$</mark>

それでは、これらの式を展開していきましょう！まず最初の式を展開すると…

$nβ_{0}=\sum_{i=1}^{n}y_{i}-\sum_{i=1}^{n}β_{1}x_{i}$

$β_{0}=\frac{1}{n}\sum_{i=1}^{n}y_{i}-β_{1}\frac{1}{n}\sum_{i=1}^{n}x_{i}$

<mark>$β_{0} = \bar{y}-β_{1}\bar{x}$</mark>

この式を使って、先ほどの2番目の式に代入しつつ計算すると…少し複雑ですが以下のように展開することができ

$\sum_{i=1}^{n}x_{i}y_{i} = \sum_{i=1}^{n}(\bar{y}-β_{1}\bar{x})x_{i}+\sum_{i=1}^{n}β_{1}x_{i}^{2}$

$\sum_{i=1}^{n}x_{i}y_{i} = (\bar{y}-β_{1}\bar{x})n\bar{x}+\sum_{i=1}^{n}β_{1}x_{i}^{2}$

$\sum_{i=1}^{n}x_{i}y_{i} = n\bar{x}\bar{y}-nβ_{1}\bar{x}^{2}+β_{1}\sum_{i=1}^{n}x_{i}^{2}$

$\sum_{i=1}^{n}x_{i}y_{i} – n\bar{x}\bar{y} = β_{1}(\sum_{i=1}^{n}x_{i}^{2}-n\bar{x}^{2})$

最終的に$β_{1}$を求めると以下の式ができますね！

$β_{1}=\frac{\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i} – \bar{x}\bar{y}}{\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}-\bar{x}^{2}}$

次に$\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}-\bar{x}^{2}$を変形しましょう。

$\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}-\bar{x}^{2}=\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}-2\bar{x}^{2}+\bar{x}^{2}=$

$\frac{1}{n}\sum_{i=1}^{n}x_{i}^{2}-2\frac{\sum_{i=1}^{n}x_{i}}{n}\bar{x}+\bar{x}^{2}=\frac{1}{n}\sum_{i=1}^{n}(x_{i}^{2}-2\bar{x}x_{i}+n\bar{x}^{2})=$

<mark>$\frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}$</mark>

そして$\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i} – \bar{x}\bar{y}$を式展開しましょう。

$\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i} – \bar{x}\bar{y}=\frac{1}{n}\sum_{i=1}^{n}x_{i}y_{i} – 2\bar{x}\bar{y}+\bar{x}\bar{y}=$

$\frac{1}{n}(\sum_{i=1}^{n}x_{i}y_{i}-2nx_{i}y_{i}+nx_{i}y_{i})=\frac{1}{n}\sum_{i=1}^{n}(x_{i}y_{i}-\bar{x_{i}}y_{i}-x_{i}\bar{y_{i}}+\bar{x}\bar{y})=$

<mark>$\frac{1}{n}\sum_{i=1}^{n}((x_{i}-\bar{x})(y_{i}-\bar{y}))$</mark>

式展開した2つの式を、先ほどの式に代入すると…

<mark>$β_{1}=\frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}=\frac{S_{xy}}{S_{x}^{2}}$</mark>

$β_{1}$は$x$,$y$の共分散$S_{xy}$を$x$の分散$S_{x}$で除した値であることが分かります。

まとめると単回帰式におけるパラメータは以下の通りです！

<mark>$β_{0} = \bar{y}-β_{1}\bar{x}$</mark>

<mark>$β_{1}=\frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2}}$</mark>

### Pythonで見てみよう！

先程のデータを用いて$β_{1}$の計算が合っているかを確認していきましょう。

sklearn.linear_modelのLinearRegressionから求めた回帰係数$β_{1}$と[共分散](/covariance_and_cor)と[分散](/variance)から求めた回帰係数を比較していきます。

```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x = pd.DataFrame([88,64,79,94,70])
y = pd.DataFrame([90,72,75,89,69])
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x,y)
print("計算した回帰係数:{}".format(np.cov([[88,64,79,94,70],[90,72,75,89,69]],bias=True)[0,1]/np.var([88,64,79,94,70])))
print("切片:{},回帰係数:{}".format(model.intercept_,model.coef_))
```

![最小二乗法　python](/wp-content/uploads/2023/11/66c19942ab4ba346fdb64ccc04cde373.png)

計算した回帰係数はモジュールで求めた回帰係数と一致しているため、最小二乗法による回帰係数の求め方は合っていることが分かりましたね！

## 最小二乗法　まとめ

![Happy](/wp-content/uploads/2020/08/Celebration-amico-min-e1618926172675-1024x932.png)

ここまでご覧いただきありがとうございました！

本記事では**最小二乗法**についてまとめました！

今回は[回帰分析](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)を使ったので、どのような手法なのか知りたい方はこちらもご覧ください！

<https://toukei-lab.com/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90>

また[重回帰分析における回帰係数の求め方](/coefficient)について詳しく書かれた記事もあるので、ぜひ参照してください！

<https://toukei-lab.com/coefficient>

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

当メディアでは、データサイエンティストの経験を詰め込んだデータサイエンス特化のスクール[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)を運営していますので，興味のある方はぜひチェックしてみてください！

### AIデータサイエンス特化スクール「スタアカ」

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

データサイエンスに関する記事はこちら！

<https://toukei-lab.com/statistics-freshman>

<https://toukei-lab.com/datascience-book>

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください！

<https://toukei-lab.com/datascientist-school>