邏輯回歸(LogisticRegression)_第1頁(yè)
邏輯回歸(LogisticRegression)_第2頁(yè)
邏輯回歸(LogisticRegression)_第3頁(yè)
邏輯回歸(LogisticRegression)_第4頁(yè)
邏輯回歸(LogisticRegression)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、邏輯回歸(LogisticRegressiOn邏輯回歸在前面講述的回歸模型中,處理的因變量都是數(shù)值型區(qū)間變量,建立的模型描述是因變量的期望與自變量之間的線性關(guān)系。比如常見(jiàn)的線性回歸模型:而在采用回歸模型分析實(shí)際問(wèn)題中,所研究的變量往往不全是區(qū)間變量而是順序變量或?qū)傩宰兞?,比如二?xiàng)分布問(wèn)題。通過(guò)分析年齡、性別、體質(zhì)指數(shù)、平均血壓、疾病指數(shù)等指標(biāo),判斷一個(gè)人是否換糖尿病,丫=0表示未患病,丫=1表示患病,這里的響應(yīng)變量是一個(gè)兩點(diǎn)(0-1)分布變量,它就不能用h函數(shù)連續(xù)的值來(lái)預(yù)測(cè)因變量丫(只能取0或1)。總之,線性回歸模型通常是處理因變量是連續(xù)變量的問(wèn)題,如果因變量是定性變量,線性回歸模型就不再適用

2、了,需采用邏輯回歸模型解決。邏輯回歸(LogisticRegression)是用于處理因變量為分類(lèi)變量的回歸問(wèn)題,常見(jiàn)的是二分類(lèi)或二項(xiàng)分布問(wèn)題,也可以處理多分類(lèi)問(wèn)題,它實(shí)際上是屬于一種分類(lèi)方法。二分類(lèi)問(wèn)題的概率與自變量之間的關(guān)系圖形往往是一個(gè)S型曲線,如圖所示,采用的Sigmoid函數(shù)實(shí)現(xiàn)。教程不僅通俗易懂,0.0迂章看起來(lái)稍微還有些吃力,或而且很風(fēng)趣幽默。點(diǎn)擊可以查者想要系統(tǒng)地學(xué)習(xí)人工智能,那么推薦你去看床長(zhǎng)人工智能教程。非常棒的大神之作。f教程。對(duì)應(yīng)的結(jié)果為0.5。當(dāng)x取值足夠大的時(shí)候,可以看成0或1兩類(lèi)問(wèn)題,大于0.5可以劃分至0類(lèi)或1類(lèi)。對(duì)于0-1型變量,y=1的概率分布公式定義如下:

3、y=0的概率分布公式定義如下:其離散型隨機(jī)變量期望值公式如下:采用線性模型進(jìn)行分析,其公式變換如下:而實(shí)際應(yīng)用中,概率p與因變量往往是非線性的,為了解決該類(lèi)問(wèn)題,我們引入了logit變換,使得logit(p)與自變量之間存在線性相關(guān)的關(guān)系,邏輯回歸模型定義如下:通過(guò)推導(dǎo),概率p變換如下,這與Sigmoid函數(shù)相符,也體現(xiàn)了概率p與因變量之間的非線性關(guān)系。以0.5為界限,預(yù)測(cè)p大于0.5時(shí),我們判斷此時(shí)y更可能為1,否則y為0。得到所需的Sigmoid函數(shù)后,接下來(lái)只需要和前面的線性回歸一樣,擬合出該式中n個(gè)參數(shù)8即可test17_05.py為繪制Sigmoid曲線,輸出上圖所示。aspitas

