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+𝑝70∗30∗(1−𝑝)29∗(−1)=0
70∗(1−𝑝)−𝑝∗30=0
同理一下,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 回歸來解決非線性問題,因為它的決策邊界是線性的。