對邏輯斯蒂回歸的一些細節剖析


原文:http://blog.csdn.net/xmu_jupiter/article/details/46755679

首先聲明:本博客的寫作思路是對機器學習的一些基本算法做一些通俗性的靈活理解,以及對一些細節的進行簡單剖析,還有記錄本人在使用算法時的一些小經驗小感想。本人一般不會對基本公式做大量推導,也不會寫的太正式,這些可以在很多其他博客中找到。由於本人還是學生一枚,經驗知識粗淺,還望能和朋友們參與討論。

之前本博客簡單談過線性回歸相關知識點,這次來談一下邏輯斯蒂回歸。雖然也叫回歸,但是邏輯斯蒂回歸是一種分類算法。它合理地應用了線性回歸的優勢來完成分類任務,是一種應用非常廣泛的分類算法。

那么,邏輯斯蒂回歸是如何完成分類任務的呢?

第一個理解角度:線性回歸用於分類任務的拓展

我們知道,線性回歸之所以功能強大,離不開它能將輸入數據的各個維度的特征進行了有效的結合(通過分配不同的權重),使得所有特征共同協同合作作出最后的決策。但是,作出的決策是對模型的一個擬合結果,不能直接用於分類。於是,邏輯斯蒂回歸使用了一個sigmod函數,將特征的線性加權結果映射到0到1之間,而這剛好可以看做是數據樣本點屬於某一類的概率。如果結果越接近0或者1,說明分類結果的可信度越高。

這里需要注意的一點是,邏輯斯蒂回歸不僅可以處理數據線性可分的情況,還可以處理數據線性不可分的情況。當線性加權的各個特征不是簡單的線性函數而是非線性函數的時候,分割面就不是一個超平面而是一個曲線或者曲面。這種情況一圖以明之: 
這里寫圖片描述

還有一個理解角度是:基於邏輯斯蒂分布的二項邏輯斯蒂回歸模型

這個角度的好處是可以將邏輯斯蒂回歸模型的二分類問題輕松擴展到多分類問題。二項邏輯斯蒂回歸模型是一種分類模型,由條件概率分布P(Y|X)表示,形式為參數化的邏輯斯蒂分布(關於邏輯斯蒂分布以及概率分布的基礎知識請看本文附錄)。這里,隨機變量X取值為實數,隨機變量Y取值為1或0。二項邏輯斯蒂回歸模型是如下的條件概率分布: 
這里寫圖片描述 
對於給定的輸入實例x,按照上式可以求得P(Y=1|x)和P(Y=0|x)。邏輯斯蒂回歸比較兩個條件概率值的大小,將實例x分到概率值較大的那一類。

現在我們要引入一個叫做“事件的幾率”這個概念。一個事件的幾率是指該事件發生的概率與該事件不發生的概率的比值。如果事件發生的概率是p,那么該事件的幾率是p/(1-p),該事件的對數幾率或logit函數是:logit(p)=log( p/(1-p) ) 。對邏輯斯蒂回歸而言,由上面表達式得: 
這里寫圖片描述 
這就是說,在邏輯斯蒂回歸模型中,輸出Y=1的對數幾率是輸入x的線性函數。或者說,輸出Y=1的對數幾率是由輸入x的線性函數表示的模型,即邏輯斯蒂回歸模型。

多項邏輯斯蒂回歸

上面說到第二種角度可以輕松擴展到多分類,叫做多項邏輯斯蒂回歸模型,我們現在來看一下。假設離散型隨機變量Y的取值集合是{1,2,…K},那么多項邏輯斯蒂回歸模型是: 
這里寫圖片描述 
對於參數估計方法仍然可以采用二分類時候的最大似然估計,后面再講。

邏輯斯蒂回歸適合應用在什么場景?

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

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

如何提高邏輯斯蒂回歸的分類准確性?

個人感覺,只要特征找的准,數據量足夠大,邏輯斯蒂回歸將會非常好用。另外,還要注意避免過擬合。

