機(jī)器學(xué)習(xí)中的調(diào)參

一鬼癣、邏輯回歸

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

1.1 概述

在scikit-learn中,與邏輯回歸有關(guān)的主要是這3個(gè)類。

  • logisticRegression
  • LogisticRegressionCV
  • logistic_regression_path

其中LogisticRegression和LogisticRegressionCV的主要區(qū)別是LogisticRegressionCV使用了交叉驗(yàn)證來(lái)選擇正則化系數(shù)C耙蔑。而LogisticRegression需要自己每次指定一個(gè)正則化系數(shù)闭翩。除了交叉驗(yàn)證臀栈,以及選擇正則化系數(shù)C以外同廉, LogisticRegression和LogisticRegressionCV的使用方法基本相同埋心。
logistic_regression_path類則比較特殊指郁,它擬合數(shù)據(jù)后,不能直接來(lái)做預(yù)測(cè)拷呆,只能為擬合數(shù)據(jù)選擇合適邏輯回歸的系數(shù)和正則化系數(shù)闲坎。主要是用在模型選擇的時(shí)候。一般情況用不到這個(gè)類茬斧,所以后面不再講述logistic_regression_path類腰懂。
此外,scikit-learn里面有個(gè)容易讓人誤解的類RandomizedLogisticRegression,雖然名字里有邏輯回歸的詞项秉,但是主要是用L1正則化的邏輯回歸來(lái)做特征選擇的绣溜,屬于維度規(guī)約的算法類,不屬于我們常說(shuō)的分類算法的范疇娄蔼。
后面的講解主要圍繞LogisticRegression和LogisticRegressionCV中的重要參數(shù)的選擇來(lái)來(lái)展開(kāi)怖喻,這些參數(shù)的意義在這兩個(gè)類中都是一樣的。

1.2 正則化選擇參數(shù):penalty

penalty參數(shù)可選擇的值為"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ù)solver的選擇氢惋,如果是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è)依賴。

1.3 優(yōu)化算法選擇參數(shù):solver

  • a) liblinear:使用了開(kāi)源的liblinear庫(kù)實(shí)現(xiàn)陷猫,內(nèi)部使用了坐標(biāo)軸下降法來(lái)迭代優(yōu)化損失函數(shù)秫舌。
  • b) lbfgs:擬牛頓法的一種的妖,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來(lái)迭代優(yōu)化損失函數(shù)。
  • c) newton-cg:也是牛頓法家族的一種足陨,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來(lái)迭代優(yōu)化損失函數(shù)嫂粟。
  • d) sag:即隨機(jī)平均梯度下降,適合于樣本數(shù)據(jù)多的時(shí)候墨缘,比如大于10萬(wàn)星虹。SAG是一種線性收斂算法,這個(gè)速度遠(yuǎn)比SGD快镊讼。

在sklearn的官方文檔中宽涌,對(duì)于solver的使用說(shuō)明如下:

In a nutshell, one may choose the solver with the following rules:


  • Small dataset or L1 penalty:“l(fā)iblinear”

  • Multinomial loss or large dataset:“l(fā)bfgs”, “sag” or “newton-cg”

  • Very Large dataset:“sag”


從上面的描述,大家可能覺(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分類相對(duì)準(zhǔn)確一些罕偎。郁悶的是liblinear只支持OvR很澄,不支持MvM,這樣如果我們需要相對(duì)精確的多元邏輯回歸時(shí)颜及,就不能選擇liblinear了甩苛。也意味著如果我們需要相對(duì)精確的多元邏輯回歸不能使用L1正則化了。

總結(jié)而言俏站,liblinear支持L1和L2讯蒲,只支持OvR做多分類,“l(fā)bfgs”, “sag” “newton-cg”只支持L2肄扎,支持OvR和MvM做多分類墨林。

1.4 分類方式選擇參數(shù):multi_class

multi_class參數(shù)決定了我們分類方式的選擇,有 ovr和multinomial兩個(gè)值可以選擇犯祠,默認(rèn)是 ovr旭等。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)衡载。

