閱讀746 返回首頁    go 阿裏雲 go 技術社區[雲棲]


邏輯回歸原理解析


邏輯回歸

邏輯回歸模型

邏輯回歸表達式:

$$h_\theta(x) = g(\theta^Tx)$$
$$z = \theta^Tx$$
$$g(z) = {1\over 1+e^{-z}}$$
綜上,$$h_\theta(x) = {1\over 1+e^{-\theta^Tx}}$$


sigmoid函數:

2.png-16.5kB


選擇題1:

1.png-47.3kB


3.png-255kB

接下來我們深入的來理解下這個sigmoid函數。通過圖可以知道:

  • 如果想要判斷預測分類$\color{red}{y=1}$,則必須保證$\color{red}{h_\theta(x)>=0.5}$,這裏如果用$g(z)$來代替$h_\theta(x)$的話也即$g(z)>=0.5$,則對應的$x$軸則是$z>=0$,所以轉換過來也即是$\color{red}{\theta^Tx>=0}$。
  • 如果想要判斷預測分類$\color{red}{y=0}$,則必須保證$\color{red}{h_\theta(x)<0.5}$,這裏如果用$g(z)$來代替$h_\theta(x)$的話也即$g(z)<0.5$,則對應的$x$軸則是$z<0$,所以轉換過來也即是$\color{red}{\theta^Tx<0}$。

決策邊界

5.png-293.3kB

  • 對於線性回歸:假設$\theta$矩陣中的$\theta_0,\theta_1,\theta_2$已經確定,也就是$\theta^Tx$確定了,那麼就會確定一條直線,比如圖中的$\color{red}{x_1 + x_2 = 3}$這條直線,我們可以利用這條直線來確定一個邊界,邊界的一側是y=1類,另一側則是y=0類。

6.png-188.7kB

  • 對於非線性回歸:假設$\theta$矩陣已經確定,也就是$\theta^Tx$確定了,那麼就會確定一條曲線,比如圖中的$\color{red}{x_3^2 + x_4^2 = 1}$這條曲線,我們可以利用這條曲線來確定一個邊界,邊界的外側是y=1類,內側則是y=0類。

代價函數:

8.png-227.9kB

我們由線性代價函數來引入,可以看到,如果將各個單個值的序號去掉那麼線性的代價函數無非就是${1\over 2}(h_\theta(x)-y)^2$這個表達式,然而此時我們將線性代數的假設函數$h_\theta(x)$替換成了sigmoid函數,如果繼續按著之前的表達式求它的代價cost的話那麼它的函數曲線將會是一個“非凸”函數(non-convex),而非一個碗型的“凸”函數(convex)。所以,對於邏輯回歸我們將會采用新的代價函數。如下圖:

9.png-42.2kB

  • 對於$\color{red}{y=1}$來說:

此時的cost計算公式為:$$Cost(h_\theta(x)) = -log(h_\theta(x))$$

10.png-108.8kB

因為$h_\theta(x)$是sigmoid函數,所以它的值域為(0,1),故我們隻討論橫坐標$h_\theta(x)$在(0,1)範圍內的costJ代價的變化。

11.png-100.8kB

如果$y=1,h_\theta(x)=1$,那麼就可以說我的預測值與實際值是無偏差的,可以說是$cost=0$,但是假如$y=1,h_\theta(x)=0$,那麼意味著我的預測值與實際值是有很大偏差的,那麼就要懲罰學習算法讓它的代價變大,於是對應上圖就可明白,當橫坐標$h_\theta(x)=1$時,曲線確實cost=0,而當$h_\theta(x)=0$時,cost趨於了無窮大。

  • 對於$\color{red}{y=0}$來說:

此時的cost計算公式為:$$Cost(h_\theta(x)) = -log(1-h_\theta(x))$$

12.png-116kB

同樣$h_\theta(x)$的值域為(0,1),所以我們隻討論橫坐標在(0,1)的範圍內的cost的變化。如果$y=0$,$h_\theta(x)=0$,那麼就可以說我的預測值與實際值是無偏差的,可以說是$cost=0$,但是假如$y=0$,$h_\theta(x)=1$,那麼意味著我的預測值與實際值是有很大偏差的,那麼就要懲罰學習算法讓它的代價變大,於是對應上圖就可明白,當橫坐標$h_\theta(x)=0$時,曲線確實cost=0,而當$h_\theta(x)=1$時,cost趨於了無窮大。

有時,我們也把上麵的函數寫成一個表達式:

$$Cost(h_\theta(x)) = -ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))$$

如果x和y變成多維,則代價函數變為:

$$J(\theta) = -{1\over m}[\sum_{i=1}^{m}y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))]$$

$\color{red}{注意}$:上麵是Andrew NG直接給出的cost function,並沒有給出推導,這裏我把具體的cost function由來給寫一下供大家參考:

對於Logistic regression,$h_\theta(x)$函數代表的是等於1的概率,所以有如下的條件概率分布:

$$P(Y=1|x) = {1\over 1 + e^{-\theta^Tx}} = h_\theta(x)$$

$$P(Y=0|x) = 1-{1\over 1 + e^{-\theta^Tx}} = 1 - h_\theta(x)$$