特征選擇的話,由於邏輯斯蒂回歸的優點,開始的時候不用考慮各個特征之間是否有相關性,直接把能用的特征全部線性加權起來就好。經過初步訓練,觀察各個特征的權值,如果權值接近為0,那么就可以將這個特征看做是不相關的可以去除的特征。總結起來就是:先做加法再做減法。

解決過擬合的方法不過兩種,一種是減少特征的個數;另一種是模型選擇的正則化方法。正則化的話,可以參考嶺回歸方法。

邏輯斯蒂回歸的優缺點?

優點:計算代價不高,易於理解和實現,且若采用隨機梯度上升法可以在線學習; 
缺點:可能容易欠擬合,分類精度不高,這個可能是因為我們無法找到足夠的特征。

邏輯斯蒂回歸的模型訓練?

采用最大似然估計。對於二分類問題,數據屬於A類的概率為H(X),那么數據屬於B類的概率就為1-H(X)。模型訓練就是使得訓練數據的似然函數最大,於是轉化為一個最優化的問題。也可以將最大似然估計理解為損失函數為對數損失函數的經驗風險最小化,證明在這里,所以邏輯斯蒂回歸的損失函數是對數損失函數。

邏輯斯蒂回歸模型歸結為以似然函數為目標函數的最優化問題,通常通過迭代算法求解。從最優化的觀點看,這時的目標函數具有很好的性質,它是光滑的凸函數,因此多種最優化的方法都適用,保證能找到全局最優解。在解這個最優化問題的時候,通常采用近似方法如梯度上升法和擬牛頓法。為什么不像線性回歸那樣直接求取解析解呢?因為這將導致計算非常復雜。其中梯度上升法可能導致計算量太大,於是用隨機梯度上升法代替;牛頓法或擬牛頓法一般收斂速度更快。

隨機梯度上升法需要注意兩個點才能達到性能完全發揮出來。首先,控制步長的alpha最好不要設定為固定值,而是隨着迭代的深入而不斷變小,這樣有利於減少在最優值附近的震盪。這可以將alpha設置為分母隨着迭代次數不斷變大的分數來實現,但注意不要讓alpha最后變為零,這就需要alpha設置為分數和常數的和;其次,既然是隨機梯度上升,那么每次取一個樣本點的時候就要隨機取,不要按照順序取,這樣才能保證合理性。最后要注意迭代次數的控制。

模型參數求解出來以后是特征權重組成的向量。其實,邏輯斯蒂回歸模型可以看做由兩部分組成。一部分跟線性回歸一樣,就是一條直線;另一部分就是sigmod函數。需要注意的是,有了權重向量我們就可以線性加權了,我們的直線就是令線性加權的結果為0的公式表達。為什么要人為定為0呢?當然是為了sigmod函數啊。這樣才能使正樣本的線性加權大於0,在sigmod中接近1,同樣負樣本的線性加權小於0,在sigmod中接近0。在SVM中,同樣也是先學習一個分離超平面,然后帶入分類決策函數sign中。

與其它的分類算法比較?

能和邏輯斯蒂回歸進行比較的就是牛逼閃閃的線性SVM了。關於這部分請移步這里。大概意思是:直接用線性回歸做分類因為考慮到了所有樣本點到分類決策面的距離,所以在兩類數據分布不均勻的時候將導致誤差非常大;邏輯斯蒂回歸回歸和SVM克服了這個缺點,前者采用將所有數據采用sigmod函數進行了非線性映射,使得遠離分類決策面的數據作用減弱;后者則直接去掉了遠離分類決策面的數據,只考慮支持向量的影響。

附錄

邏輯斯蒂分布

設X是連續隨機變量,X服從邏輯斯蒂分布是指X具有下列分布函數和密度函數: 
這里寫圖片描述 
邏輯斯蒂分布的密度函數f(x)和F(x)的圖形如下圖所示: 
這里寫圖片描述 
其中,分布函數在x處的取值其實就是將密度函數在x以及之前負無窮的所有取值進行積分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM