統計学

回帰分析・最小二乗法

2022年7月26日


回帰分析とは、
データの構成によっては以下のような直線だけではなく、曲線によっても表現できたりします。

みんな大好き、回帰分析!
かどうかはわからないですが、データ解析といえば、回帰分析ですね!
そのくらい統計学ではめちゃくちゃ有名な分析法になるわけです。

回帰分析とは?

回帰分析とは、その名の通り、、、と説明ができないんですが、
今あるデータから予測をする分析手法のことを言います。

時系列などのデータを見たときに、

回帰分析はさまざまな手法があり、
以下のように\(y=b(x)+\epsilon , \epsilon \, \sim N(0,\sigma^{2})\)という形式で、

\(① \quad b(x)=ax\)
これは説明変数が1つなので、単回帰分析
 

\(② \quad b(x_{1},x_{2}) = ax_{1}+bx_{2}\)
これは説明変数が2つ以上で複数なので、重回帰分析
 

\(③ \quad b(x) = ax^{2}\)
これは説明変数が1つではあるが、2乗など
 

単回帰分析での回帰係数の導出の方法としては以下の2つがあります。

  • \(①\) 最小二乗法による回帰係数推定
  • \(②\) 誤差 \(\epsilon \sim N(0,\sigma^{2})\)による最尤法推定

ここでは上記2つの方法について説明をしていこうと思います。

\(①\) 最小二乗法による回帰係数推定

説明変数を\(x\)とし、その回帰係数を\(\beta\)、目的変数を\(y\)として、誤差を\(\epsilon \sim N(0,\sigma^{2})\)とします。
この時、\(y=\beta x+\epsilon\)とします。
目的変数は予測したい値というつまり目的となる値なので、目的変数です。

最小二乗法
二乗で考える理由は以下です。
イプシロンは基準によるが、マイナスになることもあるので、一概にイプシロンの和だと+1と-1で誤差は2だけどプラマイ0となり、誤差が0になってしまう。
なのでイプシロン1乗に対して絶対値をとって無理くり0より大きいにしても、計算が難しくなる
なので絶対値ではなくイプシロン2乗とすることで、常に0より大きい値になるし、さらに絶対値の1乗と2乗の結果は同じであり、さらに2乗にすることで以下説明するが展開すると、2次関数になるので、最小値を出すことができる。
イプシロンは常に0より大きいので、絶対値の1乗も2乗も結果は同じ。
\begin{eqnarray}
S_{n}
&=& \sum_{i=1}^{n} \epsilon^{2} \\
&=& \sum_{i=1}^{n} (y_{i}-\beta x_{i})^{2} \\
&=& \sum_{i=1}^{n} (y_{i}^{2} - 2\beta x_{i}y_{i} + \beta^{2}x_{i}^{2}) \\
&=& \sum_{i=1}^{n}{y_{i}^{2}} - \sum_{i=1}^{n}{2\beta x_{i}y_{i}} + \sum_{i=1}^{n}{\beta^{2}x_{i}^{2}} \\
\end{eqnarray}
2次関数で下に凸なので平方完成しても良いが、頂点/最小値では接線の傾きが0になるので、偏微分して=0で解くと、

\begin{eqnarray}
\frac{\partial}{\partial \beta} S_{n}
&=& \sum_{i=1}^{n}{y_{i}^{2}} - \sum_{i=1}^{n}{2\beta x_{i}y_{i}} + \sum_{i=1}^{n}{\beta^{2}x_{i}^{2}} \\
&=& \frac{\partial}{\partial \beta} {\sum_{i=1}^{n}{y_{i}^{2}} - \sum_{i=1}^{n}{2\beta x_{i}y_{i}} + \sum_{i=1}^{n}{\beta^{2}x_{i}^{2}}} \\
&=& \frac{\partial}{\partial \beta} {\sum_{i=1}^{n}{y_{i}^{2}}} - \frac{\partial}{\partial \beta}{\sum_{i=1}^{n}{2\beta x_{i}y_{i}}} + \frac{\partial}{\partial \beta}{\sum_{i=1}^{n}{\beta^{2}x_{i}^{2}}} \\
&=& - {\sum_{i=1}^{n}{2 x_{i}y_{i}}} + {\sum_{i=1}^{n}{2\beta x_{i}^{2}}} \\
\end{eqnarray}