4、pit2.importnumpyasnp3.4.defSigmoid(x):5.return1.0/(1.0+np.exp(-x).1.0+np.exp(-x)x=np.arange(-10,10,0.1)h=Sigmoid(x)#Sigmoidplt.plot(x,h)2.plt.plot(x,h)plt.axvline(0.0,color=k)#坐標(biāo)軸上加一條豎直的線(0位置)plt.axhspan(0.0,1.0,facecolor=1.0,alpha=1.0,ls=dotted)plt.axhline(y=0.5,ls=dotted,color=k)H

5、-LogisticRegressicHs瓣濟(jì)LogisticRegression回LnBmsk-earn.-inearJnode-Fiask-earn回LnwN+煒氏劃畫(huà)i號(hào)導(dǎo)入模型。調(diào)用邏輯回歸LogisticRegression()函數(shù)。fit()訓(xùn)練。調(diào)用fit(x,y)的方法來(lái)訓(xùn)練模型,其中x為數(shù)據(jù)的屬性,y為所屬類(lèi)型。predict()預(yù)測(cè)。利用訓(xùn)練得到的模型對(duì)數(shù)據(jù)集進(jìn)行預(yù)測(cè),返回預(yù)測(cè)結(jié)果。代碼如下:1.clf.fit(train_feature,label)predictlabel=clf.predict(predict_feature)LogisticRegre

6、ssion(C=1.0,class_weight=None,dual=False,fit_intercept=True,223.4.intercept_scaling=1,max_iter=100,multi_class=ovr,nobs=1,penalty=12,random_state=None,solver=liblinear,tol=0.0001,verbose=0,warm_start=False)penaltyL1L2L1都是0,常用于特征選擇;L2向量中各個(gè)元素平方之和再開(kāi)根號(hào),作用是選擇較多的特征,使他們都趨近于0。);C值的目標(biāo)函數(shù)約束條件:s.t.|w|1C,默認(rèn)值是0,C

7、值越小,則正則化強(qiáng)度越大。正則化選擇參數(shù):penaltyLogisticRegression和LogisticRegressionCV默認(rèn)就帶了正則化項(xiàng)penalty參數(shù)可選擇的值為11和12.分別對(duì)應(yīng)L1的正則化和L2的正則化,默認(rèn)是L2的正則化。在調(diào)參時(shí)如果我們主要的目的只是為了解決過(guò)擬合,一般penalty選擇L2正則化就夠了。但是如果選擇L2正則化發(fā)現(xiàn)還是過(guò)擬合,即預(yù)測(cè)效果差的時(shí)候,就可以考慮L1正則化。另外,如果模型的特征非常多,我們希望一些不重要的特征系數(shù)歸零,從而讓模型系數(shù)稀疏化的話,也可以使用L1正則化。penalty參數(shù)的選擇會(huì)影響我們損失函數(shù)優(yōu)化算法的選擇。即參數(shù)solve

8、啲選擇,如果是L2正則化,那么4種可選的算法newton-cg,lbfgs,liblinear,sag都可以選擇。但是如果penalty是L1正則化的話,就只能選擇liblinear了。這是因?yàn)長(zhǎng)1正則化的損失函數(shù)不是連續(xù)可導(dǎo)的,而newton-cg,lbfgs,sag這三種優(yōu)化算法時(shí)都需要損失函數(shù)的一階或者二階連續(xù)導(dǎo)數(shù)。而liblinear并沒(méi)有這個(gè)依賴(lài)。優(yōu)化算法選擇參數(shù):solversolver參數(shù)決定了我們對(duì)邏輯回歸損失函數(shù)的優(yōu)化方法,有4種算法可以選擇,分別是:liblinear:使用了開(kāi)源的liblinear庫(kù)實(shí)現(xiàn),內(nèi)部使用了坐標(biāo)軸下降法來(lái)迭代優(yōu)化損失函數(shù)。lbfgs:擬牛頓法的一種

