「C++の応用 - 最小二乗法」の版間の差分

ナビゲーションに移動 検索に移動
1行目: 1行目:
== 概要 ==
== 概要 ==
最小二乗法は、データ点と予測モデルとの誤差を最小化する手法として、統計学や機械学習で使用されている手法である。<br>
<br>
これは、実測値と予測値の差 (残差) の2乗和を最小にすることである。<br>
2乗を用いる理由は、正と負の誤差を同等に扱えること、および、数学的な扱いが容易になるためである。<br>
<br>
線形回帰直線は、次式で表現される。<br>
予測モデル:
<math>y = ax + b</math>
yは目的変数、xは説明変数、aは傾き、bは切片である。
<br>
残差平方和 (RSS : Residual Sum of Squares) は、次式のように表される。<br>
<math>RSS = \sum_{i=1}^n (y_{i} - (a x_{i} + b))^{2}</math>
<math>(y_{i}, x_{i})</math> は実測データの点である。
<br>
この残差平方和を最小化するために、aとbに関する偏微分を0とおく。<br>
<br>
<math>\dfrac{\partial RSS}{\partial a} = 2 \sum_{i=1}^n (y_{i} - (a x_{i} + b)) \cdot (-x_{i}) = 0</math><br>
<br>
<math>\dfrac{\partial RSS}{\partial b} = 2 \sum_{i=1}^n (y_{i} - (a x_{i} + b)) \cdot (-1)= 0</math><br>
<br>
これらの方程式を解くことにより、最適なaとbを求めることができる。<br>
ここで、nはデータ点の数である。<br>
<br>
詳細な導出過程は、[[第4回 - 2変数の回帰分析]]のページを参照すること。<br>
<br>
<math>
\begin{align}
a &= \dfrac{\sum_{i=1}^n {(x_i - \bar{x})(y_i - \bar{y})}}{\sum_{i=1}^n {(x_i - \bar{x})^{2}}} \\
  &= \dfrac{C_{xy}}{\sigma_{x}^{2}} \\
  &= \dfrac{\mbox{  x  と  y  の  共  分  散  }}{\mbox{  x  の  母  分  散  }}
\end{align}
</math><br>
<br>
<math>
\begin{align}
b &= \dfrac{\sum_{i=1}^n {y_i} - a \sum_{i=1}^n {x_i}}{n} \\
  &= \bar{y} - a \bar{x}
\end{align}
</math><br>
<br>
最小二乗法は単純な線形回帰だけでなく、多変量解析や非線形回帰等の複雑なモデルにも拡張することが可能である。<br>
例えば、多項式回帰では、予測モデルを <math>y = ax^{2} + bx + c</math> のように設定して、同様の原理で係数を求めることができる。<br>
<br>
また、正規方程式を行列形式で表現することにより、効率的に計算することも可能である。<br>
特に大規模なデータセットを扱う場合、数値計算ライブラリを使用して効率的に解を求めることができる。<br>
<br><br>
<br><br>


案内メニュー