\(\displaystyle \frac{\partial}{\partial \beta} S_{n} = 0 \)により、
\begin{eqnarray}
- {\sum_{i=1}^{n}{2 x_{i}y_{i}}} + {\sum_{i=1}^{n}{2\hat{\beta_{}} x_{i}^{2}}} &=& 0 \\
\hat{\beta_{}}{\sum_{i=1}^{n}{x_{i}^{2}}} &=& {\sum_{i=1}^{n}{x_{i}y_{i}}} \\
\hat{\beta_{}} &=& \frac{\sum_{i=1}^{n}{x_{i}y_{i}}} { \sum_{i=1}^{n}{x_{i}^{2}} } \\
\end{eqnarray}
(※ \(\sum_{i=1}^{n}{x_{i}^{2}}\)は0でないとする)
 

そして、偏回帰係数\(\hat{\beta_{}}\)が求まり、これが予測の係数になるので、\(y\)の予測値\(\hat{y_{}}\)は、
\begin{eqnarray}
\hat{y_{}} &=& \hat{\beta_{}}x+\epsilon
\end{eqnarray}

そして、実測値\(y\)と予測値\(\hat{y_{}}\)の差\(e\)は、
\begin{eqnarray}
y - \hat{y_{}} &=& e
\end{eqnarray}
 

上の問題点は今現時点でとれたデータに対して処理をしています。
なのであくまで現時点の予測はいいということがわかりました。
 

\(②\) 誤差\(\epsilon \sim N(0,\sigma^{2})\)による最尤法推定

続いての方法として誤差は基本的に\(\epsilon \sim N(0,\sigma^{2})\)で仮定するので、その性質を用いて最尤法で求める方法になります。
そして\(①\)でも仮定したように、\(y=\beta x+\epsilon\)とします。
そうすると、誤差\(\epsilon\)は平均が0, 分散が\(\sigma^{2}\)の正規分布に従うことから、
\begin{eqnarray}
f(\epsilon)
&=& \frac{1}{\sqrt{2\pi\sigma^{2}}} {\exp \left( - \frac{\epsilon^{2}}{2\sigma^{2}} \right)} \\
&=& \frac{1}{\sqrt{2\pi\sigma^{2}}} {\exp \left( - \frac{(y-\beta x)^{2}}{2\sigma^{2}} \right)} \\
\end{eqnarray}
尤度関数\(L(\epsilon)\)は、
\begin{eqnarray}
L(\epsilon)
&=& \prod_{i=1}^{n} f(\epsilon_{i}) \\
&=& \frac{1}{\sqrt{2\pi\sigma^{2}}} {\exp \left( - \frac{(y_{1}-\beta x_{1})^{2}}{2\sigma^{2}} \right)} \cdot \frac{1}{\sqrt{2\pi\sigma^{2}}} {\exp \left( - \frac{(y_{2}-\beta x_{2})^{2}}{2\sigma^{2}} \right)} \cdot \cdot \cdot \cdot \cdot \frac{1}{\sqrt{2\pi\sigma^{2}}} {\exp \left( - \frac{(y_{n}-\beta x_{n})^{2}}{2\sigma^{2}} \right)}\\
&=& \left( \frac{1}{\sqrt{2\pi\sigma^{2}}} \right)^{n} {\exp \left( - \sum_{i=1}^{n}{\frac{(y_{i}-\beta x_{i})^{2}}{2\sigma^{2}}} \right)} \\
\end{eqnarray}
よって対数尤度関数\(l(\epsilon)\)は、
\begin{eqnarray}
l(\epsilon)
&=& \log{L(\epsilon)} \\
&=& \log{\left( \frac{1}{\sqrt{2\pi\sigma^{2}}} \right)^{n} {\exp \left( - \sum_{i=1}^{n}{\frac{(y_{i}-\beta x_{i})^{2}}{2\sigma^{2}}} \right)}} \\
&=& \log{ \left( \frac{1}{\sqrt{2\pi\sigma^{2}}} \right)^{n} } \log \left\{ \exp \left( - \sum_{i=1}^{n}{\frac{(y_{i}-\beta x_{i})^{2}}{2\sigma^{2}}} \right) \right\} \\
&=& \log{ \left( \frac{1}{\sqrt{2\pi\sigma^{2}}} \right)^{n} } \left\{ - \sum_{i=1}^{n}{\frac{(y_{i}-\beta x_{i})^{2}}{2\sigma^{2}}} \right\} \\
\end{eqnarray}
 

