1. 程式人生 > >機器學習演算法——邏輯迴歸詳解

機器學習演算法——邏輯迴歸詳解

簡介

邏輯迴歸(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是,損失儘量大。

所以,我們儘量使損失函式儘量小,越小說明預測的越準確。這個損失函式為: 在這裡插入圖片描述

其函式影象如圖: 在這裡插入圖片描述 上述情況中,損失函式還需要分情況討論,十分不方便。我們把這兩個損失綜合起來得到損失函式為: 在這裡插入圖片描述 其實,該綜合損失函式與之前分兩種情況的損失函式完全沒有區別,當y = 1時,代入得該綜合損失函式為 -log(x),當y = 0時,代入得該綜合損失函式為 -log(1 - x)。可見,與之前分類情況下沒有區別。

對於m個樣本,將每個樣本的損失值求和再平均即得到總樣本的損失: 在這裡插入圖片描述 這裡的thita即為之前的權重引數W,為了看得更清楚,上式還可以這樣改寫: 在這裡插入圖片描述 其中: 在這裡插入圖片描述 於是我們便得到了一個關於權重引數thita的損失函式,從而使得損失函式達到最小值時求出對應的thita值,使得模型最佳擬合實際效果。

梯度下降法推導權重引數

未完待續