久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

100天搞定機器學習|Day57 Adaboost知識手冊(理論篇)

 ml_Py 2021-12-08

重磅干貨,第一時間送達

100天搞定機器學習:Day56 隨機森林知識手冊

Adaboost模型內(nèi)容較多,,我將分為理論篇和實踐篇分別介紹,,本文為理論篇,主要介紹Boostting算法,、Adaboost基本概念,,算法原理、公式推導,、Sklearn中Adaboost模型參數(shù)詳解,、Adaboost總結(jié)。

下篇,,我們再繼續(xù)Day56隨機森林中的信用卡欺詐預測的實例,,用Adaboost建模,然后與隨機森林做個對比,。

Boosting

Boosting是一種用來提高弱分類器準確度的算法,,是將“弱學習算法“提升為“強學習算法”的過程,主要思想是“三個臭皮匠頂個諸葛亮”,。一般來說,,找到弱學習算法要相對容易一些,,然后通過反復學習得到一系列弱分類器,組合這些弱分類器得到一個強分類器,。

Boosting算法要涉及到兩個部分,,加法模型和前向分步算法。加法模型就是說強分類器由一系列弱分類器線性相加而成,。一般組合形式如下:

其中,,就是一個個的弱分類器,是弱分類器學習到的最優(yōu)參數(shù),,就是弱學習在強分類器中所占比重,,是所有的組合。這些弱分類器線性相加組成強分類器,。

前向分步就是說在訓練過程中,,下一輪迭代產(chǎn)生的分類器是在上一輪的基礎(chǔ)上訓練得來的。也就是可以寫成這樣的形式:

用下面的GIF看起來會更加生動

Adaboost基本概念

AdaBoost是典型的Boosting算法,,屬于Boosting家族的一員,。對于AdaBoost,我們要搞清楚兩點:

1,、每一次迭代的弱學習有何不一樣,,如何學習?

2,、弱分類器權(quán)值如何確定,?

第一個問題,AdaBoost的做法是,,提高那些被前一輪弱分類器錯分類樣本的權(quán)值,,而降低那些被正確分類樣本的權(quán)值。這樣一來,,那些沒有得到正確分類的數(shù)據(jù),,由于其權(quán)值加大而受到后一輪的弱分類器的更大關(guān)注,。于是,,分類問題被一系列的弱分類器“分而治之”。

第二個問題,,即弱分類器的組合,,AdaBoost采取加權(quán)多數(shù)表決的方法。具體地,,加大分類誤差率小的弱分類器的權(quán)值,,使其在表決中起較大的作用,減小分類誤差率大的弱分類器的權(quán)值,,使其在表決中起較小的作用,。

Adaboost算法流程-分類

輸入:訓練數(shù)據(jù)集,,其中,,,,,迭代次數(shù)

1.初始化訓練樣本的權(quán)值分布:

2.對于

(a) 使用具有權(quán)值分布的訓練數(shù)據(jù)集進行學習,得到弱分類器

(b) 計算在訓練數(shù)據(jù)集上的分類誤差率:

(c) 計算在強分類器中所占的權(quán)重:
(d) 更新訓練數(shù)據(jù)集的權(quán)值分布(這里,,(z_m)是歸一化因子,,為了使樣本的概率分布和為1):

3.得到最終分類器:

公式推導

假設(shè)已經(jīng)經(jīng)過輪迭代,得到,,根據(jù)前向分步,,我們可以得到:

我們已經(jīng)知道AdaBoost是采用指數(shù)損失,由此可以得到損失函數(shù):

這時候,是已知的,,可以作為常量移到前面去:

其中,, 就是每輪迭代的樣本權(quán)重!依賴于前一輪的迭代重分配,。再化簡一下:

繼續(xù)化簡Loss:

其中 就是分類誤差率 所以  這樣我們就得到了化簡之后的損失函數(shù) 對求偏導令得到:

AdaBoost實例