\(\displaystyle \frac{\partial}{\partial \beta}{l(\beta)} = 0\)により、
\begin{eqnarray}
\frac{\partial}{\partial \beta}{l(\beta)} &=& 0 \\
\frac{\partial}{\partial \beta} \left\{ \log{ \left( \frac{1}{\sqrt{2\pi\sigma^{2}}} \right)^{n} } \left\{ - \sum_{i=1}^{n}{\frac{(y_{i}-\beta x_{i})^{2}}{2\sigma^{2}}} \right\} \right\}&=& 0 \\
\frac{\partial}{\partial \beta} \left\{ - \sum_{i=1}^{n}{\frac{y_{i}^{2} -2\beta x_{i}y_{i}+ \beta^{2}x_{i}^{2}}{2\sigma^{2}}} \right\} &=& 0 \\
\sum_{i=1}^{n} \left( -2x_{i}y_{i}+2\beta x_{i}^{2} \right) &=& 0 \\
\hat{\beta_{}}\sum_{i=1}^{n} x_{i}^{2} &=& \sum_{i=1}^{n} x_{i}y_{i} \\
\hat{\beta_{}} &=& \frac{\sum_{i=1}^{n} x_{i}y_{i}}{\sum_{i=1}^{n} x_{i}^{2}} \\
\end{eqnarray}
(※ \(\sum_{i=1}^{n}{x_{i}^{2}}\)は0でないとする)
 

そして、偏回帰係数\(\hat{\beta_{}}\)が求まりましたが、
そして、もちろんこちらの方法でも、偏回帰係数は同じなので、
\begin{eqnarray}
\hat{y_{}} &=& \hat{\beta_{}}x+\epsilon \\
y - \hat{y_{}} &=& e
\end{eqnarray}
となります。
 

決定係数\(R^{2}\)

上で構築した予測モデルがいい予測モデルなのか、悪い予測モデルなのかを判定できるように数値化したものを、決定係数\(R^{2}\)と言います。
決定係数の定義式は、
バイアス-バリアンス分解のように平均値\(\bar{y}\)を+と-で付与して、\(y_{i} - \hat{y_{i}} = e_{i}\)が成立することから、

\begin{eqnarray}
y_{i} - \hat{y_{i}} &=& e_{i} \\
y_{i} + ( -\bar{y}+\bar{y} ) - \hat{y_{i}} &=& e_{i} \\
(y_{i} - \bar{y}) + (\bar{y} - \hat{y_{i}}) &=& e_{i} \\
(y_{i} - \bar{y})^{2} + 2(y_{i} - \bar{y})(\bar{y} - \hat{y_{i}}) + (\bar{y} - \hat{y_{i}})^{2} &=& e_{i}^{2} \\
\sum_{i=1}^{n} (y_{i} - \bar{y})^{2} + \sum_{i=1}^{n} 2(y_{i} - \bar{y})(\bar{y} - \hat{y_{i}}) + \sum_{i=1}^{n} (\bar{y} - \hat{y_{i}})^{2} &=& \sum_{i=1}^{n} e_{i}^{2} \\
\sum_{i=1}^{n} (y_{i} - \bar{y})^{2} + \sum_{i=1}^{n} (\hat{y_{i}} - \bar{y} )^{2} &=& \sum_{i=1}^{n} e_{i}^{2}
\end{eqnarray}
 

