アカデミック

【サーベイまとめ】線形回帰とは?基底関数を中心として出来るだけ分かりやすく簡潔に説明します。

この記事では,研究のサーベイをまとめていきたいと思います。ただし,全ての論文が網羅されている訳ではありません。また,分かりやすいように多少意訳した部分もあります。ですので,参考程度におさめていただければ幸いです。

間違えている箇所がございましたらご指摘ください。随時更新予定です。他のサーベイまとめ記事はコチラのページをご覧ください。

参考文献は最後に記載してあります。

線形回帰とは?

線形回帰とは,基底関数を線形的に重みづけした出力をモデルとする回帰のことを指します。

\begin{eqnarray}
y(\boldsymbol{x},\boldsymbol{w}) &=& \boldsymbol{w}^T \phi(\boldsymbol{x})
\end{eqnarray}

このとき,最小二乗法に基づけば,最適な重みパラメータは以下のような形になります。

\begin{eqnarray}
\boldsymbol{w}_{ML} &=& (\boldsymbol{\Phi}^T\boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T\boldsymbol{t}
\end{eqnarray}

ただし,$\Phi$は以下のように定めています。

\begin{eqnarray}
\Phi = \left(
\begin{array}{ccccc}
\phi_0(x_1) & \cdots & \phi_m(x_1) & \cdots & \phi_{M-1}(x_1)\\
\vdots & \ddots & & & \vdots \\
\phi_0(x_n) & \cdots & \phi_m(x_n) & \cdots & \phi_{M-1}(x_n) \\
\vdots & & & \ddots & \vdots \\
\phi_0(x_N) & \cdots & \phi_m(x_N) & \cdots & \phi_{M-1}(x_N)
\end{array}
\right)
\end{eqnarray}

 

基底関数

基底関数$\phi$としては,以下の関数がよく利用されます。

\begin{eqnarray}
\phi_j(x) &=& x^j\\
\phi_j(x) &=& \exp{(-\frac{(x – \mu_j)^2}{2s_j^2})}\\
\phi_j(x) &=& \sigma(\frac{x – \mu_j}{s_j})\\
\sigma(a) &=& \frac{1}{1 + \exp{(-a)}}
\end{eqnarray}

上から,多項式基底,ガウス基底,シグモイド基底となります。平均と分散はどのように決めてもよいですが,シンプルに以下のように定めることにします。

\begin{eqnarray}
\boldsymbol{x}_j &=& ( x_{j1}, x_{j2}, \cdots x_{jD} )^T \\
\mu_j &=& \frac{1}{D}\sum_{d}\boldsymbol{x}_{jd} \tag{2.8}\\
s_j^2 &=& \frac{1}{D}\sum_{d} (\boldsymbol{x}_{jd} – \mu_j)^2 \tag{2.8}
\end{eqnarray}

 

モデルの評価

出来上がったモデルはの定量評価には,以下の指標がよく利用されます。

\begin{eqnarray}
\rm{MSE}(c) &=& \frac{1}{N}\sum_{n=1}^{N}(x_n – c)^2 \\
R^2 &=& 1 – \frac{\sum_{n=1}^{N}(y_n – \hat{y_n})^2}{\sum_{n=1}^{N}(y_n – \overline{y_n})^2}
\end{eqnarray}

上は平均二乗誤差,下は決定係数と呼ばれています。

 

まとめ

計算過程は全てふっ飛ばして書き留めました。以下がPythonで実装した記事になります。

【超初心者向け】線形回帰モデルをpythonで分かりやすく実装してみた。 今回は,scikit-learnなどの既成ライブラリに頼らずに線形回帰モデルを実装していこうと思います。また,本記事はpytho...
参考文献

●Pattern Recognition and Machine Learning, Christopher Bishop

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.