9、,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來(lái)迭代優(yōu)化損失函數(shù)。newton-cg:也是牛頓法家族的一種,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來(lái)迭代優(yōu)化損失函數(shù)。sag:即隨機(jī)平均梯度下降,是梯度下降法的變種,和普通梯度下降法的區(qū)別是每次迭代僅僅用一部分的樣本來(lái)計(jì)算梯度,適合于樣本數(shù)據(jù)多的時(shí)候,SAG是一種線性收斂算法,這個(gè)速度遠(yuǎn)比SGD快。關(guān)于SAG的理解,參考博文從上面的描述可以看出,newton-cg,lbfgs和sag這三種優(yōu)化算法時(shí)都需要損失函數(shù)的一階或者二階連續(xù)導(dǎo)數(shù),因此不能用于沒(méi)有連續(xù)導(dǎo)數(shù)的L1正則化,只能用于L2正則化。而liblinear通吃L1正則化和L2正則化。同時(shí),sag每次僅僅

10、使用了部分樣本進(jìn)行梯度迭代,所以當(dāng)樣本量少的時(shí)候不要選擇它,而如果樣本量非常大,比如大于10萬(wàn),sag是第一選擇。但是sag不能用于L1正則化,所以當(dāng)你有大量的樣本,又需要L1正則化的話就要自己做取舍了。要么通過(guò)對(duì)樣本采樣來(lái)降低樣本量,要么回到L2正則化。在sklearn的官方文檔中,對(duì)于solve啲使用說(shuō)明如下:Inanutshell,onemaychoosethesolverwiththefollowingrules:CaseSolverliblinearSmalldatasetorL1penaltyMultinomiallossorlargedatasetlbfgs,sagornewto

11、n-cg“15sagVeryLargedataset從上面的描述,大家可能覺(jué)得,既然newton-cg,lbfgs和sag這么多限制,如果不是大樣本,我們選擇liblinear不就行了嘛!錯(cuò),因?yàn)閘iblinear也有自己的弱點(diǎn)!我們知道,邏輯回歸有二元邏輯回歸和多元邏輯回歸。對(duì)于多元邏輯回歸常見(jiàn)的有one-vs-rest(OvR)和many-vs-many(MvM)兩種。而MvM般比OvR分類(lèi)相對(duì)準(zhǔn)確一些。郁悶的是liblinear只支持OvR,不支持MvM,這樣如果我們需要相對(duì)精確的多元邏輯回歸時(shí),就不能選擇liblinear了。也意味著如果我們需要相對(duì)精確的多元邏輯回歸不能使用L1正則化

12、了??偨Y(jié)而言,liblinear支持L1和L2,只支持OvR做多分類(lèi),lbfgs,sag“newton-cg只支持L2,支持OvR和MvM做多分類(lèi)。具體OvR和MvM有什么不同我們下一節(jié)講。分類(lèi)方式選擇參數(shù):multi_classmulti_class參數(shù)決定了我們分類(lèi)方式的選擇,有ovr和multinomial兩個(gè)值可以選擇,默認(rèn)是ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元邏輯回歸,ovr和multinomial并沒(méi)有任何區(qū)別,區(qū)別主要在多元邏輯回歸上。OvR的思想很簡(jiǎn)單,無(wú)論你是多少元邏輯回

13、歸,我們都可以看做二元邏輯回歸。具體做法是,對(duì)于第K類(lèi)的分類(lèi)決策,我們把所有第K類(lèi)的樣本作為正例,除了第K類(lèi)樣本以外的所有樣本都作為負(fù)例,然后在上面做二元邏輯回歸,得到第K類(lèi)的分類(lèi)模型。其他類(lèi)的分類(lèi)模型獲得以此類(lèi)推。而MvM則相對(duì)復(fù)雜,這里舉MvM的特例one-vs-one(OvO)作講解。如果模型有T類(lèi),我們每次在所有的T類(lèi)樣本里面選擇兩類(lèi)樣本出來(lái),不妨記為T(mén)1類(lèi)和T2類(lèi),把所有的輸出為T(mén)1和T2的樣本放在一起,把T1作為正例,T2作為負(fù)例,進(jìn)行二元邏輯回歸,得到模型參數(shù)。我們一共需要T(T-1)/2次分類(lèi)。從上面的描述可以看出OvR相對(duì)簡(jiǎn)單,但分類(lèi)效果相對(duì)略差(這里指大多數(shù)樣本分布情況,某

14、些樣本分布下OvR可能更好)。而MvM分類(lèi)相對(duì)精確,但是分類(lèi)速度沒(méi)有OvR快。如果選擇了ovr,則4種損失函數(shù)的優(yōu)化方法liblinear,newton-cg,lbfgs和sag都可以選擇。但是如果選擇了multinomial,則只能選擇newton-cg,lbfgs和sag了。類(lèi)型權(quán)重參數(shù):class_weightclass_weight參數(shù)用于標(biāo)示分類(lèi)模型中各種類(lèi)型的權(quán)重,可以不輸入,即不考慮權(quán)重,或者說(shuō)所有類(lèi)型的權(quán)重一樣。如果選擇輸入的話,可以選擇balaneed讓類(lèi)庫(kù)自己計(jì)算類(lèi)型權(quán)重,或者我們自己輸入各個(gè)類(lèi)型的權(quán)重,比如對(duì)于0,1的二元模型,我們可以定義class_weight=0:0