まず決定係数は相関係数の2乗に等しいです。そのため、相関係数の式を用います。
\begin{eqnarray}
r
&=& \displaystyle \frac{\sigma_{xy}}{\sqrt{\sigma_{x}^{2}}\sqrt{\sigma_{y}^{2}}} \\
&=& \displaystyle \frac{ \frac{1}{n}\sum_{i=1}^{n}{(x_{i}-\bar{x})(y_{i}-\bar{y})}} {\sqrt{\frac{1}{n}{\sum_{i=1}^{n}(x_{i}-\bar{x})^{2} } \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-\bar{x})^{2}} \\
\end{eqnarray}

※ ちなみに、決定係数は\(R^{2}\)と書くように、実は実測値\(y\)と予測値\(\hat{y_{}}\)の相関係数\(r\)の2乗に等しいです。相関係数は0から1の値を取るので、その2乗をしても決定係数の取りうる範囲は0から1になります。
 

以上のことから決定係数は今回作成したモデルがどのくらい推定できているかを評価するための指標になります。
そしてこの決定係数が取る値は0から1の値(相関係数も0から1)をとり、0だと全く推定できていない、1だと完璧に推定できているということになります。
 

しかしこの決定係数が高ければいいのか!ってことでもないです。ポイントとしては以下2つ。

  • 将来のデータに対しても推定ができるモデルなのかわからない
  • 説明変数が多すぎると、過学習という性質に陥る

将来のデータに対しても推定ができるモデルなのかわからない

単純にじゃあ1であればいいってことね!となりそうですが、そうとも言えないのがこの統計学の面白いところでもあったりするわけですが、
こういった推定や予測モデルの構築の問題は、今あるデータ(説明変数も目的変数もどちらの値もわかっているデータ)を使って推定を行います。
それらのデータにあくまで合わせて推定や予測モデルを構築しているため、今作成したモデルはもちろんそのデータを推定できるというのは当たり前な話です。
なので通常は決定係数は0.9など高い数値が出るというのはなんとなくイメージができると思います。
 

説明変数が多すぎると、過学習という性質に陥る

さらに決定係数の定義式を見ると、説明変数を含んでおり、説明変数が多くなるとその分
感覚的に分子と分母の数値の差が一定だとした時、13/20と、393/400はどちらの値が大きいかというともちろん後者の値が大きくなります。つまりこれらの数値を説明変数の数とすると、説明変数の数が大きくなればなるほど、これに倒して決定係数は1から上記の分数を引くので、393/400の方が決定係数が大きくなるということがわかると思います。
となると、説明変数が多い→決定係数が大きくなるので、説明変数が多いとより今のデータに対して学習をしてしまい、推定力が弱まります。
 

このように、回帰分析は今あるいろんなデータをそのままぶっ込んで回帰分析をしてもいい結果にならないことがあります。
それはより今のデータに対して、学習をし過ぎる「過学習」という性質に陥ってしまいます。
 

「過学習」という回帰分析の性質

回帰分析をするには色々情報入れればよりいい分析ができそうじゃん!と直感的に思うと思います。
しかしデータを取り込みすぎると、過学習という学習しすぎて将来得られたデータに対して予測がしっかりできていない状況に陥る可能性があります。
分析をするにあたって、目的変数を予測したいとき、どういったものを説明変数に置くべきなのかを考える必要があり、その説明変数の指定次第で、いい予測モデルができるか、悪い予測モデルができるか紙一重です。
次ではその過学習について考えていきたいと思います。

-統計学
-

© 2022 Yosshi Blog Powered by AFFINGER5