邏輯回歸(LR)個人學(xué)習(xí)總結(jié)篇

寫作計劃:

線性模型LR(沒有考慮特征間的關(guān)聯(lián))——>LR +多項式模型(特征組合,不適用于特征稀疏場景,泛化能力弱)——>FM(適用于稀疏特征場景*,泛化能力強)——>FFM【省去零值特征,提高FFM模型訓(xùn)練和預(yù)測的速度,這也是稀疏樣本采用FFM的顯著優(yōu)勢】

0.前言

邏輯回歸(LR,Logistic Regression)是傳統(tǒng)機器學(xué)習(xí)中的一種分類模型,由于LR算法具有簡單、高效、易于并行且在線學(xué)習(xí)(動態(tài)擴展)的特點,在工業(yè)界具有非常廣泛的應(yīng)用。

在線學(xué)習(xí)算法:LR屬于一種在線學(xué)習(xí)算法,可以利用新的數(shù)據(jù)對各個特征的權(quán)重進(jìn)行更新,而不需要重新利用歷史數(shù)據(jù)訓(xùn)練。

LR適用于各項廣義上的分類任務(wù),例如:評論信息正負(fù)情感分析(二分類)、用戶點擊率(二分類)、用戶違約信息預(yù)測(二分類)、用戶等級分類(多分類 )等場景。

實際開發(fā)中,一般針對該類任務(wù)首先都會構(gòu)建一個基于LR的模型作為Baseline Model,實現(xiàn)快速上線,然后在此基礎(chǔ)上結(jié)合后續(xù)業(yè)務(wù)與數(shù)據(jù)的演進(jìn),不斷的優(yōu)化改進(jìn)!

1.線性回歸模型(Linear Regression

提到LR,就不得不先從線性回歸模型講起:

概念:對于多維空間中存在的樣本點,我們用特征的線性組合(特征加權(quán))去擬合空間中點的分布和軌跡。

有監(jiān)督訓(xùn)練數(shù)據(jù)集(X,Y),X表示特征,Y表示標(biāo)簽,w表示該某一特征對應(yīng)的權(quán)重,最終的線性模型如hw(x)所示:

線性回歸模型既可以用于回歸,也可以用于分類。

解決回歸問題,可以用于連續(xù)目標(biāo)值的預(yù)測。

但是針對分類問題,該方法則有點不適應(yīng),應(yīng)為線性回歸的輸出值是不確定范圍的,無法很好的一一對應(yīng)到我們的若干分類中。即便是一個二分類,線性回歸+閾值的方式,已經(jīng)很難完成一個魯棒性很好的分類器了。

為了更好的實現(xiàn)分類,邏輯回歸誕生了。

[邏輯回歸是假設(shè)數(shù)據(jù)服從Bernoulli分布,因此LR屬于參數(shù)模型]

2.邏輯回歸(LR)

通過在線性回歸模型中引入Sigmoid函數(shù),將線性回歸的不確定范圍的連續(xù)輸出值映射到(0,1)范圍內(nèi),成為一個概率預(yù)測問題。

可以把LR看作單層的神經(jīng)網(wǎng)絡(luò)。

LR目標(biāo)函數(shù):

其中Sigmoid函數(shù)g(z)的定義如下:

Sigmoid函數(shù)的函數(shù)圖像為:

Sigmoid函數(shù)的導(dǎo)數(shù)形式:

整合一下,LR的單個樣本的目標(biāo)函數(shù)為:

假設(shè)有n個獨立的訓(xùn)練樣本{(x1, y1) ,(x2, y2),…, (xn, yn)},y={0, 1}。那每一個觀察到的樣本(xi, yi)出現(xiàn)的概率是:

解釋一下:

當(dāng)y=1的時候,后面那一項是不是沒有了,那就只剩下x屬于1類的概率,當(dāng)y=0的時候,第一項是不是沒有了,那就只剩下后面那個x屬于0的概率(1減去x屬于1的概率)。所以不管y是0還是1,上面得到的數(shù),都是(x, y)出現(xiàn)的概率。

那我們的整個樣本集,也就是n個獨立的樣本出現(xiàn)的似然函數(shù)為(因為每個樣本都是獨立的,所以n個樣本出現(xiàn)的概率就是他們各自出現(xiàn)的概率相乘),到整個樣本的后驗概率:

其中:

通過對數(shù)進(jìn)一步化簡為,最終LR的目標(biāo)函數(shù)為:

2.1.如何求解模型的參數(shù)?

LR模型的數(shù)學(xué)形式確定后,剩下就是如何去求解模型中的參數(shù)。

統(tǒng)計學(xué)中常用的一種方法是最大似然估計(MLE),即找到一組參數(shù),使得在這組參數(shù)下,我們的數(shù)據(jù)的似然度(概率)越大。對于該優(yōu)化問題,存在多種求解方法,這里以梯度下降的為例說明。

梯度下降(Gradient Descent)又叫作最速梯度下降,是一種迭代求解的方法,通過在每一步選取使目標(biāo)函數(shù)變化最快的一個方向調(diào)整參數(shù)的值來逼近最優(yōu)值。

基本步驟如下:

利用鏈?zhǔn)椒▽δ繕?biāo)函數(shù)則進(jìn)行求導(dǎo):