15、.9,1:0.1,這樣類(lèi)型0的權(quán)重為90%,而類(lèi)型1的權(quán)重為10%。如果class_weight選擇balaneed,那么類(lèi)庫(kù)會(huì)根據(jù)訓(xùn)練樣本量來(lái)計(jì)算權(quán)重。某種類(lèi)型樣本量越多,則權(quán)重越低,樣本量越少,則權(quán)重越高。sklearn的官方文檔中,當(dāng)class_weight為balaneed時(shí),類(lèi)權(quán)重計(jì)算方法如下:n_samples/(n_classes*np.bincount(y),n_samples為樣本數(shù),n_classes為類(lèi)別數(shù)量,np.bincount(y)會(huì)輸出每個(gè)類(lèi)的樣本數(shù),例如y=1,0,0,1,1,則np.bincount(y)=2,3那么class_weight有什么作用呢?在分類(lèi)

16、模型中,我們經(jīng)常會(huì)遇到兩類(lèi)問(wèn)題:第一種是誤分類(lèi)的代價(jià)很高。比如對(duì)合法用戶(hù)和非法用戶(hù)進(jìn)行分類(lèi),將非法用戶(hù)分類(lèi)為合法用戶(hù)的代價(jià)很高,我們寧愿將合法用戶(hù)分類(lèi)為非法用戶(hù),這時(shí)可以人工再甄別,但是卻不愿將非法用戶(hù)分類(lèi)為合法用戶(hù)。這時(shí),我們可以適當(dāng)提高非法用戶(hù)的權(quán)重。第二種是樣本是高度失衡的,比如我們有合法用戶(hù)和非法用戶(hù)的二元樣本數(shù)據(jù)10000條,里面合法用戶(hù)有9995條,非法用戶(hù)只有5條,如果我們不考慮權(quán)重,則我們可以將所有的測(cè)試集都預(yù)測(cè)為合法用戶(hù),這樣預(yù)測(cè)準(zhǔn)確率理論上有99.95%,但是卻沒(méi)有任何意義。這時(shí),我們可以選擇balaneed,讓類(lèi)庫(kù)自動(dòng)提高非法用戶(hù)樣本的權(quán)重。提高了某種分類(lèi)的權(quán)重,相比不考慮權(quán)重,會(huì)有更多的樣本分類(lèi)劃分到高權(quán)重的類(lèi)別,從而可以解決上面兩類(lèi)問(wèn)題。當(dāng)然,對(duì)于第二種樣本失衡的情況,我們還可以考慮用下一節(jié)講到的樣本權(quán)重參數(shù):sample_weight,而不使用class_weight。sample_weight在下一節(jié)講。樣本權(quán)重參數(shù):sample_weight上一節(jié)我們提到了樣本不失衡的問(wèn)題,由于樣本不平衡,導(dǎo)致樣本不是總體樣本的無(wú)偏估計(jì),從而可能導(dǎo)致我們的模型預(yù)測(cè)能力下降。遇到這種情況,我們可以通

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論