[ML學習筆記] 回歸算法
[ML學習筆記] 回歸算法
回歸分析:在一系列已知自變量與因變量之間相關關系的基礎上,建立變量之間的回歸方程,把回歸方程作為算法模型,實現對新自變量得出因變量的關系。
回歸與分類的區別:回歸預測的是連續變量(數值),分類預測的是離散變量(類別)。
線性回歸
設有特征值x1、x2(二維),則預測值 $ h_\theta(x)=\theta_0 + \theta_1x_1 + \theta_2x_2 $
寫為矩陣形式:令x0為全為1的向量,$ h_\theta(x)=\sum_{i=0}^n\theta_i x_i =\theta^T x$
真實值和預測值之間的偏差用 \(\varepsilon\) 表示,則有 $ y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)}$
假設 誤差\(\varepsilon^{(i)}\)是獨立同分布的 通常認為服從均值為 \(0\) 方差為 \(\sigma^2\) 的正態分布
\[ \begin{split} &p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}e^{-\dfrac{(\epsilon^{(i)})^2}{2\sigma^2}} \則有&p(y^{(i)}\mid x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\dfrac{( y^{(i)}-\theta^Tx^{(i)} )^2}{2\sigma^2}} \\end{split} \]
p(x|theta)表示條件概率,是隨機變量
p(x;theta)表示待估參數(固定的,只是當前未知),可直接認為是p(x),加了分號是為了說明這裏有個theta參數
用極大似然估計求\(\theta\),
\[
L(\theta)=\prod_{i=1}^mp(y^{(i)}\mid x^{(i)};\theta)=\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\dfrac{( y^{(i)}-\theta^Tx^{(i)} )^2}{2\sigma^2}}
\]
\[
\begin{split}
l(\theta)&=\log L(\theta)\&=\log\prod_{i=1}^m\frac{1}{\sqrt{2\pi}\sigma}e^{-\dfrac{( y^{(i)}-\theta^Tx^{(i)} )^2}{2\sigma^2}} \&= \sum_{i=1}^m\log\frac{1}{\sqrt{2\pi}\sigma}e^{-\dfrac{( y^{(i)}-\theta^Tx^{(i)} )^2}{2\sigma^2}} \&= m\log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^m(y^{(i)}-\theta^Tx^{(i)})^2\\end{split}
\]
化為求目標函數\(J(\theta)=\dfrac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{i})^2\)的最小值。
化為用矩陣形式表示:
\[
J(\theta)=\frac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{i})^2
=\frac{1}{2}(X\theta-y)^T(X\theta-y)
\]
然後對\(\theta\)求導:
\[
\begin{split}
\triangledown_\theta J(\theta)&=\triangledown_\theta(\frac{1}{2}(X\theta-y)^T(X\theta-y))\&=\triangledown_\theta(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y))\&=\triangledown_\theta(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty))\&=\frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T)\&=X^TX\theta-X^Ty
\end{split}
\]
令 \(X^TX\theta-X^Ty=0\),則有最終結果 \(\theta = (X^TX)^{-1}X^Ty\)
梯度下降
上述方法有時候會出現不能直接求出極值的情況,比如矩陣不可逆,只能通過不斷優化的過程求解。梯度下降顧名思義,最快的下山的方式就是找到當前位置最陡峭的方向,然後沿著此方向向下走,對應到函數中,就是找到給定點的梯度,然後朝著梯度相反的方向,就能讓函數值下降的最快。
設 \(h_\theta(x)=\theta_1x+\theta_0\),
\[ \begin{split} J(\theta_0,\theta_1)&=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{i})^2\\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_0} &= \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{i})\\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_1} &= \frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{i})x_i\\end{split} \]
更新後的\(\theta_0,\theta_1\)(選取合適的\(\alpha\)做步長):
\[ \begin{split} \theta_0:=\theta_0-\alpha*\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_0}\\theta_1:=\theta_1-\alpha*\frac{\partial J(\theta_0,\theta_1)}{\partial \theta_1} \end{split} \]
邏輯回歸(二分類問題)
Sigmoid函數 \(g(x) = \dfrac{1}{1+e^{-x}}\)將任意實數x映射到(0,1)區間
[ML學習筆記] 回歸算法