機器學習演算法——邏輯迴歸詳解
簡介
邏輯迴歸(Logistic Regression)既是迴歸演算法,也是分類演算法。通常情況下用於解決分類問題。
之前線性迴歸中,迴歸函式 y = Wx + b 中,y實際上就是我們要預測的值,如房價的價格預測。
而線上性迴歸中,我們實際要求的函式為 p = f(x) ,p為概率值。最終根據概率值來進行分類。如下: 當p >= 0.5時,令y = 1,否則令 y = 0,此處的1和0代表不同的二分類類別。如1代表惡性腫瘤患者,0代表良性腫瘤患者等。
從而可以看出邏輯迴歸既可以看作是迴歸演算法,也可以看作是分類演算法,如果不進行最後一步求解y值的操作,則可以看作是迴歸問題,此處迴歸是計算概率,比如計算病人患有惡性腫瘤的概率。但通常情況下,邏輯迴歸還是作為分類演算法用,只可以解決二分類問題
Sigmoid函式
線性迴歸中,我們有迴歸函式y=Wx+b。y的取值範圍可以是(負無窮,正無窮)。現在,我們不想讓它的值這麼大,所以我們就想把這個值給壓縮一下,壓縮到[0,1]。什麼函式可以幹這個事呢?研究人員發現signomid函式就有這個功能。
Sigmoid函式如下 其對應程式碼和影象如下:
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(t):
return 1 / (1 + np.exp(-t))
x = np.linspace(-10, 10, 500 )
y = sigmoid(x)
plt.plot(x, y)
plt.show()
壓縮,就是把y=wx+b帶入sigmoid(x)。把這個函式的輸出,還定義為y,即:
損失函式
在這裡我們主要通過損失函式來修正上述sigmoid函式中的權重引數W,從而讓模型更好地擬合實際情況。
損失函式,通俗講,就是衡量真實值和預測值之間差距的函式。所以,我們希望這個函式越小越好。在這裡,最小損失是0。
以二分類(0,1)為例:
-
當真值為1,模型的預測輸出為1時,損失最好為0,預測為0是,損失儘量大。
-
當真值為0,模型的預測輸出為0時,損失最好為0,預測為1是,損失儘量大。
所以,我們儘量使損失函式儘量小,越小說明預測的越準確。這個損失函式為:
對於m個樣本,將每個樣本的損失值求和再平均即得到總樣本的損失: 這裡的thita即為之前的權重引數W,為了看得更清楚,上式還可以這樣改寫: 其中: 於是我們便得到了一個關於權重引數thita的損失函式,從而使得損失函式達到最小值時求出對應的thita值,使得模型最佳擬合實際效果。
梯度下降法推導權重引數
未完待續