logistic回歸介紹以及原理分析


1.什么是logistic回歸?

logistic回歸雖然說是回歸,但確是為了解決分類問題,是二分類任務的首選方法,簡單來說,輸出結果不是0就是1

舉個簡單的例子:

癌症檢測:這種算法輸入病理圖片並且應該辨別患者是患有癌症(1)或沒有癌症(0)

2.logistic回歸和線性回歸的關系

邏輯回歸(Logistic Regression)與線性回歸(Linear Regression)都是一種廣義線性模型(generalized linear model)。

邏輯回歸假設因變量 y 服從二項分布,而線性回歸假設因變量 y 服從高斯分布。

因此與線性回歸有很多相同之處,去除Sigmoid映射函數的話,邏輯回歸算法就是一個線性回歸。

可以說,邏輯回歸是以線性回歸為理論支持的,但是邏輯回歸通過Sigmoid函數引入了非線性因素,因此可以輕松處理0/1分類問題。

換種說法:

線性回歸,直接可以分為兩類,

但是對於圖二來說,在角落加上一塊藍色點之后,線性回歸的線會向下傾斜,參考紫色的線,

但是logistic回歸(參考綠色的線)分類的還是很准確,logistic回歸在解決分類問題上還是不錯的

3.logistic回歸的原理

Sigmoid函數:

曲線:

 

之后推導公式中會用到:

 

 

 

我們希望隨機數據點被正確分類的概率最大化,這就是最大似然估計。

最大似然估計是統計模型中估計參數的通用方法。

你可以使用不同的方法(如優化算法)來最大化概率。

牛頓法也是其中一種,可用於查找許多不同函數的最大值(或最小值),包括似然函數。也可以用梯度下降法代替牛頓法。

既然是為了解決二分類問題,其實也就是概率的問題,分類其實都是概率問題,

 

那咱們先看個概率的問題:

假如有一個罐子,里面有黑白兩種顏色的球,數目多少不知,兩種顏色的比例也不知。

我們想知道罐中白球和黑球的比例,但我們不能把罐中的球全部拿出來數。

現在我們可以每次任意從已經搖勻的罐中拿一個球出來,記錄球的顏色,然后把拿出來的球 再放回罐中。

這個過程可以重復,我們可以用記錄的球的顏色來估計罐中黑白球的比例。
假如在前面的一百次重復記錄中,
有七十次是白球,請問罐中白球所占的比例最有可能是多少?

 

 解答:

 假設白球的概率是p,黑球的概率是1-p

 取出100個球,70是白球,30個是黑球,概率:p**70*(1-p)**30

要求出白球所占比例最有可能是多少,其實就是最大似然估計,求導令導函數等於0,求出概率

𝑓(𝑝)=𝑝70(1𝑝)30

70𝑝69(1𝑝)30+𝑝7030(1𝑝)29(1)=0

70(1𝑝)𝑝30=0 

70100𝑝=070−100∗p=0
𝑝=0.7

 

同理一下,logistic回歸解決二分類問題,跟這個概率問題很相似,logistic回歸也是求概率最大,使用的同樣是似然函數

假定:

y=1和y=0的時候的概率

 

 

 似然函數:其實就是概率相乘,然后左右兩邊同時取對數

 

 

對數似然函數,求導,得到θ的梯度

 

 因為P=g(θX),P其實是θ的函數,X已知,要想P越大,就要θ越大,梯度上升問題

得到θ的學習規則:α為學習率

 

 最后將θ帶入h(x)函數,求出概率

 

總結來說:

比較一下logistic回歸的參數學習規則和線性回歸的參數學習規則

兩個都是如下,形式一樣,只是不同的是

線性回歸   h(x)=θX

logistic回歸 

一個使用的模型是線性函數,一個使用的是sigmoid函數

4.logistic回歸的使用

對於鳶尾花分類案例,計算概率,鳶尾花有三種類別,使用三次logistic回歸即可

# 導包
import numpy as np from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split
# 加載數據
X,y = datasets.load_iris(True)
# logistic回歸解決的是二分類問題,所以先剔除一個種類
cond = y!=2

X = X[cond]
y = y[cond]

# 划分訓練數據和測試數據
result = train_test_split(X,y,test_size = 0.2)
result
lr = LogisticRegression()

# 訓練數據
lr.fit(result[0],result[2])

求出w斜率和b截距的值
w = lr.coef_
b = lr.intercept_
print(w,b)
# 預測一下概率
proba_ = lr.predict_proba(result[1])
proba_

得到的預測結果:

# 手動計算概率
h = result[1].dot(w[0].T) + b
# 類別1的概率,p;另一類的概率是 1-p
# sigmoid函數中計算概率
p = 1/(1 + np.e**(-h))
np.c_[1-p,p]

計算得到的結果,相同的

 

5.logistic回歸的損失函數:

其實就是似然函數加個負號

5.logistic回歸的優缺點:

Logistic 回歸是一種被人們廣泛使用的算法,因為它非常高效,不需要太大的計算量,又通俗易懂,不需要縮放輸入特征,不需要任何調整,且很容易調整,並且輸出校准好的預測概率。

與線性回歸一樣,當你去掉與輸出變量無關的屬性以及相似度高的屬性時,logistic 回歸效果確實會更好。因此特征處理在 Logistic 和線性回歸的性能方面起着重要的作用。

Logistic 回歸的另一個優點是它非常容易實現,且訓練起來很高效。在研究中,我通常以 Logistic 回歸模型作為基准,再嘗試使用更復雜的算法。

由於其簡單且可快速實現的原因,Logistic 回歸也是一個很好的基准,你可以用它來衡量其他更復雜的算法的性能。

它的一個缺點就是我們不能用 logistic 回歸來解決非線性問題,因為它的決策邊界是線性的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM