2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

LogisticRegression

 wenasunny 2019-04-29
  https://blog.csdn.net/jark_/article/details/78342644

LogisticRegression,一共有14個(gè)參數(shù):
邏輯回歸參數(shù)詳細(xì)說明

參數(shù)說明如下:

  • penalty:懲罰項(xiàng),str類型,可選參數(shù)為l1和l2,默認(rèn)為l2。用于指定懲罰項(xiàng)中使用的規(guī)范。newton-cg、sag和lbfgs求解算法只支持L2規(guī)范。L1G規(guī)范假設(shè)的是模型的參數(shù)滿足拉普拉斯分布,L2假設(shè)的模型參數(shù)滿足高斯分布,所謂的范式就是加上對(duì)參數(shù)的約束,使得模型更不會(huì)過擬合(overfit),但是如果要說是不是加了約束就會(huì)好,這個(gè)沒有人能回答,只能說,加約束的情況下,理論上應(yīng)該可以獲得泛化能力更強(qiáng)的結(jié)果。

  • dual:對(duì)偶或原始方法,bool類型,默認(rèn)為False。對(duì)偶方法只用在求解線性多核(liblinear)的L2懲罰項(xiàng)上。當(dāng)樣本數(shù)量>樣本特征的時(shí)候,dual通常設(shè)置為False。

  • tol:停止求解的標(biāo)準(zhǔn),float類型,默認(rèn)為1e-4。就是求解到多少的時(shí)候,停止,認(rèn)為已經(jīng)求出最優(yōu)解。

  • c:正則化系數(shù)λ的倒數(shù),float類型,默認(rèn)為1.0。必須是正浮點(diǎn)型數(shù)。像SVM一樣,越小的數(shù)值表示越強(qiáng)的正則化。

  • fit_intercept:是否存在截距或偏差,bool類型,默認(rèn)為True。

  • intercept_scaling:僅在正則化項(xiàng)為”liblinear”,且fit_intercept設(shè)置為True時(shí)有用。float類型,默認(rèn)為1。

  • class_weight:用于標(biāo)示分類模型中各種類型的權(quán)重,可以是一個(gè)字典或者’balanced’字符串,默認(rèn)為不輸入,也就是不考慮權(quán)重,即為None。如果選擇輸入的話,可以選擇balanced讓類庫自己計(jì)算類型權(quán)重,或者自己輸入各個(gè)類型的權(quán)重。舉個(gè)例子,比如對(duì)于0,1的二元模型,我們可以定義class_weight={0:0.9,1:0.1},這樣類型0的權(quán)重為90%,而類型1的權(quán)重為10%。如果class_weight選擇balanced,那么類庫會(huì)根據(jù)訓(xùn)練樣本量來計(jì)算權(quán)重。某種類型樣本量越多,則權(quán)重越低,樣本量越少,則權(quán)重越高。當(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]。

    • 在分類模型中,我們經(jīng)常會(huì)遇到兩類問題:

    • 第一種是誤分類的代價(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%,但是卻沒有任何意義。這時(shí),我們可以選擇balanced,讓類庫自動(dòng)提高非法用戶樣本的權(quán)重。提高了某種分類的權(quán)重,相比不考慮權(quán)重,會(huì)有更多的樣本分類劃分到高權(quán)重的類別,從而可以解決上面兩類問題。

    • 那么class_weight有什么作用呢?

  • random_state:隨機(jī)數(shù)種子,int類型,可選參數(shù),默認(rèn)為無,僅在正則化優(yōu)化算法為sag,liblinear時(shí)有用。

  • solver:優(yōu)化算法選擇參數(shù),只有五個(gè)可選參數(shù),即newton-cg,lbfgs,liblinear,sag,saga。默認(rèn)為liblinear。solver參數(shù)決定了我們對(duì)邏輯回歸損失函數(shù)的優(yōu)化方法,有四種算法可以選擇,分別是:

    • liblinear適用于小數(shù)據(jù)集,而sag和saga適用于大數(shù)據(jù)集因?yàn)樗俣雀臁?/p>

    • 對(duì)于多分類問題,只有newton-cg,sag,saga和lbfgs能夠處理多項(xiàng)損失,而liblinear受限于一對(duì)剩余(OvR)。啥意思,就是用liblinear的時(shí)候,如果是多分類問題,得先把一種類別作為一個(gè)類別,剩余的所有類別作為另外一個(gè)類別。一次類推,遍歷所有類別,進(jìn)行分類。

    • newton-cg,sag和lbfgs這三種優(yōu)化算法時(shí)都需要損失函數(shù)的一階或者二階連續(xù)導(dǎo)數(shù),因此不能用于沒有連續(xù)導(dǎo)數(shù)的L1正則化,只能用于L2正則化。而liblinear和saga通吃L1正則化和L2正則化。

    • 同時(shí),sag每次僅僅使用了部分樣本進(jìn)行梯度迭代,所以當(dāng)樣本量少的時(shí)候不要選擇它,而如果樣本量非常大,比如大于10萬,sag是第一選擇。但是sag不能用于L1正則化,所以當(dāng)你有大量的樣本,又需要L1正則化的話就要自己做取舍了。要么通過對(duì)樣本采樣來降低樣本量,要么回到L2正則化。

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

    • liblinear:使用了開源的liblinear庫實(shí)現(xiàn),內(nèi)部使用了坐標(biāo)軸下降法來迭代優(yōu)化損失函數(shù)。

    • lbfgs:擬牛頓法的一種,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來迭代優(yōu)化損失函數(shù)。

    • newton-cg:也是牛頓法家族的一種,利用損失函數(shù)二階導(dǎo)數(shù)矩陣即海森矩陣來迭代優(yōu)化損失函數(shù)。

    • sag:即隨機(jī)平均梯度下降,是梯度下降法的變種,和普通梯度下降法的區(qū)別是每次迭代僅僅用一部分的樣本來計(jì)算梯度,適合于樣本數(shù)據(jù)多的時(shí)候。

    • saga:線性收斂的隨機(jī)優(yōu)化算法的的變重。

    • 總結(jié)

  • max_iter:算法收斂最大迭代次數(shù),int類型,默認(rèn)為10。僅在正則化優(yōu)化算法為newton-cg, sag和lbfgs才有用,算法收斂的最大迭代次數(shù)。

  • multi_class:分類方式選擇參數(shù),str類型,可選參數(shù)為ovr和multinomial,默認(rèn)為ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元邏輯回歸,ovr和multinomial并沒有任何區(qū)別,區(qū)別主要在多元邏輯回歸上。

    • OvR的思想很簡(jiǎn)單,無論你是多少元邏輯回歸,我們都可以看做二元邏輯回歸。具體做法是,對(duì)于第K類的分類決策,我們把所有第K類的樣本作為正例,除了第K類樣本以外的所有樣本都作為負(fù)例,然后在上面做二元邏輯回歸,得到第K類的分類模型。其他類的分類模型獲得以此類推。

    • MvM則相對(duì)復(fù)雜,這里舉MvM的特例one-vs-one(OvO)作講解。如果模型有T類,我們每次在所有的T類樣本里面選擇兩類樣本出來,不妨記為T1類和T2類,把所有的輸出為T1和T2的樣本放在一起,把T1作為正例,T2作為負(fù)例,進(jìn)行二元邏輯回歸,得到模型參數(shù)。我們一共需要T(T-1)/2次分類。

    • 可以看出OvR相對(duì)簡(jiǎn)單,但分類效果相對(duì)略差(這里指大多數(shù)樣本分布情況,某些樣本分布下OvR可能更好)。而MvM分類相對(duì)精確,但是分類速度沒有OvR快。如果選擇了ovr,則4種損失函數(shù)的優(yōu)化方法liblinear,newton-cg,lbfgs和sag都可以選擇。但是如果選擇了multinomial,則只能選擇newton-cg, lbfgs和sag了。

    • OvR和MvM有什么不同*?*

  • verbose:日志冗長度,int類型。默認(rèn)為0。就是不輸出訓(xùn)練過程,1的時(shí)候偶爾輸出結(jié)果,大于1,對(duì)于每個(gè)子模型都輸出。

  • warm_start:熱啟動(dòng)參數(shù),bool類型。默認(rèn)為False。如果為True,則下一次訓(xùn)練是以追加樹的形式進(jìn)行(重新使用上一次的調(diào)用作為初始化)。

  • n_jobs:并行數(shù)。int類型,默認(rèn)為1。1的時(shí)候,用CPU的一個(gè)內(nèi)核運(yùn)行程序,2的時(shí)候,用CPU的2個(gè)內(nèi)核運(yùn)行程序。為-1的時(shí)候,用所有CPU的內(nèi)核運(yùn)行程序。

總結(jié):

  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,易于理解和實(shí)現(xiàn);計(jì)算代價(jià)不高,速度很快,存儲(chǔ)資源低。

  • 缺點(diǎn):容易欠擬合,分類精度可能不高。

  • 其他

    • Logistic回歸的目的是尋找一個(gè)非線性函數(shù)Sigmoid的最佳擬合參數(shù),求解過程可以由最優(yōu)化算法完成。

    • 改進(jìn)的一些最優(yōu)化算法,比如sag。它可以在新數(shù)據(jù)到來時(shí)就完成參數(shù)更新,而不需要重新讀取整個(gè)數(shù)據(jù)集來進(jìn)行批量處理。

    • 機(jī)器學(xué)習(xí)的一個(gè)重要問題就是如何處理缺失數(shù)據(jù)。這個(gè)問題沒有標(biāo)準(zhǔn)答案,取決于實(shí)際應(yīng)用中的需求?,F(xiàn)有一些解決方案,每種方案都各有優(yōu)缺點(diǎn)。

    • 我們需要根據(jù)數(shù)據(jù)的情況,這是Sklearn的參數(shù),以期達(dá)到更好的分類效果。

如有問題,請(qǐng)留言。如有錯(cuò)誤,還望指正,謝謝!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多