逻辑回归是个什么逻辑
說到邏輯回歸,可以先回顧下前期的文章《線性回歸》。線性回歸能夠對連續值進行預測,如根據面積對房價進行預測。而在現實生活中,我們還有常見的另一類問題:分類問題。最簡單的是二分類問題,即是與否的問題,如得病與否,交易是否合理,能否發放貸款,郵件是否垃圾郵件等。
邏輯回歸(logistic regression),雖然名字上有“回歸”兩字,但它實際應用的是處理分類問題(classification)。它的核心思想是:如果回歸的結果輸出是一個連續值,而值的范圍是無法限定的,那么想辦法把這個連續結果值映射為可以幫助我們判斷的結果值,從而進行分類。所以,從本質上講,邏輯回歸是在回歸的基礎上,進行了特殊的改進,而被用于分類問題上。
下面用一個最簡單的例子來說明邏輯回歸的使用過程。使用的是非常著名的IRIS數據集,也稱為鳶尾花數據集。下載地址為:http://archive.ics.uci.edu/ml/。數據集包含150條數據,每條數據包含4個屬性,分別是花萼長度(sepal length)、花萼寬度(sepal width)、花瓣長度(petal length)、花瓣寬度(petal width),分為Setosa、Versicolour,Virginica這3個種類,每類50條數據。
由于這個數據集是三分類問題,為了簡便起見,重在理解邏輯回歸的原理,這里對數據集進行了裁剪,只選取Setosa、Versicolour這兩個種類進行二分類。
下面分別從策略、模型、算法三個方面給出問題解決框架。
(1)模型
模型就是所有學習的條件概率分布或決策函數。在這個實例中,我們已知4個影響戈尾花分類的變量花萼長度(sepal length)、花萼寬度(sepal width)、花瓣長度(petal length)、花瓣寬度(petal width),令其分別為x1,x2,x3,x4。我們構建的模型認為是這4個變量的線性組合,于是得到:
這里我們構建的是一個線性回歸模型,前面提到,邏輯回歸需要將線性模型進行一下映射,從而能用于分類。這里的映射函數或者叫分類器叫做sigmoid函數。詳細的介紹見前期文章《 sigmoid函數》。
通過sigmoid函數分類器,我們構建的邏輯回歸模型是:
(2)策略
在模型確定后,需要用一個損失函數(loss function)或代價函數(cost function)來度量預測錯誤的程度。常用的損失函數有以下幾種:
1)0-1損失函數:
2)平方損失函數:
L(Y,f(X))=(Y?f(X))2
3)絕對損失函數:
L(Y,f(X))=|Y?f(X)|
4)對數損失函數或對數似然損失函數:
L(Y,P(Y|X))=?logP(Y|X)
對于邏輯回歸模型,使用的是 對數損失函數作為代價函數,至于為什么要選取這個損失函數,以后再說。則本例中,邏輯回歸的損失函數為:
cost(y,p(y|x))={?logp(y|x)ify=1?log(1?p(y|x))ify=0
將上面的兩個表達式合并,則得到單個數據點上的log損失為:
因為y只有兩種取值情況,1或0,分別令y=1或y=0,即可得到原來的分段表達式,即兩者是等價的。
全體樣本的損失函數則可表達為:
其中 p(y|x)由前面的邏輯回歸模型定義,令:
p(y|x)=hθ(x)=11+e?θTx
則最終的損失函數為:
cost(y,hθ(x))=∑i=1m(?yilog11+e?θTx?(1?yi)log(1?11+e?θTx))
(3)算法
算法是指學習模型的具體計算方法。在上述模型和損失函數定義后,剩下的就是基于訓練集 (xi,yi)來求解模型中的參數 θ。于是該問題變成了一個求解最優化問題。如果最優化問題有顯式的解析解,這個最優化問題就比較簡單。但通常解析解不存在,這就需要用數值計算的方法求解。如何保證找到全局最優解,并使得求解過程非常的高效,就成為一個重要問題。
對于該優化問題,存在多種求解方法,比較常用的有梯度下降法、牛頓法、共軛梯度法,還有啟發式算法,如模擬退火、遺傳算法、粒子群算法等。可以參考前期文章《梯度下降算法》。這里不再贅述。
(4)算例
這里直接使用scikit-learn機器學習包進行計算:
輸出結果為:
[[-0.32346426 -1.32886149 1.94671978 0.8778639 ]] [-0.23860313]
即各參數為:
θ0=?0.23860313
θ1=?0.32346426
θ1=?1.32886149
θ3=1.94671978
θ4=0.8778639
最后邏輯回歸的分類預測結果輸出與測試集結果輸出完全一致:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
總結
以上是生活随笔為你收集整理的逻辑回归是个什么逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 粒子群算法实例-求解函数极值
- 下一篇: 逻辑回归为什么使用对数损失函数