《統(tǒng)計學習方法》上面有個小例子,,可以用來加深印象 有如下的訓練樣本,我們需要構(gòu)建強分類器對其進行分類,。x是特征,,y是標簽。

令權(quán)值分布 假設(shè)一開始的權(quán)值分布是均勻分布:,, 現(xiàn)在開始訓練第一個弱分類器,。我們發(fā)現(xiàn)閾值取2.5時分類誤差率最低,得到弱分類器為:

當然,,也可以用別的弱分類器,,只要誤差率最低即可。這里為了方便,,用了分段函數(shù),。得到了分類誤差率

第二步計算在強分類器中的系數(shù)

第三步更新樣本的權(quán)值分布,用于下一輪迭代訓練,。由公式:

得到新的權(quán)值分布,,從各0.1變成了:  可以看出,被分類正確的樣本權(quán)值減小了,,被錯誤分類的樣本權(quán)值提高了,。

第四步得到第一輪迭代的強分類器:

以此類推,經(jīng)過第二輪……第N輪,,迭代多次直至得到最終的強分類器,。迭代范圍可以自己定義,比如限定收斂閾值,,分類誤差率小于某一個值就停止迭代,,比如限定迭代次數(shù),,迭代1000次停止。這里數(shù)據(jù)簡單,,在第3輪迭代時,,得到強分類器:

的分類誤差率為0,結(jié)束迭代,。

就是最終的強分類器,。

Adaboost參數(shù)詳解

我們直接使用sklearn.ensemble中的AdaBoostRegressor和AdaBoostClassifier,兩者大部分框架參數(shù)是相同的:

AdaBoostRegressor

class sklearn.ensemble.AdaBoostRegressor(base_estimator=None, n_estimators=50, learning_rate=1.0, loss=’linear’, random_state=None)

AdaBoostClassifier

class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, n_estimators=50, learning_rate=1.0, algorithm=’SAMME.R’, random_state=None)

參數(shù)

1)base_estimator:AdaBoostClassifier和AdaBoostRegressor都有,,即我們的弱分類學習器或者弱回歸學習器,。理論上可以選擇任何一個分類或者回歸學習器,不過需要支持樣本權(quán)重,。我們常用的一般是CART決策樹或者神經(jīng)網(wǎng)絡(luò)MLP,。默認是決策樹,即AdaBoostClassifier默認使用CART分類樹DecisionTreeClassifier,,而AdaBoostRegressor默認使用CART回歸樹DecisionTreeRegressor,。另外有一個要注意的點是,如果我們選擇的AdaBoostClassifier算法是SAMME.R,,則我們的弱分類學習器還需要支持概率預測,,也就是在scikit-learn中弱分類學習器對應(yīng)的預測方法除了predict還需要有predict_proba。

2)algorithm:這個參數(shù)只有AdaBoostClassifier有,。主要原因是scikit-learn實現(xiàn)了兩種Adaboost分類算法,,SAMME和SAMME.R。兩者的主要區(qū)別是弱學習器權(quán)重的度量,,SAMME使用了二元分類Adaboost算法的擴展,,即用對樣本集分類效果作為弱學習器權(quán)重,而SAMME.R使用了對樣本集分類的預測概率大小來作為弱學習器權(quán)重,。由于SAMME.R使用了概率度量的連續(xù)值,,迭代一般比SAMME快,因此AdaBoostClassifier的默認算法algorithm的值也是SAMME.R,。我們一般使用默認的SAMME.R就夠了,,但是要注意的是使用了SAMME.R, 則弱分類學習器參數(shù)base_estimator必須限制使用支持概率預測的分類器,。SAMME算法則沒有這個限制,。

3)loss:這個參數(shù)只有AdaBoostRegressor有,Adaboost.R2算法需要用到,。有線性'linear’, 平方'square’和指數(shù) 'exponential’三種選擇, 默認是線性,一般使用線性就足夠了,,除非你懷疑這個參數(shù)導致擬合程度不好,。