其中,一共可以分為三部分分別求導(dǎo):

第一部分:

第二部分:

第三部分:

最終整體的求導(dǎo)形式:

模型參數(shù)的更新公式為:

沿梯度負(fù)方向選擇一個較小的步長可以保證損失函數(shù)是減小的,另一方面,邏輯回歸的損失函數(shù)是凸函數(shù)(加入正則項后是嚴(yán)格凸函數(shù)),可以保證我們找到的局部最優(yōu)值同時是全局最優(yōu)。

此外,常用的凸優(yōu)化的方法都可以用于求解該問題。例如共軛梯度下降,牛頓法,LBFGS等。

2.2.python實現(xiàn)LR的核心代碼片段

# coding:utf-8'''

Created on Oct 27, 2010

Logistic Regression Working Module

@author: Peter

代碼來源:機器學(xué)習(xí)實戰(zhàn)-第五章的源碼片段

'''defsigmoid(inX):return1.0/(1+exp(-inX))defstocGradAscent(dataMatrix, classLabels, numIter=150):m,n = shape(dataMatrix)? ? weights = ones(n)#initialize to all onesforjinrange(numIter):? ? ? ? dataIndex = range(m)foriinrange(m):? ? ? ? ? ? alpha =4/(1.0+j+i)+0.0001#apha decreases with iteration, does not randIndex = int(random.uniform(0,len(dataIndex)))#go to 0 because of the constanth = sigmoid(sum(dataMatrix[randIndex]*weights))# 標(biāo)簽的真實值-預(yù)測值error = classLabels[randIndex] - h# 模型參數(shù)更新公式(與我們推導(dǎo)的形式一致)weights = weights + alpha * error * dataMatrix[randIndex]del(dataIndex[randIndex])returnweights

2.3.模型的優(yōu)化-引入正則化

當(dāng)模型的參數(shù)過多時,很容易遇到過擬合的問題。這時就需要有一種方法來控制模型的復(fù)雜度,典型的做法在優(yōu)化目標(biāo)中加入正則項,通過懲罰過大的參數(shù)來防止過擬合.

引入正則項的LR目標(biāo)函數(shù):

一般情況下,取p=1或p=2,分別對應(yīng)L1,L2正則化,兩者的區(qū)別可以從下圖中看出來,L1正則化(左圖)傾向于使參數(shù)變?yōu)?,因此能產(chǎn)生稀疏解。

實際應(yīng)用時,由于我們數(shù)據(jù)的維度可能非常高,L1正則化因為能產(chǎn)生稀疏解,使用的更為廣泛一些。

3.LR如何解決多分類問題?

簡言之,把Sigmoid函數(shù)換成softmax函數(shù),即可適用于多分類的場景。

Softmax 回歸是直接對邏輯回歸在多分類的推廣,相應(yīng)的模型也可以叫做多元邏輯回歸(Multinomial Logistic Regression)。

softmax函數(shù)為:

整體的目標(biāo)函數(shù):

使用softmax的多分類與使用Sigmoid的二分類有什么區(qū)別與聯(lián)系?

通過上面的推導(dǎo)可知,當(dāng)多分類的K=2時,與使用Sigmoid的二分類是一致的。

4.LR如何解決線性不可分問題?

邏輯回歸本質(zhì)上是一個線性模型,但是,這不意味著只有線性可分的數(shù)據(jù)能通過LR求解,實際上,我們可以通過2種方式幫助LR實現(xiàn):

(1)利用特殊核函數(shù),對特征進(jìn)行變換:把低維空間轉(zhuǎn)換到高維空間,而在低維空間不可分的數(shù)據(jù),到高維空間中線性可分的幾率會高一些。

(2)擴展LR算法,提出FM算法。

使用核函數(shù)(特征組合映射)

針對線性不可分的數(shù)據(jù)集,可以嘗試對給定的兩個feature做一個多項式特征的映射,例如:

下面兩個圖的對比說明了線性分類曲線和非線性分類曲線(通過特征映射)

左圖是一個線性可分的數(shù)據(jù)集,右圖在原始空間中線性不可分,但是利用核函數(shù),對特征轉(zhuǎn)換 [x1,x2]=>[x1,x2,x21,x22,x1x2]

后的空間是線性可分的,對應(yīng)的原始空間中分類邊界為一條類橢圓曲線。

在LR中,我們可以通過在基本線性回歸模型的基礎(chǔ)上引入交叉項,來實現(xiàn)非線性分類,如下:

但是這種直接在交叉項xixj的前面加上交叉項系數(shù)wij的方式在稀疏數(shù)據(jù)的情況下存在一個很大的缺陷,即在對于觀察樣本中未出現(xiàn)交互的特征分量,不能對相應(yīng)的參數(shù)進(jìn)行估計。

即,在數(shù)據(jù)稀疏性普遍存在的實際應(yīng)用場景中,二次項參數(shù)的訓(xùn)練是很困難的。其原因是,每個參數(shù)wij的訓(xùn)練需要大量xi和 xj都非零的樣本;由于樣本數(shù)據(jù)本來就比較稀疏,滿足xi和 xj都非零”的樣本將會非常少。訓(xùn)練樣本的不足,很容易導(dǎo)致參數(shù)wij不準(zhǔn)確,最終將嚴(yán)重影響模型的性能。

為什么特征稀疏?

one-hote編碼帶來的問題

在機器學(xué)習(xí)中,尤其是計算廣告領(lǐng)域,特征并不總是數(shù)值型,很多時候是分類值,對于categorical feature,通常會采用one-hot encoding轉(zhuǎn)換成數(shù)值型特征,轉(zhuǎn)化過程會產(chǎn)生大量稀疏數(shù)據(jù)。

可以這么理解:對于每一個特征,如果它有m個可能取值,那么經(jīng)過one-hot encoding之后,就變成了m個二元特征,并且,這些特征互斥,每次只有一個激活,因此,數(shù)據(jù)會變得稀疏。

one-hot編碼帶來的另一個問題是特征空間變大。同樣以上面淘寶上的item為例,將item進(jìn)行one-hot編碼以后,樣本空間有一個categorical變?yōu)榱税偃f維的數(shù)值特征,特征空間一下子暴增一百萬。所以大廠動不動上億維度,就是這么來的。

在工業(yè)界,很少直接將連續(xù)值(eg.年齡特征)作為邏輯回歸模型的特征輸入,而是將連續(xù)特征離散化為一系列0、1特征交給LR。

LR為什么要對連續(xù)數(shù)值特征進(jìn)行離散化?

離散特征的增加和減少都很容易,易于模型的快速迭代;

稀疏向量內(nèi)積乘法運算速度快,計算結(jié)果方便存儲,容易擴展;

離散化后的特征對異常數(shù)據(jù)有很強的魯棒性:比如一個特征是年齡>30是1,否則0。如果特征沒有離散化,一個異常數(shù)據(jù)“年齡300歲”會給模型造成很大的干擾;

邏輯回歸屬于廣義線性模型,表達(dá)能力受限;單變量離散化為N個后,每個變量有單獨的權(quán)重,相當(dāng)于為模型引入了非線性,能夠提升模型表達(dá)能力,加大擬合;

離散化后可以進(jìn)行特征交叉,由M+N個變量變?yōu)镸*N個變量,進(jìn)一步引入非線性,提升表達(dá)能力;

特征離散化后,模型會更穩(wěn)定,比如如果對用戶年齡離散化,20-30作為一個區(qū)間,不會因為一個用戶年齡長了一歲就變成一個完全不同的人。當(dāng)然處于區(qū)間相鄰處的樣本會剛好相反,所以怎么劃分區(qū)間是門學(xué)問;

特征離散化以后,起到了簡化了邏輯回歸模型的作用,降低了模型過擬合的風(fēng)險。

李沐曾經(jīng)說過:模型是使用離散特征還是連續(xù)特征,其實是一個“海量離散特征+簡單模型” 同 “少量連續(xù)特征+復(fù)雜模型”的權(quán)衡。既可以離散化用線性模型,也可以用連續(xù)特征加深度學(xué)習(xí)。就看是喜歡折騰特征還是折騰模型了。通常來說,前者容易,而且可以n個人一起并行做,有成功經(jīng)驗;后者目前看很贊,能走多遠(yuǎn)還須拭目以待。

使用FM模型

另一種方法是對LR進(jìn)行擴展,因子分解機(Factorization Machine,F(xiàn)M)是對LR算法的擴展。FM模型是一種基于矩陣分解的機器學(xué)習(xí)模型,對于稀疏數(shù)據(jù)具有很好的學(xué)習(xí)能力;

對于因子分解機FM來說,最大的特點是對于稀疏的數(shù)據(jù)具有很好的學(xué)習(xí)能力。

FM解決了LR泛化能力弱的問題,其目標(biāo)函數(shù)如下所示:

上面兩張精簡的PPT來自于新浪微博AI-Lab的張俊林老師的技術(shù)分享。

后續(xù)有時間繼續(xù)從FM-->FFM開始寫

5.面試常問題:

針對學(xué)生黨的福利時刻,自己記錄的幾個有關(guān)LR的面試題:

LR與SVM的聯(lián)系與區(qū)別:

聯(lián)系:

1、LR和SVM都可以處理分類問題,且一般都用于處理線性二分類問題(在改進(jìn)的情況下可以處理多分類問題)

2、兩個方法都可以增加不同的正則化項,如l1、l2等等。所以在很多實驗中,兩種算法的結(jié)果是很接近的。

區(qū)別:

1、LR是參數(shù)模型[邏輯回歸是假設(shè)y服從Bernoulli分布],SVM是非參數(shù)模型,LR對異常值更敏感。

2、從目標(biāo)函數(shù)來看,區(qū)別在于邏輯回歸采用的是logistical loss,SVM采用的是hinge loss,這兩個損失函數(shù)的目的都是增加對分類影響較大的數(shù)據(jù)點的權(quán)重,減少與分類關(guān)系較小的數(shù)據(jù)點的權(quán)重。

3、SVM的處理方法是只考慮support vectors,也就是和分類最相關(guān)的少數(shù)點,去學(xué)習(xí)分類器。而邏輯回歸通過非線性映射,大大減小了離分類平面較遠(yuǎn)的點的權(quán)重,相對提升了與分類最相關(guān)的數(shù)據(jù)點的權(quán)重。

4、邏輯回歸相對來說模型更簡單,好理解,特別是大規(guī)模線性分類時比較方便。而SVM的理解和優(yōu)化相對來說復(fù)雜一些,SVM轉(zhuǎn)化為對偶問題后,分類只需要計算與少數(shù)幾個支持向量的距離,這個在進(jìn)行復(fù)雜核函數(shù)計算時優(yōu)勢很明顯,能夠大大簡化模型和計算。

5、logic 能做的 svm能做,但可能在準(zhǔn)確率上有問題,svm能做的logic有的做不了。

如何選擇LR與SVM?

非線性分類器,低維空間可能很多特征都跑到一起了,導(dǎo)致線性不可分。

如果Feature的數(shù)量很大,跟樣本數(shù)量差不多,這時候選用LR或者是Linear Kernel的SVM

如果Feature的數(shù)量比較小,樣本數(shù)量一般,不算大也不算小,選用SVM+Gaussian Kernel

如果Feature的數(shù)量比較小,而樣本數(shù)量很多,需要手工添加一些feature變成第一種情況。

模型復(fù)雜度:SVM支持核函數(shù),可處理線性非線性問題;LR模型簡單,訓(xùn)練速度快,適合處理線性問題;決策樹容易過擬合,需要進(jìn)行剪枝

損失函數(shù):SVM hinge loss; LR L2正則化; adaboost 指數(shù)損失

數(shù)據(jù)敏感度:SVM添加容忍度對outlier不敏感,只關(guān)心支持向量,且需要先做歸一化; LR對遠(yuǎn)點敏感

數(shù)據(jù)量:數(shù)據(jù)量大就用LR,數(shù)據(jù)量小且特征少就用SVM非線性核

什么是參數(shù)模型(LR)與非參數(shù)模型(SVM)?

在統(tǒng)計學(xué)中,參數(shù)模型通常假設(shè)總體(隨機變量)服從某一個分布,該分布由一些參數(shù)確定(比如正太分布由均值和方差確定),在此基礎(chǔ)上構(gòu)建的模型稱為參數(shù)模型;非參數(shù)模型對于總體的分布不做任何假設(shè),只是知道總體是一個隨機變量,其分布是存在的(分布中也可能存在參數(shù)),但是無法知道其分布的形式,更不知道分布的相關(guān)參數(shù),只有在給定一些樣本的條件下,能夠依據(jù)非參數(shù)統(tǒng)計的方法進(jìn)行推斷。

作者:流川楓AI

鏈接:http://www.itdecent.cn/p/dce9f1af7bc9

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寫作計劃: 線性模型LR(沒有考慮特征間的關(guān)聯(lián))——>LR +多項式模型(特征組合,不適用于特征稀疏場景,泛化能力...
    流川楓AI閱讀 20,736評論 8 44
  • 邏輯回歸LR - fionacai - 博客園 http://www.cnblogs.com/fionacai/...
    葡萄喃喃囈語閱讀 2,400評論 0 16
  • LR和SVM的區(qū)別 相同點:1、都是監(jiān)督、分類算法,且一般處理二分類問題2、兩個方法都可以增加不同的正則化項,如l...
    賬號已刪除閱讀 2,872評論 1 8
  • 今天我要介紹一個玩具小盤子。他是綠色的的,上面有一個粘貼,上面有一圈是粉色的,有一圈兒是小花和水果,中間是小兔。他...
    翟澤源閱讀 651評論 0 0
  • 一片荷花心向陽 紅黃紫白紛吉祥 千姿百態(tài)醉池塘 靜嫻綻放沐佛光
    左繼強a閱讀 235評論 4 3

友情鏈接更多精彩內(nèi)容