那麼將兩個式子合並起來寫在一起就是:
$$P(Y|x) = h_\theta(x)^y(1-h_\theta(x))^{1-y}$$
對上麵這個式子求似然函數:
$$L(\theta) = \prod_{i=1}^{m}{P(Y_i|x_i)} = \prod_{i=1}^{m}{h_\theta(x_i)^{y_i}(1-h_\theta(x_i))^{1-y_i}}$$
在對上麵的似然函數求對數為:
$$l(\theta) = logL(\theta) = \sum_{i=1}^{m}[{y_ilogh_\theta(x_i)+(1-y_i)log(1-h_\theta(x_i))}]$$
如果想求最優解則對上式求極大值時下的$\theta$,則此時運用的是梯度上升法,但是在Andrew NG的課程中使用的是梯度下降算法,故有:
$$J(\theta) = -{1\over m}l(\theta) = -{1\over m}[\sum_{i=1}^{m}y^{(i)}log(h_\theta(x^{(i)})) + (1-y^{(i)})log(1-h_\theta(x^{(i)}))]$$即為所求。


選擇題2:

7.png-68.5kB


選擇題3:

13.png-64.1kB


梯度下降

14.png-193.2kB


選擇題4:

15.png-67.8kB


選擇題5:

16.png-65.2kB

解析

  • 也可寫成如下17.png-4.1kB

優化梯度下降算法

1.png-396.9kB

在Octave中,用此方法來替代梯度下降算法,因為此優化算法不用人為指定conjugate:

  • 不需進行學習速率$\alpha$,所以可以將此算法看成是加強版的選擇。
  • 通常比梯度下降算法快。

選擇題6:

2.png-101.7kB

多分類

4.png-250.8kB

多分類的一種方法是采用“one-vs-all”的方法將多種類別區分:具體思想是針對每一個類別可以訓練分類器以區分是否為該類,這樣如果有$k$個類別,那麼就會訓練出$k$個模型。

5.png-146kB

然後如果想要預測$test$到底為哪一類別時,將$test$分別輸入到這$k$個模型中,哪一類的輸出概率最大就分類為哪一類。


選擇題7:

6.png-26.2kB


小節測試題1:

1.png-33.4kB


小節測試題2:

2-1.png-29.8kB
2-2.png-56.2kB


小節測試題3:

3.png-57.8kB


小節測試題4:

4.png-53.9kB


小節測試題5:

5.png-40.7kB

解析

  • 線性回歸是用來擬合數據對數據進行預測屬於回歸,但是邏輯回歸是用來分類的屬於分類。而區分類別是根據$h_\theta(x)$與0.5的關係,也就是$\theta^Tx$與0的關係,所以題中的$\theta^Tx$即為$-x+6$,所以當$x-6>0$時為$y=1$類,反之為$y=0$類。
  • 但是算法複雜。 ### 多分類

解決過擬合問題

過擬合

產生過擬合問題的原因:數據集的特征非常多並且數據集很小。


選擇題1:1.png-34.7kB


如何解決過擬合:
1、減少特征的數量

  • 手動的選擇要保留的特征。
  • 模型選擇算法(會自動的選擇要保留的特征,之後會講到)

2、正則化

  • 保留所有的特征,並減小$\theta_j$的值或數量級

帶正則化項的cost function

3.png-188.4kB

如圖所示,將之前的cost function加上一個正則化項:
$$J(\theta)={1\over2}[\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{n}\theta_j^2]$$

注意到,後麵的正則項是從$j=1$開始的,不包括$\theta_0$。參數$\lambda$叫做正則化項參數,用來減小$\theta_j$的值,當$\lambda$很大時,$\theta_j$都會變得很小。所以就相當於隻剩下$\theta_0$了。

4.png-195.8kB


選擇題2:
2.png-27.2kB


帶有正則化項的線性回歸

  • 在梯度下降方法中 如圖, 6.png-175.8kB

在帶有正則項的線性回歸的梯度下降中,可以將$\theta$的更新分成兩部分,一部分是$\theta_0$,另一部分是$\theta_j,j=1,2,3...$,而後者可以等價於:
$$\theta_j = \theta_j(1-\alpha{\lambda\over m})-\alpha{1\over m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}$$


選擇題3:
5.png-25.8kB


  • 在正規方程中

7.png-20.1kB

在正規方程中,正則化項為一個$(n+1)*(n+1)$的矩陣。


帶有正則項的邏輯回歸

8.png-225.8kB

在邏輯回歸中,cost function帶有了正則項後就變成這樣:
$$J(\theta)=-[{1\over m}\sum_{i=1}^{m}y^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]+{\lambda\over 2m}\sum_{j=1}^{n}\theta_j^2$$
於是,隨後的計算梯度就變成了這樣,但一定要注意的是$\color{red}{j=0}$與$\color{red}{j=1}$是不同的。

${\partial J(\theta)\over \partial\theta_0} = {1\over m}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})}x_j^{(i)}$ $\color{red}{for\ j=0}$

${\partial J(\theta)\over \partial\theta_0} = ({1\over m}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})}x_j^{(i)})+{\lambda\over m}\theta_j$ $\color{red}{for\ j>=1}$


選擇題4:

9.png-35.8kB

最後更新:2017-06-27 11:32:45

  上一篇:go  單變量線性回歸原理解析
  下一篇:go  yum源管理配置介紹