邏輯迴歸及相關問題的總結

最近總結了好多之前學習的算法,想都寫在博客上,對自己是個總結,不然每次總得翻好幾本書或者好幾個雲筆記才能看全。可是無奈,要寫的東西太多,好多都積壓在草稿箱裏,只能有點時間趕緊寫點。

     

1.參考資料

這次不同的是,我要先列舉幾個自己參考的文獻,博客等。真的是從裏面受益匪淺,這也是我主要的參考資料。如果有需要的童鞋,可以先看它們。

1).http://blog.csdn.net/zouxy09/article/details/24971995/(講L0,L1,L2範數講的不錯哦)

2).機器學習實戰(Machine Learning in Action),Peter Harrington 著。這裏我主要參考的是第五章:Logistic迴歸及第八章 預測數值型數據:迴歸

3).李航博士的統計學習方法(這是我必用的啊)

4).邏輯迴歸的數據推導參考的一點資料:http://blog.csdn.net/Andrewseu/article/details/46742151

5).寒小陽的博客http://blog.csdn.net/han_xiaoyang/article/details/49123419(每次必讀,很謙虛的一個老師)

6).Andrew Ng的課程

7)http://blog.csdn.net/abcjennifer/article/details/7716281(浙大的,我崇拜人之一)

8)https://github.com/celestewang1026/LogisticRegression(我寫了一個簡單的代碼,僅供參考,還有很多的問題。以後每個算法我決定都寫在博客上,代碼都放在github上。對於這麼懶的我,可是一項不小的工程啊,^~^)


2.邏輯迴歸的推導(Logistic Regression ,LR)---數學基礎

               最大似然原理:通過m個訓練樣本估出theta,使似然函數最大。




 3.步驟

     1)尋找h函數(hyothesis)

     2)構造J(損失)函數

     3)求得使J最小的參數

4.終止條件

     1)設定迭代次數爲指定值

     2) 所得模型參數變化很小/允許的範圍(設定一個閾值)

5.求解及改進算法

求解:

        具體見上面的手稿

改進:

       判斷優化算法優劣的可靠方法是:看其是否收斂。參數是否達到了穩定值,是否還會不斷的變換,我們期望得到的參數避免有很大的波動,其能收斂到某個值且收斂速度加快。如何做到呢?

      1)alpha每次迭代的時候要調整

      2)隨機選擇樣本來更新參數,及在改進梯度下降法(隨機梯度下降法,mini-batch梯度下降)


或者:除了梯度下降以外,其他的方法


--Conjugate Gradient

--BFGS

--L-BFGS


上述三個方法共同的特點:無需選擇學習率alpha;更快。但是更復雜



6.優缺點

優點:

    1)可以得到的不止是簡單的分類結果,還可得到其概率,0~1之間,通常取0.5爲閾值,大於0.5,取1,爲正類;小於0.5,取0,爲負類。

    2)模型簡單

缺點:

1)對模型中自變量多重共線性較爲敏感,例如兩個高度相關自變量同時放入模型,可能導致較弱的一個自變量回歸符號不符合預期,符號被扭轉。​需要利用因子分析或者變量聚類分析等手段來選擇代表性的自變量,以減少候選變量之間的相關性;

2)預測結果呈“S”型,因此從log(odds)向概率轉化的過程是非線性的,在兩端隨着​log(odds)值的變化,概率變化很小,邊際值太小,slope太小,而中間概率的變化很大,很敏感。導致很多區間的變量變化對目標概率的影響沒有區分度,無法確定閥值。


7.應用場景


1)危險元素的檢測

2)信用評估







8.L0,L1,L2範數及正則

L0範數:向量中非0元素的個數,L0範數用來規劃一個係數矩陣,希望大部分元素爲0 ,達到“稀疏”的效果

L1範數:絕對值之和;

L2範數:就是我們平時所說的模;


1)L0範數可以實現稀疏,爲什麼不使用L0要使用L1呢?

因爲L0範數不可微,是一個NP問題(難優化求解),但是L1是L0的最優凸近似,且L1比L0容易優化求解。


總結:L1和L0都可以實現稀疏化,L1因具有比L0更好的優化求解特性而被廣泛應用。

稀疏規則化:可實現特徵的自動選擇,對於沒有用的信息的特徵,其權重=0

2)L2可以防止過擬合,提升模型的泛化能力!!

欠擬合與過擬合(盜用NG課程的一個圖)

http://write.blog.csdn.net/postedit/53121723


Overfitting:if we have too many features,the learned hypothesis may fit the training set very well ,but fail to generalize to new examples(predict prices on new examples)即:模型複雜到我們可以擬合我們所有的訓練樣本,但是預測新樣本時,糟糕的一塌糊塗(模型訓練時誤差很小,但是測試時誤差很大)

what is 模型複雜?-->要學習的參數多,時間複雜度高等

誤差(偏差):模型預測值和數據之間的差異

方差:模型之間的差異。隨機選取樣本,線性模型擬合。同理,對於所得到的各組之間的模型係數,各系數之間的差異大小

如何權衡偏差和方差?

用下面一幅圖可以把上面的關係清晰的表現出來,如下所示。



下面解釋一下爲什麼L2可以防止過擬合?





 可以看到,L1-ball 與L2-ball 的不同就在於L1在和每個座標軸相交的地方都有“角”出現,而目標函數的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0,而更高維的時候(想象一下三維的L1-ball 是什麼樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成爲第一次相交的地方,又會產生稀疏性。

       相比之下,L2-ball 就沒有這樣的性質,因爲沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。這就從直觀上來解釋了爲什麼L1-regularization 能產生稀疏性,而L2-regularization 不行的原因了。

       因此,一句話總結就是:L1會趨向於產生少量的特徵,而其他的特徵都是0,而L2會選擇更多的特徵,這些特徵都會接近於0。Lasso在特徵選擇時候非常有用,而Ridge就只是一種規則化而已。


話外:



對於上式,如果當我們的樣本X的數目比每個樣本的維度還要小的時候,矩陣XTX將會不是滿秩的,也就是XTX會變得不可逆,所以w*就沒辦法直接計算出來了。這時候我們可以加入正則,即上面提到的Lasso和Ridge,就可以直接求逆了。



總結:

L1可以特徵選擇!!

L2可以防止過擬合!!






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章