4)n_estimators:AdaBoostClassifier和AdaBoostRegressor都有,,就是我們的弱學習器的最大迭代次數(shù),或者說最大的弱學習器的個數(shù),。一般來說n_estimators太小,,容易欠擬合,n_estimators太大,,又容易過擬合,,一般選擇一個適中的數(shù)值。默認是50,。在實際調(diào)參的過程中,,我們常常將n_estimators和下面介紹的參數(shù)learning_rate一起考慮。

5)learning_rate:  AdaBoostClassifier和AdaBoostRegressor都有,,即每個弱學習器的權(quán)重縮減系數(shù)ν,,在原理篇的正則化章節(jié)我們也講到了,加上了正則化項,,我們的強學習器的迭代公式為,。ν的取值范圍為0<ν≤1。對于同樣的訓練集擬合效果,,較小的ν意味著我們需要更多的弱學習器的迭代次數(shù),。通常我們用步長和迭代最大次數(shù)一起來決定算法的擬合效果。所以這兩個參數(shù)n_estimators和learning_rate要一起調(diào)參,。一般來說,,可以從一個小一點的ν開始調(diào)參,默認是1,。

SAMME.R算法流程

1.初始化樣本權(quán)值:

2.Repeat for

2.1 訓練一個弱分類器,,得到樣本的類別預測概率分布

2.2 

2.3 ,同時,,要進行歸一化使得權(quán)重和為1 3.得到強分類模型:

DecisionTreeClassifier和DecisionTreeRegressor的弱學習器參數(shù),,以CART分類樹為例,這里就和前文隨機森林類似了,。

方法

decision_function(X):返回決策函數(shù)值

fit(X,Y):在數(shù)據(jù)集(X,Y)上訓練模型

get_parms():獲取模型參數(shù)

predict(X):預測數(shù)據(jù)集X的結(jié)果

predict_log_proba(X):預測數(shù)據(jù)集X的對數(shù)概率

predict_proba(X):預測數(shù)據(jù)集X的概率值

score(X,Y):輸出數(shù)據(jù)集(X,Y)在模型上的準確率

staged_decision_function(X):返回每個基分類器的決策函數(shù)值

staged_predict(X):返回每個基分類器的預測數(shù)據(jù)集X的結(jié)果

staged_predict_proba(X):返回每個基分類器的預測數(shù)據(jù)集X的概率結(jié)果

staged_score(X, Y):返回每個基分類器的預測準確率,。

Adaboost總結(jié)

Adaboost優(yōu)點

1.可以使用各種方法構(gòu)造子分類器,Adaboost算法提供的是框架

2.簡單,,不用做特征篩選

3.相比較于RF,,更不用擔心過擬合問題

Adaboost缺點

1.從wiki上介紹的來看,adaboost對于噪音數(shù)據(jù)和異常數(shù)據(jù)是十分敏感的,。Boosting方法本身對噪聲點異常點很敏感,,因此在每次迭代時候會給噪聲點較大的權(quán)重,這不是我們系統(tǒng)所期望的。

2.運行速度慢,,凡是涉及迭代的基本上都無法采用并行計算,,Adaboost是一種"串行"算法.所以GBDT(Gradient Boosting Decision Tree)也非常慢。

參考:

李航《統(tǒng)計學習方法》第8章 提升方法 《Getting Started with Machine Learning》Jim Liang https://www.cnblogs.com/pinard/p/6136914.html https://www.cnblogs.com/ScorpioLu/p/8295990.html https://louisscorpio./2017/11/28/AdaBoost入門詳解/ https://ask./blog/zhangjunhong0428/10361

留言送書活動開啟


上周送書【獲獎名單】及本周送書計劃

本周送書:《機器學習線性代數(shù)基礎(chǔ)3本

送書方式:留言,、轉(zhuǎn)發(fā),、在看排行榜或留言深得我心

戳一下右下角在看小小舉動,,大大支持~

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多