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

寫作計(jì)劃:

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

0.前言

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

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

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

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

1.線性回歸模型(Linear Regression

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

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

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

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

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

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

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

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

2.邏輯回歸(LR)

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

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

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

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

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

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

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

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

解釋一下:

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

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

其中:

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

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

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

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

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

基本步驟如下:

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

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

第一部分:

第二部分:

第三部分:

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

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

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

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

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

# coding:utf-8'''

Created on Oct 27, 2010

Logistic Regression Working Module

@author: Peter

代碼來源:機(jī)器學(xué)習(xí)實(shí)戰(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)簽的真實(shí)值-預(yù)測(cè)值error = classLabels[randIndex] - h# 模型參數(shù)更新公式(與我們推導(dǎo)的形式一致)weights = weights + alpha * error * dataMatrix[randIndex]del(dataIndex[randIndex])returnweights

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

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

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

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

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

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

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

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

softmax函數(shù)為:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

為什么特征稀疏?

one-hote編碼帶來的問題

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

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

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

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

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

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

稀疏向量?jī)?nèi)積乘法運(yùn)算速度快,計(jì)算結(jié)果方便存儲(chǔ),容易擴(kuò)展;

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

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

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

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

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

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

使用FM模型

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

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

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

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

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

5.面試常問題:

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

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

聯(lián)系:

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

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

區(qū)別:

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

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

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

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

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

如何選擇LR與SVM?

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

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

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

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

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

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

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

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

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

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

作者:流川楓AI

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

來源:簡(jiǎn)書

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

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

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

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

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