1. 前言
在之前已經簡單闡述了“線性迴歸”模型,具體的介紹地址爲:https://blog.csdn.net/qq_30232405/article/details/104153928
這種簡單的線性迴歸在擬合複雜模型的時候,會出現擬合能力不足的情況。
例如下圖已經存在的數據:
- 橫座標表示:tumor size(腫瘤大小),用x表示。
- 橫座標:malignant(惡行腫瘤),可以用如下公式表示:
hθ(x)=θTx
圖中有兩條擬合線:
- 粉紅色直線:當圖中沒有最右異常點的時候,可以用線性迴歸進行擬合
- 藍色直線:當圖中有最右異常點時,用直線擬合的。
如果一開始設置了hθ(x)大於0.5時,默認類別爲1(惡性腫瘤),少於0.5時類別爲0(良性腫瘤),則粉紅色的直線對應的曲線恰好可以有效區分兩種類別。但是藍色直線對應的x座標則向左偏移,這時候會把腫瘤錯誤預測爲0。
爲了能夠得到更有效的模型,則需要logistic regression(LR)模型來解決這個問題。
2. Logistic Regression模型
2.1 公式
首先展示LR模型的公式:
hθ(x)=g(θTx)g(θTx)=1+e−θTx1
可以看到,LR模型在普通的線性迴歸中增加了函數g,如果把z=θTx,可以把g公式化簡爲:
g(z)=1+e−z1
這個公式就是典型的sigmoid函數,也可以稱爲是logistic函數。
2.2 Sigmoid函數
現在觀察一下sigmoid函數的圖像形狀:
- 當z趨向於infinity時,g(z)接近於1
- 當z趨向於infinitesimal時,g(z)接近於0
用上面“預測腫瘤是否爲惡性”的例子,不難看出hθ(x)的輸出值就代表腫瘤是否爲惡性的概率。
例如:當hθ(x)=0.7,也就是說該腫瘤有70%的概率會是惡性腫瘤。所以,如果給定x和θ的值,預測y的概率可以表示爲:
hθ(x)=P(y∣x;θ)
對於兩分類來說,這種函數兩個性質:
- P(y=0∣x;θ)+P(y=1∣x;θ)=1
- P(y=0∣x;θ)=1−P(y=1∣x;θ)
2.3 Logistic Regression模型的損失函數
迴歸一下,之前的線性迴歸模型的損失函數爲:
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
也可以用另外的符號來表示:
Cost(hθ(x),y)=J(θ)
如果我們把線性迴歸的損失函數J(θ)以圖像的形式畫出來:
可以看到這個函數是凸函數,可以求出全局最優點。
而如果把hθ(x)換成LR模型的函數,同時畫出其J(θ)的圖像
這時候函數是非凸函數,存在很多的局部最優點。所以需要像一個新的損失函數,它應該具有兩個基本的性質:
- 能夠代表預測函數和正確類別之間的距離。
- 最好函數是一個凸函數,具有全局最優點。
因此研究者找到了一個比較適合的損失函數:
Cost(hθ(x),y)={−log(hθ(x)) if y=1−log(1−hθ(x)) if y=0
爲什麼要引入這樣的損失函數呢,接下來可以用對應的圖像進行解釋。
-
當y=1時,其損失函數圖像爲:
由於真實標籤爲1,當hθ(x)接近於1時,說明此時函數的預測與真實標籤是一致的,那麼損失函數的值就接近於0。如果要進行參數更新,這時候由於損失函數接近0,參數幾乎不用更新。當hθ(x)接近於0時,說明此時函數的預測與真實標籤是不一致的,這會導致損失函數的值增大,需要更快的更新參數。
-
當y=0時,其損失函數圖像爲:
其性質說明和上面的圖像一致,這就不詳細說明了。
2.3 Logistic Regression模型的梯度下降
首先對上面的LR公式進行合併:
J(θ)=Cost(hθ(x(i)),y(i))=−m1i=1∑my(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))
-
當y(i)=1時,則會變成:
J(θ)=−m1i=1∑my(i)log(hθ(x(i)))
-
當y(i)=0時,則會變成:
J(θ)=−m1i=1∑m(1−y(i))log(1−hθ(x(i)))
利用梯度下降法,如果要求出最優參數θ,則需要最小化J(θ),同時更新參數:
θj:=θj−α∂θj∂J(θ)
要對上面這個偏導數求解,首先要知道sigmoid函數求導後的形式。
2.3.1 sigmoid函數的求導形式
∂z∂g(z)=∂z∂1+e−z1=(1+e−z)2e−z=1+e−z1−(1+e−z)21=g(z)(1−g(z))
可以看到sigmoid函數的求導形式有一個很特別的地方:它的求導形式都可以用原函數表示。最後得到公式:
g(z)′=g(z)(1−g(z))
如果對g(θTx)求導,其過程差不多,但是會多出一個xj(i)相乘:
∂θj∂g(θTx)=g(θTx)(1−g(θTx))xj(i)
- 要注意的是θ和x都是一個向量形式
2.3.2 LR函數的求導
有了上述sigmoid函數的求導形式作爲背景,我們可以化簡∂θj∂J(θ)。在損失函數J(θ)中,θ和x都是一個向量形式,也就是:
θ=[θ0,θ1,...,θn]x=[x0,x1,...,xn]
當我們僅僅針對θj進行求導的時候:
∂θj∂J(θ)=−m1i∑mhθ(x(i))y(i)∂θj∂hθ(x(i))−1−hθ(x(i))1−y(i)∂θj∂hθ(x(i))=−m1i∑mg(θTx)y(i)∂θj∂g(θTx)−1−g(θTx)1−y(i)∂θj∂g(θTx)
可以看到上面需要利用sigmoid函數的求導方法:
∂θj∂J(θ)=−m1i∑mg(θTx)y(i)g(θTx)(1−g(θTx))xj(i)−1−g(θTx)1−y(i)g(θTx)(1−g(θTx))xj(i)=−m1i∑my(i)(1−g(θTx))xj(i)−(1−y(i))g(θTx)xj(i)=m1i∑m(g(θTx)−y(i))xj(i)=m1i∑m(hθ(x(i))−y(i))xj(i)
至此,LR的損失函數的求導形式已經結束,這裏面主要用到了sigmoid函數的求導,推導起來其實是比較簡單的。最後寫出梯度下降的更新公式:
θj:=θj−αm1i∑m(hθ(x(i))−y(i))xj(i)
對比一下線性迴歸的梯度下降公式:
θj:=θj−αm1i=1∑m(hθ(xj(i))−y(i))xj(i)
發現他們兩個的公式高度統一,佩服以前的研究工作者能夠想出這麼完美的損失函數。