Machine_Learningコース Lecture3

#挨拶
明けましておめでとうございます！やっと今年一発目の更新・・・！
#はじめに
最近edXで受講したColumbiaXの機械学習コースについての自分のまとめを書いています．
（アウトプットしないと忘れちゃう）

先日修了証が届きました！成果が残るのはどんな形でも嬉しいものですね
[機械学習コース修了証](https://courses.edx.org/certificates/116308038f4740ef9fcf473aa9c4b2dd)

#前回の復習
回帰問題について考えました．手法としては最小二乗法扱い，各特徴量の重みを計算し，重み付けした特徴量の１次線形結合でデータを表現するところまでやりました

#確率的観点
前回までの手法はモデルからの出力は一点に定まっていました．今回はこれに対して確率的なものの見方を取り入れていきます．

####平均について

まずn次元のガウス分布の確率密度関数は

```math
p(y|\mu,\sigma^2 ) = \frac{1}{(2\pi\sigma^2)^\frac{n}{2}}\exp(-\frac{1}{2\sigma^2} (y-\mu)^T(y-\mu))

```

でした．
ここから$\mu$を$Xw$に置き換えて最尤法を用いると$w$は

```math
w_{ML} = \underset{w}{argmax} -\frac{1}{2\sigma^2}||y-Xw||^2 - \frac{n}{2}\ln(2\pi\sigma^2)
```

後ろの項は$w$が入っていないので無視すると

```math
w_{ML} = \underset{w}{argmax} -\frac{1}{2\sigma^2}||y-Xw||^2 
```

これよく見ると，実は前回やった最小二乗法と実質的に同じ問題なのです

```math
w_{LS} = \underset{w}{argmin} ~||y-Xw||^2 
```
符号と係数は異なるが，やろうとしていることはレスポンスの平均とレスポンスの差を小さくすることです．

これで平均が求まりました．

####エラーを考える
実際には，平均だけで全てのデータを表せることはまずないのでこれに対してノイズを考えます．
今，データの分布をガウス分布にしようとしているので，ノイズ（平均からのズレ）は独立なガウス分布を仮定します

ノイズを$\epsilon_i = y_i - x_i^Tw$として

```math
\begin{align}
y_i &= x_i^Tw + \epsilon_i , ~~\epsilon_i \overset{iid}{\approx} N(0,\sigma^2), \textrm{ for i = 1,...,n} \\
y_i &\overset{ind}{\sim} N(x_i^Tw,\sigma^2), \textrm{  for i = 1,...,n}  \\
y &\sim N(Xw,\sigma^2I)
\end{align}
```
このようにして$y$の確率分布モデルを仮定できる

####wの期待値
上の仮定を用いた時の$w$の期待値は

```math
\begin{align}
\mathbb{E}[w_{ML}] &= \mathbb{E}[(X^TX)^{-1}X^Ty] \\
&= (X^TX)^{-1}X^T\mathbb{E}[y] \\
&= (X^TX)^{-1}X^TXw \\
&= w
\end{align}
```

であることからも$w_{ML}$の期待値は今まで解析的に求めた$w$の値が入る．これは直感的にもわかりやすい．

####wの分散
ここでこの$w_{ML}$を求めた時に，上で求めた期待値をしっかり出せるのかを考えたい．
そこで今度は$w_{ML}$の分散を求める

分散は

```math 
Var[y] = \mathbb{E}[(y-\mathbb{E}[y])(y-\mathbb{E}[y])^T]
```
で求められるので，これに代入

詳しい計算は省きますけど，最終的にこうなる

```math
Var[w_{ML}] = \sigma^2(X^TX)^{-1}
```
なので$w_{ML}$の値はデータの分布と得られた特徴量に依存して値がぶれてしまうことがわかる．

つまり同じ分布から得られたデータ群が複数あるとき，それぞれによって$w_{ML}$は値が変わってしまう可能性がかなりあると言える．

#リッジ回帰
上述の方法ではデータ依存でパラメータが決まってしまうのでもう少しデータに依らないロバストな設計にしたいと誰でも考えるはずである．

そこで登場するのがリッジ回帰
簡単に言うと上の方法にプラスして，パラメータにペナルティを設ける方法です．

###モデルの説明
正則化パラメータとして$\lambda$,ペナルティ関数として$g(w)$を用いて，このようになります

```math
w_{OPT} = \underset{w}{argmin} ||y-Xw||^2 + \lambda g(w)
```
前半部分は今までと一緒でエラーを計算しており，後半は新しく正則化項がくっついている形になってます．
この$g(w)$はいろんな関数が入りますが，ここではまず$||\lambda||^2$を扱います．

$\lambda$については
0に近いと，最小二乗法に近づく．
大きくなれば，$w$の値は０に近づく．

###リッジ回帰の解き方
方向性は最小二乗法と全く一緒．目的関数を$L$として

```math
\begin{align}
L &= ||y-Xw||^2 + \lambda ||w||^2 \\
 &= (y-Xw)^T (y-Xw) +\lambda w^Tw
\end{align}
```
これを$w$について微分して解くと

```math
\begin{align}
\nabla L &= -2X^Ty +2X^TXw +2\lambda w = 0　\\
w_{RR} &= (\lambda I + X^TX)^{-1}X^Ty
\end{align}
```

###データの前処理
ただし，リッジ回帰の際に特徴量の値のスケールが違いすぎると，その特徴のペナルティが不当に大きくなってしまうのでそれを防ぐためにも，データの前処理が必要．
データによるけどこの授業では特徴量の標準化してました．
$y$については平均との差を使ってました

##リッジ回帰をより深く検討する
最小二乗法とリッジ回帰はかなり似た見た目の解ですね

```math
w_{LS} = (X^TX)^{-1}X^Ty ~~ ↔︎　w_{RR} = (\lambda I + X^TX)^{-1}X^Ty
```
まあそもそもの目的関数にペナルティ項足しただけなので，おかしなことでもないですよね．
これをより，線形代数的に，確率的に解析するために，特異値分解を用います．
固有値分解を任意の大きさの行列に拡張したやつ．あれです

####特異値分解
どんな大きさの行列$X$でも$X = USV^T$の形に分解できます
$X$を$n*d~~(n > d)$の行列とすると

```math
U:n * d \textrm{列ベクトルについて直行している i.e.  }U^TU = I　 \\
S: d * d \textrm{  非負の対角行列}\\
V: d*d \textrm{列と行で直行している　　i.e.   }V^TV = VV^T = I
```
このような性質が各行列に出てきますこれを用いると

```math
\begin{align}
X^TX &= (USV^T)^T(USV^T) = VS^2V^T & XX^T &= US^2U^T 
\end{align}
```
この時$w_{LS}$の分散を計算すると

```math
Var[w_{LS}] = \sigma^2(X^TX)^{-1} = \sigma^2VS^{-2}V^T 
```
固有値が小さいと分散が大きくなるのはこの式を見ると一目瞭然です
固有値が小さくなるのは列ベクトルの相関が高い時ですから，各特徴について相関が強いとこの分散が大きくなる訳です
ここでリッジ回帰の結果を最小二乗法の結果を用いて表現すると

```math
\begin{align}
w_{RR} &= (\lambda I + X^TX)^{-1}X^Ty \\ 
       &= (\lambda I + X^TX)^{-1}(X^TX)(X^TX)^{-1}X^Ty\\
       &= [(X^TX)(\lambda (X^TX)^{-1} +I)]^{-1}(X^TX)w_{LS} \\
       &= (\lambda (X^TX)^{-1} + I)^{-1}w_{LS}
\end{align}
```

ちなみに$w_{LS}$の係数は非負であり１以下なので，これが言える

```math
||w_{RR}||_2 \leq ||w_{LS}||_2
```

ここで$w_{RR}$を特異値分解した行列で表すと

```math
\begin{align}
w_{RR} &= (\lambda VS^{-2}V^T + I)^{-1}w_{LS} \\
       &= V(\lambda S^{-2} +1)^{-1}V^Tw_{LS} \\
\textrm{Mに置き換える}\\
       &:= VMV^Tw_{LS}
\end{align}
```

この$M$の$i$番目の対角成分は$M_{ii} = \frac{S_{ii}^2}{\lambda + S_{ii}^2}$ ですので$\lambda$が大きくなるとこれが小さくなる．

つまり，一つの特徴量の重みが大きくなりすぎくことを防げるという訳です．
数式的にリッジ回帰が重みを制御できる仕組みがこれで解析的に示せたかなと思います

##まとめ
リッジ回帰がどうやって機能しているのかを調べる感じの授業でした．（そろそろ何かしらコード載せないとと思っている）

##参考
[edX CSMM.102x-Machine_Learning](https://www.edx.org/course/machine-learning)