1.什么是邏輯回歸模型氮趋?
首先婿屹,我們不要被邏輯回歸這個名字所誤導,邏輯回歸實際上是一個分類算法爽彤,它被用于將樣本數(shù)據(jù)進行分類的場景中养盗,比如預測一封郵件是否是垃圾郵件。
邏輯回歸的分類思想是:將每條樣本進行打分适篙,然后設置一個閾值往核,當樣本得分大于這個閾值時,分為一個類別嚷节,當樣本得分小于等于這個閾值時聂儒,劃分為另一個類別。(對于樣本得分等于閾值時硫痰,劃分為哪一個類別都可以衩婚,只要保持一致性即可)
關于邏輯回歸,可以用一句話來總結:邏輯回歸假設數(shù)據(jù)服從伯努利分布效斑,通過極大似然函數(shù)的方法非春,運用梯度下降來求解參數(shù),來達到將數(shù)據(jù)二分類的目的鳍悠。
邏輯回歸通常應用于目標變量是分類變量的場景税娜,比如:
- 預測一封郵件是否是垃圾郵件
- 判斷腫瘤是良性還是惡性
邏輯回歸的種類:
- 二元邏輯回歸
分類結果只有兩種可能,例如:垃圾郵件和非垃圾郵件 - 多元邏輯回歸
三種及以上無序的分類藏研,例如:預測哪類食物更被青睞(蔬菜敬矩、非蔬菜、素食) - 有序邏輯回歸
三種及以上有序的分類蠢挡,例如:排名1-3的電影
2.邏輯回歸的算法模型
對于邏輯回歸弧岳,模型的前面與線性回歸類似:
sigmoid函數(shù)
對于分類任務來說,分類模型不僅應該能夠提供某一樣本屬于哪個分類业踏,還要給出樣本屬于某一類別的概率禽炬。比如一封郵件是垃圾郵件的概率,腫瘤是惡性的概率等勤家。
邏輯回歸使用sigmoid函數(shù)將結果轉化為概率值:
從圖中可以看出腹尖,sigmoid函數(shù)具有以下特點:
1)當z的值從負無窮到正無窮變化時,函數(shù)的取值范圍為(0,1)伐脖,這正好是概率的取值范圍
2)當z取值為0時热幔,函數(shù)取值為0.5,因此可以將sigmoid(z)作為樣本屬于正例的概率讼庇,若函數(shù)取值大于0.5判定為類別1绎巨,否則判定為類別0
3)sigmoid函數(shù)的優(yōu)勢就是能以概率的方式來呈現(xiàn)樣本屬于某個類別的可能性
3.邏輯回歸的損失函數(shù)
在邏輯回歸中,使用sigmoid(z)來表示樣本屬于類別1的概率蠕啄,1-sigmoid(z)來表示樣本屬于類別0的概率场勤,我們通過極大似然估計來推導邏輯回歸的損失函數(shù)。為了方便,下面使用s(z)來表示sigmoid(z)
通過以上推導和媳,我們得出了邏輯回歸的損失函數(shù)格遭,接下來通過梯度下降法求解模型的參數(shù),也就是w和b的值窗价,一旦參數(shù)值確定如庭,我們就能對未知樣本數(shù)據(jù)進行預測。
4.邏輯回歸參數(shù)求解
這里采用梯度下降法求解邏輯回歸的損失函數(shù)撼港,梯度下降的迭代公式如下:
接下來只需要求解損失函數(shù)對W的梯度即可坪它,推導過程如下:
公式中i代表樣本數(shù),j代表特征數(shù)
因此在隨機梯度下降中帝牡,我們就可以這樣進行權重的調整:
在批量梯度下降中往毡,將樣本數(shù)量相加即可:
經(jīng)過不斷反復迭代,最終求得W值靶溜,使得損失函數(shù)的值最小开瞭。
5.邏輯回歸的python代碼實現(xiàn)
使用邏輯回歸需要導入的包:
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
使用過程非常簡單,常用函數(shù)如下:
lr = LogisticRegression()
lr.fit(x_train, y_train)
# 預測值
y_hat = lr.predict(x_test)
# 查看預測的概率
probability = lr.predict_proba(x_test)
print("權重:", lr.coef_)
print("偏置:", lr.intercept_)
print("預測值:", y_hat)