[ML學習筆記] 迴歸分析(Regression Analysis)

[ML學習筆記] 迴歸分析(Regression Analysis)

迴歸分析:在一系列已知自變量與因變量之間相關關係的基礎上,創建變量之間的迴歸方程,把迴歸方程做爲算法模型,實現對新自變量得出因變量的關係。算法

迴歸與分類的區別:迴歸預測的是連續變量(數值),分類預測的是離散變量(類別)。函數


線性迴歸

線性迴歸經過大量的訓練出一個與數據擬合效果最好的模型,實質就是求解出每一個特徵自變量的權值θ。學習

設有特徵值x一、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)}$。spa

假設偏差\(\varepsilon^{(i)}\)是獨立同分布的(一般認爲服從均值爲 \(0\) 方差爲 \(\sigma^2\) 的正態分佈),有:blog

\[ \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} \]it

符號解釋
p(x|theta)表示條件機率,是隨機變量
p(x;theta)表示待估參數(固定的,只是當前未知),可直接認爲是p(x),加了分號是爲了說明這裏有個theta參數io

上式用語言描述就是,要取一個怎樣的\(\theta\),可以使得在\(x^{(i)}\)的條件下最有可能取到\(y^{(i)}\)class

可用極大似然估計求解,
\[ 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)區間從而進行類別劃分,通常默認機率大於等於0.5則爲1,小於0.5則爲0,也能夠自行設置閾值。

用一句話來講就是:邏輯迴歸假設數據服從伯努利分佈,經過極大化似然函數的方法,運用梯度降低來求解參數得出分類機率,經過閾值過濾來達到將數據二分類的目的。

相關文章
相關標籤/搜索