OvR的思想很簡(jiǎn)單搔耕,無(wú)論你是多少元邏輯回歸,我們都可以看做二元邏輯回歸痰娱。具體做法是弃榨,對(duì)于第K類的分類決策菩收,我們把所有第K類的樣本作為正例,除了第K類樣本以外的所有樣本都作為負(fù)例鲸睛,然后在上面做二元邏輯回歸娜饵,得到第K類的分類模型。其他類的分類模型獲得以此類推官辈。
而MvM則相對(duì)復(fù)雜箱舞,這里舉MvM的特例one-vs-one(OvO)作講解。如果模型有T類钧萍,我們每次在所有的T類樣本里面選擇兩類樣本出來(lái)褐缠,不妨記為T(mén)1類和T2類,把所有的輸出為T(mén)1和T2的樣本放在一起风瘦,把T1作為正例队魏,T2作為負(fù)例,進(jìn)行二元邏輯回歸万搔,得到模型參數(shù)胡桨。我們一共需要T(T-1)/2次分類。
從上面的描述可以看出OvR相對(duì)簡(jiǎn)單瞬雹,但分類效果相對(duì)略差(這里指大多數(shù)樣本分布情況昧谊,某些樣本分布下OvR可能更好)。而MvM分類相對(duì)精確酗捌,但是分類速度沒(méi)有OvR快呢诬。

1.5 類型權(quán)重參數(shù): class_weight

class_weight參數(shù)用于標(biāo)示分類模型中各種類型的權(quán)重,可以不輸入胖缤,即不考慮權(quán)重尚镰,或者說(shuō)所有類型的權(quán)重一樣。如果選擇輸入的話哪廓,可以選擇balanced讓類庫(kù)自己計(jì)算類型權(quán)重狗唉,或者我們自己輸入各個(gè)類型的權(quán)重,比如對(duì)于0,1的二元模型涡真,我們可以定義class_weight={0:0.9, 1:0.1}分俯,這樣類型0的權(quán)重為90%,而類型1的權(quán)重為10%哆料。
如果class_weight選擇balanced缸剪,那么類庫(kù)會(huì)根據(jù)訓(xùn)練樣本量來(lái)計(jì)算權(quán)重。某種類型樣本量越多东亦,則權(quán)重越低杏节,樣本量越少,則權(quán)重越高。
sklearn的官方文檔中拢锹,當(dāng)class_weight為balanced時(shí),類權(quán)重計(jì)算方法如下:
n_samples / (n_classes * np.bincount(y))萄喳,n_samples為樣本數(shù)卒稳,n_classes為類別數(shù)量,np.bincount(y)會(huì)輸出每個(gè)類的樣本數(shù)他巨,例如y=[1,0,0,1,1],則np.bincount(y)=[2,3]

那么class_weight有什么作用呢充坑?在分類模型中,我們經(jīng)常會(huì)遇到兩類問(wèn)題:

第一種是誤分類的代價(jià)很高染突。比如對(duì)合法用戶和非法用戶進(jìn)行分類捻爷,將非法用戶分類為合法用戶的代價(jià)很高,我們寧愿將合法用戶分類為非法用戶份企,這時(shí)可以人工再甄別也榄,但是卻不愿將非法用戶分類為合法用戶。這時(shí)司志,我們可以適當(dāng)提高非法用戶的權(quán)重甜紫。

第二種是樣本是高度失衡的,比如我們有合法用戶和非法用戶的二元樣本數(shù)據(jù)10000條骂远,里面合法用戶有9995條囚霸,非法用戶只有5條,如果我們不考慮權(quán)重激才,則我們可以將所有的測(cè)試集都預(yù)測(cè)為合法用戶拓型,這樣預(yù)測(cè)準(zhǔn)確率理論上有99.95%,但是卻沒(méi)有任何意義瘸恼。這時(shí)劣挫,我們可以選擇balanced,讓類庫(kù)自動(dòng)提高非法用戶樣本的權(quán)重钞脂。
提高了某種分類的權(quán)重揣云,相比不考慮權(quán)重,會(huì)有更多的樣本分類劃分到高權(quán)重的類別冰啃,從而可以解決上面兩類問(wèn)題邓夕。
當(dāng)然,對(duì)于第二種樣本失衡的情況阎毅,我們還可以考慮用下一節(jié)講到的樣本權(quán)重參數(shù): sample_weight焚刚,而不使用class_weight。sample_weight在下一節(jié)講扇调。

