機械学習の7、回帰

はじめに

本文には、大文字表現=行列/マトリクス、\(\boldsymbol{bold}\)小文字表現=ベクトル\(R^d\)、普通小文字表現=スカラー\(R\) と記す。

回帰は分類と同じく予測プロセスで、分類との違いは回帰で予測される変数が連続的であるのに対して、分類では離散的だという。回帰は統計学で最も有用なツールである。

線形回帰

線形回帰(Linear Regression)は入力\(X\)に定数\(\boldsymbol{w}\)を乗算して出力\(\boldsymbol{y}\)を得ることができる。これには当てはまらないと他に非線形回帰と呼ばれるのがある。\(\boldsymbol{w}\)の推定値\(\hat{\boldsymbol{w}}\)は最小2乗法(Least Squares Method)から求められて、\(\boldsymbol{w}\)として使われる。
$$ \boldsymbol{y} = X^T\boldsymbol{w} \\ \hat{\boldsymbol{w}} = (X^TX)^{-1}X^T \boldsymbol{y} $$
しかし線形回帰の\(\hat{\boldsymbol{w}}\)は最小2乗の合計から求めた結果で場合により良い結果を予測できなくつまり未学習(Underfitting)となってしまう。以下重み付きで予測誤差を減らそうとする。

重み付き線形回帰

重み付き線形回帰(Locally Weightedlinear RegRession、LWLR)は、より近いポイントが重みをもつようになると予測の正確さが高まる。\(\hat{\boldsymbol{w}}\)は以下のように求める。
$$ \hat{\boldsymbol{w}} = (X^TWX)^{-1}X^TW \boldsymbol{y} $$ガウシアンカーネル関数を用いる場合、 $$ \boldsymbol{w}[i,i] = exp({\frac{|x_i-x|}{-2k^2}}) \\ \boldsymbol{w}[i,j] = 0, \space i \ne j$$
しかし標本数は特徴量より少ない場合、上式の逆行列が求められなく差分を補足してリッジ(Ridge)回帰となる。

リッジ(Ridge)回帰

$$ \hat{\boldsymbol{w}} = (X^TWX+\lambda I)^{-1}X^TW \boldsymbol{y} $$
と同時に、相関している特徴量が存在の可能性あるので、交差検証(Cross Classification)を通して最適の\(\lambda\)を決める。また特徴量を減少(Shrinkage)する方法がある。以下拘束条件を追加するラッソ回帰がある。

ラッソ(Lasso)回帰

$$\sum_{k=1}^n|\boldsymbol{w}_k| \le \lambda $$リッジ(Ridge)回帰、ラッソ(Lasso)回帰より、以下に簡単の方法がある。

前向き段階的回帰

前向き段階的回帰(Forward Stagewise Regression)はラッソ回帰に似てて近い結果が得られる。最初はすべての重みが0に設定されて、各ステップで少しづつ重みの増減を行う。

実装

前向き段階的回帰でポイントグループの回帰係数を求めてみよう。
ソースコード
https://github.com/soarbear/Machine_Learning/tree/master/regression

結果

[[0.    0.    0.    0.001 0.    0.    0.    0.   ]]
[[0.    0.    0.    0.002 0.    0.    0.    0.   ]]
[[0.    0.    0.    0.003 0.    0.    0.    0.   ]]
...
[[ 0.044 -0.011  0.12   0.022  2.023 -0.963 -0.105  0.187]]
[[ 0.043 -0.011  0.12   0.022  2.023 -0.963 -0.105  0.187]]
[[ 0.044 -0.011  0.12   0.022  2.023 -0.963 -0.105  0.187]]

参考文献

[1] PeterHarrington. Machine Learning in Action.

ロボット・ドローン部品お探しなら
ロボット翔・電子部品ストア