Scikit-Learn邏輯回歸
- 1、邏輯回歸概述
- 1.1、邏輯回歸
- 1.2、邏輯回歸的優缺點
- 1.3、邏輯回歸與線性回歸
- 2、邏輯回歸的原理
- 2.1、邏輯回歸的概念與原理
- 2.2、邏輯回歸的損失函數
- 2.3、梯度下降法求解邏輯回歸的最優解
- 3、Scikit-Learn邏輯回歸
- 3.1、決策邊界
- 3.2、Scikit-Learn邏輯回歸API
- 3.3、邏輯回歸案例(鳶尾花分類)
1、邏輯回歸概述
邏輯回歸(Logistic Regression)主要解決二分類問題,用來表示某個事件發生的可能性。邏輯回歸在機器學習知識結構中的位置如下:
1.1、邏輯回歸
邏輯回歸的思想最早可以追溯到19世紀,由英國統計學家Francis Galton在研究豌豆遺傳問題時首次提出。然而,真正將邏輯回歸應用于機器學習的是加拿大統計學家Hugh Everett,他在1970年代提出了廣義線性模型(GLM),其中包括邏輯回歸
邏輯回歸這個算法的名稱有一定的誤導性。雖然它的名稱中有“回歸”,但它在機器學習中不是回歸算法,而是分類算法。因為采用了與回歸類似的思想來解決分類問題,所以它才會被稱為邏輯回歸
在邏輯回歸中,我們不是直接預測輸出值,而是預測輸出值屬于某一特定類別的概率。例如,一封郵件是垃圾郵件的概率(是與不是),廣告被點擊的概率(點與不點)等
邏輯回歸通過Sigmoid
函數將樣本的特征與樣本發生的概率聯系起來,在擬合樣本數據發生概率的時候,其實是在解決一個回歸問題,當概率計算出來后,再根據概率進行分類處理。邏輯回歸是在解決樣本與樣本發生的概率之間的回歸問題
邏輯回歸的函數表達式(Logistic
函數或Sigmoid
函數)為
g ( z ) = 1 1 + e ? z \rm g(z)=\frac{1}{1+e^{-z}} g(z)=1+e?z1?
Sigmoid
函數有時也用 σ ( z ) \sigma(z) σ(z)表示,其對應的圖像為
import numpy as np
import matplotlib.pyplot as pltz = np.arange(-5, 5, 0.01)
y = 1/(1+np.exp(-z))plt.plot(z, y)
plt.show()
邏輯回歸基于概率來進行分類。對于給定輸入特征X,邏輯回歸模型會計算輸出標簽y=1(正類)的條件概率:
P ( y = 1 ∣ X ) = 1 1 + e ? ( θ T X + b ) P(y=1|X)=\frac{1}{1+e^{-(\theta^T X+b)}} P(y=1∣X)=1+e?(θTX+b)1?
其中, ω \omega ω是特征權重,b是偏置項
邏輯回歸將線性回歸的結果 y y y= θ T X \theta^T X θTX+ b b b帶入到Sigmoid函數的自變量,并將其映射到0和1之間,使其可以解釋為概率
邏輯回歸與線性回歸的關鍵區別在于,后者訓練出來的模型的預測值域為( ? ∞ -∞ ?∞,+ ∞ ∞ ∞),換句話說,也就是對值域沒有限制;而對于表示概率的值而言,其值域都是在(0,1)之間
更多關于邏輯回歸的介紹見文章:傳送門
1.2、邏輯回歸的優缺點
優點:
- 模型簡單,分類計算量小,存儲資源低,訓練和預測速度快
- 預測結果是觀測樣本的概率,易于理解,增加了解釋性
- 對邏輯回歸而言,多重共線性并不是問題,它可以結合L2正則化來解決該問題
缺點:
- 只能處理二分類問題,且邏輯回歸假設數據是線性可分的,對于非線性特征,需要進行轉換
- 容易欠擬合,一般準確度不太高
1.3、邏輯回歸與線性回歸
邏輯回歸與線性回歸的區別詳見文章:傳送門
2、邏輯回歸的原理
2.1、邏輯回歸的概念與原理
邏輯回歸的概念與原理推導詳見文章:傳送門
2.2、邏輯回歸的損失函數
在邏輯回歸(詳見:傳送門)一文中,我們已經給出并推導了邏輯回歸的損失函數
J ( θ ) = ? 1 m ∑ i = 1 m [ y i ln ? y ^ i + ( 1 ? y i ) ln ? ( 1 ? y ^ i ) ] J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y_i\ln \hat y_i+(1-y_i)\ln(1-\hat y_i)] J(θ)=?m1?i=1∑m?[yi?lny^?i?+(1?yi?)ln(1?y^?i?)]
其中