1.6 樣本權(quán)重參數(shù): sample_weight

上一節(jié)我們提到了樣本不失衡的問(wèn)題矿咕,由于樣本不平衡,導(dǎo)致樣本不是總體樣本的無(wú)偏估計(jì),從而可能導(dǎo)致我們的模型預(yù)測(cè)能力下降碳柱。遇到這種情況捡絮,我們可以通過(guò)調(diào)節(jié)樣本權(quán)重來(lái)嘗試解決這個(gè)問(wèn)題。調(diào)節(jié)樣本權(quán)重的方法有兩種莲镣,第一種是在class_weight使用balanced福稳。第二種是在調(diào)用fit函數(shù)時(shí),通過(guò)sample_weight來(lái)自己調(diào)節(jié)每個(gè)樣本權(quán)重瑞侮。

在scikit-learn做邏輯回歸時(shí)的圆,如果上面兩種方法都用到了,那么樣本的真正權(quán)重是class_weight*sample_weight.

以上就是scikit-learn中邏輯回歸類庫(kù)調(diào)參的一個(gè)小結(jié)半火,還有些參數(shù)比如正則化參數(shù)C(交叉驗(yàn)證就是 Cs)越妈,迭代次數(shù)max_iter等,由于和其它的算法類庫(kù)并沒(méi)有特別不同钮糖,這里不多累述了梅掠。

二、隨機(jī)森林

1.每棵樹(shù)的最大深度

默認(rèn)采取最大深度藐鹤,這樣可以使得每棵樹(shù)的偏差最小瓤檐。但是這樣的時(shí)間和空間開(kāi)銷都很大,如果樣本集很大娱节,可以參考特征個(gè)數(shù)來(lái)設(shè)定

2.樹(shù)的顆數(shù)

樹(shù)的顆數(shù)反應(yīng)了模型的方差挠蛉,顆數(shù)越多,模型的泛化性能越好肄满。默認(rèn)會(huì)根據(jù)誤分率趨于穩(wěn)定來(lái)終止

3.最大特征數(shù)

如果一共有M個(gè)特征谴古,則最大特征默認(rèn)選取m=sqrt(M)個(gè),也可以用log2M個(gè)稠歉。對(duì)于100個(gè)特征掰担,100顆樹(shù)之后,一個(gè)特征一次都沒(méi)被選用的概率低于1%

這里考察的是樹(shù)與樹(shù)之間的相關(guān)性怒炸,最大特征數(shù)越小带饱,相關(guān)性越小,但同時(shí)每棵樹(shù)的錯(cuò)誤率會(huì)越大阅羹。上述過(guò)程是綜合考量的結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末勺疼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捏鱼,更是在濱河造成了極大的恐慌执庐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件导梆,死亡現(xiàn)場(chǎng)離奇詭異轨淌,居然都是意外死亡迂烁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)递鹉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盟步,“玉大人,你說(shuō)我怎么就攤上這事躏结≈沸荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵窜觉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我北专,道長(zhǎng)禀挫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任拓颓,我火速辦了婚禮语婴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驶睦。我一直安慰自己砰左,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布场航。 她就那樣靜靜地躺著缠导,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溉痢。 梳的紋絲不亂的頭發(fā)上僻造,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音孩饼,去河邊找鬼髓削。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镀娶,可吹牛的內(nèi)容都是我干的立膛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼梯码,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宝泵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起忍些,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲁猩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后罢坝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體廓握,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搅窿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隙券。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片男应。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖娱仔,靈堂內(nèi)的尸體忽然破棺而出沐飘,到底是詐尸還是另有隱情,我是刑警寧澤牲迫,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布耐朴,位于F島的核電站,受9級(jí)特大地震影響盹憎,放射性物質(zhì)發(fā)生泄漏筛峭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一陪每、第九天 我趴在偏房一處隱蔽的房頂上張望影晓。 院中可真熱鬧,春花似錦檩禾、人聲如沸挂签。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)饵婆。三九已至,卻和暖如春戏售,著一層夾襖步出監(jiān)牢的瞬間啦辐,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工蜈项, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芹关,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓紧卒,卻偏偏與公主長(zhǎng)得像侥衬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跑芳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容