一、Logistic回歸
Logistic回歸(Logistic Regression,簡稱LR)是一種常用的處理二類分類問題的模型。
在二類分類問題中,把因變量y可能屬於的兩個類分別稱為負類和正類,則因變量y∈{0, 1},其中0表示負類,1表示正類。線性回歸的輸出值在負無窮到正無窮的范圍上,不太好解決這個問題。於是我們引入非線性變換,把線性回歸的輸出值壓縮到(0, 1)之間,那就成了Logistic回歸
,使得
≥0.5時,預測y=1,而當
<0.5時,預測y=0。Logistic回歸的名字中盡管帶有回歸二字,可是它是實打實的分類算法。
線性回歸和Logistic回歸的形狀如下圖所示:
那用什么非線性變換把線性回歸轉化成Logistic回歸呢?
1、Logistic回歸的函數形式:
Logistic回歸模型的函數形式為:,其中x代表樣本的特征向量,g(z)代表sigmoid函數,公式為
。下圖為sigmoid函數的圖形。
所以Logistic回歸模型就是:
的作用是,對於給定的輸入變量,根據選擇的參數確定輸出變量y=1的概率,即后驗概率
,
的取值范圍是(0, 1)。
那么怎么根據的輸出值來預測樣本的類別呢?按照下面的規則:
2、Logistic回歸的損失函數
Logistic回歸中的參數是θ,怎么估計這個參數呢?那么就要定義損失函數,通過最小化損失函數來求解參數。
線性回歸中的損失函數是平方誤差損失函數,如果Logistic回歸也采用這種損失函數形式,那么得到的損失函數將是一個非凸函數。這意味着損失函數會有很多局部極小值,因此不容易找到全局最小值。比如左邊這個就是非凸函數的形狀,明顯右邊這個平滑的圖不容易陷入局部極小值陷阱。
假設訓練數據集為{(x1,y1),(x2,y2),...(xm, ym)},即有m個樣本,令x=[x0, x1, ..., xn]T,x0=1,即每個樣本有n個特征,y∈{0, 1}。於是把Logistic回歸的損失函數定義為對數損失函數:
這個對數損失函數的特點是:當類別y=1時,損失隨着的減小而增大,
為1時,損失為0;當類別y=0時,損失隨着的增大而增大,
為0時,損失為0。
與損失
的關系如下圖:
可以把損失整理為以下的形式:
於是損失函數就成了:
這個損失函數叫做對數似然損失函數,也有個很好聽的名字:交叉熵損失函數(cross entropy loss)。這個損失函數是個凸函數,因此可以用梯度下降法求得使損失函數最小的參數。
3、Logistic回歸的梯度下降法
得到了交叉熵損失函數后,可以用梯度下降法來求得使代價函數最小的參數,也就是按下面這個公式更新每個參數θj:
這個公式怎么推導的呢?如下是詳細的推導過程。
已知:
首先:
把上式代入損失函數中,並對θj求偏導:
這個推導比較長,但是推導的結果非常簡潔漂亮。
將這個偏導數乘以學習了,得到了用梯度來更新參數
的公式,再用下面這個公式來同時更新所有的參數值,使損失函數最小化,直到模型收斂。
4、Logistic回歸防止過擬合
在損失函數中加入參數θj的L2范數,限制θj的大小,以解決過擬合問題,那么加入正則化項的損失函數為:
相應的,此時的梯度下降算法為:
重復以下步驟直至收斂:
二、softmax回歸
Logistic回歸是用來解決二類分類問題的,如果要解決的問題是多分類問題呢?那就要用到softmax回歸了,它是Logistic回歸在多分類問題上的推廣。此處神經網絡模型開始亂入,softmax回歸一般用於神經網絡的輸出層,此時輸出層叫做softmax層。
1、softmax函數
首先介紹一下softmax函數,這個函數可以將一個向量(x1,x2,...,xK)映射為一個概率分布(z1,z2,...,zK):
那么在多分類問題中,假設類別標簽y∈{1, 2, ..., C}有C個取值,那么給定一個樣本x,softmax回歸預測x屬於類別c的后驗概率為:
其中wc是第c類的權重向量。
那么樣本x屬於C個類別中每一個類別的概率用向量形式就可以寫為:
其中W=[w1,w2,...,wC]是由C個類的權重向量組成的矩陣,1表示元素全為1的向量,得到是由所有類別的后驗概率組成的向量,第c個元素就是預測為第c類的概率,比如[0.05, 0.01, 0.9, 0.02, 0.02],預測為第3類。
2、softmax回歸的損失函數和梯度下降
假設訓練數據集為{(x1,y1),(x2,y2),...(xM, yM)},即有M個樣本,softmax回歸使用交叉熵損失函數來學習最優的參數矩陣W,對樣本進行分類。
由於涉及到多分類,所以損失函數的表示方法稍微復雜一些。我們用C維的one-hot向量y來表示類別標簽。對於類別c,其向量表示為:
其中表示指示函數。
則softmax回歸的交叉熵損失函數為:
其中表示樣本
預測為每個類別的后驗概率組成的向量。
上面這個式子不太好理解,我們單獨拿出一個樣本來觀察。假設類別有三類,預測一個樣本x屬於第2類的交叉熵損失為,其中
,如果預測正確,如
,則交叉熵損失為
,而如果預測錯誤,如
,則交叉熵損失為
,可見預測錯誤時損失非常大。
同樣的,用梯度下降法對損失函數進行優化求解,首先得到損失對參數向量W的梯度:
初始化W0=0,然后對所有參數WC進行迭代更新,直至收斂。
三、總結
Logistic回歸這個可愛的模型,相比SVM、GBDT等模型,要簡單得多,但是由於這個模型可解釋性強,被廣泛運用於各種業務場景中。此外,它也是如今大行其道的深度學習算法的基礎之一。
邏輯回歸的優點有以下幾點:
1、模型的可解釋性比較好,從特征的權重可以看到每個特征對結果的影響程度。
2、輸出結果是樣本屬於類別的概率,方便根據需要調整閾值。
3、訓練速度快,資源占用少。
而缺點是:
1、准確率並不是很高。因為形式非常簡單(非常類似線性模型),很難去擬合數據的真實分布。
2、處理非線性數據較麻煩。邏輯回歸在不引入其他方法的情況下,只能處理線性可分的數據。
3、很難處理數據不平衡的問題。
吳恩達老師說,學完了Logistic回歸,就有了豐富的機器學習知識,目測比那些硅谷工程師還厲害。所以有公司要我嗎?坐等。
參考資料:
1、吳恩達:《機器學習》
2、邱錫鵬:《神經網絡與深度學習》
3、 https://blog.csdn.net/u010867294/article/details/79138603