元ネタ
https://qiita.com/tomomoto/items/b3fd1ec7f9b68ab6dfe2
機械学習を数学で理解したいので頭の整理として,お勉強のメモとして重要な式だけまとめていきます.
手法
回帰
線形回帰
最小二乗法
当てはめたい関数: $ f(x) = ax+b $
一般形:$ f(x) = \boldsymbol{w}^T\boldsymbol{x} $ ※切片含む
最小化したい評価関数: $ J = \sum_{i=1}^{n}(y_i - f(x_i))^2 $
計算方法:
a = \frac{n\sum_{k=1}^{n}x_ky_k-\sum_{k=1}^{n}x_k\sum_{k=1}^{n}y_k}{n\sum_{k=1}^{n}x^2_k-(\sum_{k=1}^nx_k)^2}
b = \frac{\sum_{k=1}^nx^2_k\sum_{k=1}^ny_k-\sum_{k=1}^{n}x_ky_k\sum_{k=1}^{n}x_k}{n\sum_{k=1}^{n}x^2_k-(\sum_{k=1}^nx_k)^2}
多次元も同様な考え.
参考文献:
https://qiita.com/Ushio/items/0411b0db1ed36d398bbf
https://ja.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%97%E6%B3%95
https://mathtrain.jp/leastsquares
最尤推定
最尤推定とは:$ \frac{\partial}{\partial x} \log {L(\boldsymbol{w})} = 0 $
最大化したい尤度関数:
L(\boldsymbol{w}) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp(-\frac{(y_i - f(x_i))^2}{2\sigma^2})
ロジスティック回帰
予測モデルをロジスティック関数を使って作成
ロジスティック関数:
\sigma(t) = \frac{1}{1+\exp^(-t)}
当てはめたい関数:
f(x) = \frac{1}{1+\exp(-\boldsymbol{w}^T\boldsymbol{x})}
最大化したい尤度関数:
L(\boldsymbol w) = - \prod_{i=1}^N P(C=t_i|\boldsymbol x_i) \\
where \quad P(C=t_i|\boldsymbol x_i) = f(x_i)^t(1-f(x_i))^{1-t}
更新方法: (tは教師信号)
\boldsymbol w^{t+1} = \boldsymbol w^{t} - \alpha * \frac{\partial L}{\partial \boldsymbol w^{t}} \\
where \quad \frac{\partial L}{\partial \boldsymbol w} = - \sum_{i=1}^{N}(f(x_i)-t_i)\boldsymbol x_i
参考文献:
https://dev.classmethod.jp/business/business-analytics/alteryx-advent-calendar-11-logistic-regression/
https://dev.classmethod.jp/machine-learning/logistic-regression-impl/
サポートベクターマシーン
分類する線形モデル: $ g(x) = \boldsymbol{w}^T\boldsymbol{x} + b $
分類器: $ f(x) = sgn(g(x)) =$ -1 or 1
最小化したい関数:
\frac{2}{\|\boldsymbol w\|}
木
決定木
C4.5:
目的関数(と呼ぶのかな?):エントロピーを最大化させるような説明変数を順に親ノードとして選択していく
\Delta I_H(t) = I_H(t_B) - \sum_{i=1}^{b}w_iI_{H_i}(t_{A_i})
CART:
目的関数:ジニ係数を大化する説明変数を順に親ノードとして選択していく
I_G(t) = 1 - \sum_{i=1}^{c}p(i|t)^2
参考文献:https://qiita.com/3000manJPY/items/ef7495960f472ec14377
実装:http://darden.hatenablog.com/entry/2016/12/15/222447
NN
Perceptron
線形な関数を組み合わせて,最小二乗法で最適化している
フィッティングさせたい関数:$ f(x) = \boldsymbol{w}^T\boldsymbol{x} $
最小化させたい関数:$ J = \sum_{i=1}^{n}(y_i - f(x_i))^2 $
MLP (Multi-Layered Perceptron)
各ニューラルをシグモイド関数$g(\boldsymbol{w}^T\boldsymbol{x})=\frac{1}{1+\exp(-\boldsymbol{w}^T\boldsymbol{x})}$で表すことで各点において2値分類が可能に.
全体としてみると,複数の値に分類することが出来る.
つまりは,多次元によるロジスティック回帰としてみなせるのでは?
誤差に二乗を逆伝搬することで最適化しているので最小二乗法やSVMに似ている.
以下特に最適化のような式が出てこないので雑に扱っていきます.
ベイズ
ベイズ推定を使った分類.確率を勉強していたらわかるでしょう.
時系列
ARIMAモデルなど
クラスタリング (k-means法)
アンサンブル
母集団\theta から n個の集団$\hat{\theta}$を選んできて,それぞれの集団に学習をかける
弱学習機をn個作成して,これらをがっちゃんこ.
判別ならその中で最大のものargmax
回帰の場合は平均値.
ここらへんの設計も工夫次第だと思います.