機器學習實戰(1)—— 邏輯迴歸原理部分

邏輯斯蒂迴歸(Logistic Regression)模型是廣義線性模型的一種,屬於線性分類模型。

對於圖中所示的線性可分問題,需要找到一條直線,能夠將兩個不同類別區分開,這條直線稱爲超平面。

對於上述的超平面,可以使用如下的線性函數表示:

Wx+b=0

W 爲權重,b 爲偏置。如果是多維的情況,W 和 b 爲向量。

LR 算法中,通過對訓練樣本的學習,得到這個超平面,將數據二分類。

使用閾值函數,將樣本映射到不同的類別中,常用的是 Sigmoid 函數。

形式爲:

從 Sigmoid 函數的圖像可以看出,其值域爲(0,1)

在 x=0 附近變化較大

在二分類問題中,爲什麼棄用傳統的線性迴歸模型,改用邏輯斯蒂迴歸?

線性迴歸用於二分類時,首先想到下面這種形式,P 是屬於類別的概率:

P = Wx+b

P = w1x1+w2x2+...+wnxn+b

存在的問題:

1)等式兩邊的取值範圍不同,右邊是負無窮到正無窮,左邊是 [0,1],此分類模型的存在問題。

2)實際中的很多問題,都是當 x 很小或很大時,對於因變量 P 的影響很小,當 x 達到中間某個閾值時,影響很大。即實際中很多問題,概率 P 與自變量並不是直線關係。

Sigmoid 函數能將分類任務的真實標記 y 和線性迴歸模型的預測值聯繫起來。

二分類輸出的標記爲

而線性迴歸模型產生的預測值 z = wTx+b 是實值。

我們需要將實值 z 轉換爲 0/1 值,所以可以考慮使用 Sigmoid 函數!

Sigmoid 函數:

線性函數的值越接近正無窮,概率值就越接近 1,線性函數的值越接近負無窮,概率值就越接近 0,這就是邏輯斯蒂迴歸模型。

將式子變換爲:

如果 y 視爲樣本 x 相對可能性,對幾率取對數則得到 “對數幾率”。

由此看出,上式是用線性迴歸模型的預測結果去逼近真實標記的對數幾率,所以模型稱爲 “對數幾率迴歸”(亦稱 logit regression),雖然它的名字是 “迴歸”,但它是一種分類學習方法。

LR 迴歸是在線性迴歸模型的基礎上,使用 sigmoid 函數,將線性模型 wTx+b 的結果壓縮到 [0,1] 之間,使其擁有概率意義。

如果將

式子中的 y 視爲類後驗概率 p(y = 1 | x),意思爲在樣本 x 條件下,類別爲 1 的概率。

則上式可重寫爲:

又因爲:P(Y=1 | x)= f(x),P(Y=1 | x)+  P(Y=0 | x)= 1

得:

參數 W 的確定:

給定訓練數據集 T={(x1,y1),(x2,y2),...,(xN,yN)}

其中 xiRn,yi {0,1},可以用極大似然估計法估計模型參數

設 P(Y=1 | x)=f(x)   ,  P(Y=0 | x)=1 - f(x)(概率相加爲 1)

似然函數:

yi 個 1 類別,1-yi 個 0 類別

對數似然函數爲:

對 L(w) 求極大值,就能得到 w 的估計值。

採用 L(w)對 w 求偏導,令其爲 0,求解出 w

L(w)爲上凸函數,上式乘以 - 1,變成下凸函數,就可以使用梯度下降來求最小值,乘 1/N 是爲了方便計算:

令:                                                                              

 α:學習速率參數

用隨機梯度下降法更新參數 w:

   j 從 1~N:

              repeat:

對於每一次更新參數,不必遍歷所有的訓練集合,僅僅使用了一個數據,來變換一個參數。

在我們的應用中,如果需要作出分類的數據擁有很多有意義的特徵,每個特徵(我們假設這些特徵都是有效的)都對最後的分類結果又或多或少的影響,那麼最簡單最有效的辦法就是將這些特徵線性加權,一起參與到作出決策的過程中。比如預測廣告的點擊率,又比如從原始數據集中篩選出符合某種要求的有用的子數據集。

邏輯斯蒂迴歸還有一個優點,那就是它不是硬性地將分類結果定爲 0 或者 1,而是給出了 0 和 1 之間的概率。這就相當於對每條數據的分類結果給出了一個打分。打分越高的數據越是我們想要的。如果我們要從一個數據集中篩選出一批數據(比如 100 個),就只要選出打分排名前 100 的數據就可以了。我們也可以根據實際情況設定一個閥值,大於這個閥值的歸爲一類,小於這個閥值的歸爲另一類。

這就是邏輯迴歸的算法原理部分~ 

你在看嗎?

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/dQkr9mQjYnmLY7ysrenD_A