AdaBoost Classifier和Regressor


Adaboost原理傳送門

AdaBoost在我看理論課程的時候,以分類為例子來講解的,誰知道sklearn里面基本上都有classifier和regressor兩種。這個倒是我沒想到的!!!

from sklearn.ensemble import AdaBoostRegressor

 

 

參數介紹:

    base_estimator : object, optional (default=DecisionTreeRegressor)。基估計器,理論上可以選擇任何回歸器,但是這個地方需要支持樣本加權重,as well as proper classes_ and n_classes_ attributes.(這個地方不過會翻譯)。常用的是CART回歸樹和神經網絡,默認CART回歸樹,即AdaBoostRegressor默認使用CART回歸樹DecisionTreeRegressor。

    n_estimators : integer, optional (default=50)。基估計器的個數。

    learning_rate : float, optional (default=1.)。即每個弱學習器的權重縮減系數νν,在原理篇的正則化章節我們也講到了,加上了正則化項,我們的強學習器的迭代公式為

ν的取值范圍為0<ν1。對於同樣的訓練集擬合效果,較小的ν意味着我們需要更多的弱學習器的迭代次數。通常我們用步長和迭代最大次數一起來決定算法的擬合效果。所以這兩個參數n_estimators和learning_rate要一起調參。一般來說,可以從一個小一點的ν開始調參,默認是1。

    loss : {‘linear’, ‘square’, ‘exponential’}, optional (default=’linear’)。Adaboost.R2算法需要用到。有線性‘linear’, 平方‘square’和指數 ‘exponential’三種選擇, 默認是線性,一般使用線性就足夠了,除非你懷疑這個參數導致擬合程度不好。這個值的意義,它對應了我們對第k個弱分類器的中第i個樣本的誤差的處理,即:

如果是線性誤差,則

如果是平方誤差,則

如果是指數誤差,則

Ek為訓練集上的最大誤差Ek=max|yiGk(xi)|i=1,2...m

    random_state : int, RandomState instance or None, optional (default=None)

屬性介紹:

    estimators_ : list of classifiers

    estimator_weights_ : array of floats

    estimator_errors_ : array of floats

    feature_importances_ : array of shape = [n_features]

方法介紹:

    

from sklearn.ensemble import AdaBoostClassifier

參數介紹:

    base_estimator : object, optional (default=DecisionTreeClassifier)。基估計器,理論上可以選擇任何分類器,但是這個地方需要支持樣本加權重,as well as proper classes_ and n_classes_ attributes.(這個地方不過會翻譯)。常用的是CART決策樹和神經網絡,默認CART決策樹,即AdaBoostClassifier默認使用CART決策樹DecisionTreeClassifier。

    n_estimators : integer, optional (default=50)。基估計器的個數。

    learning_rate : float, optional (default=1.)。通過這個參數縮減每個分類器的貢獻,learning_raten_estimators 兩個參數之間存在權衡。

    algorithm : {‘SAMME’, ‘SAMME.R’}, optional (default=’SAMME.R’)。如果'SAMME.R'則使用SAMME.R  (Real Boosting) 算法。 base_estimator必須支持類概率的計算。 如果'SAMME'則使用SAMME (discrete boosting) 算法。 SAMME.R算法通常收斂速度高於SAMME,通過較少的升壓迭代實現較低的測試誤差。(老哥們有好的翻譯理解記得評論下!)

如果我們選擇的AdaBoostClassifier算法是SAMME.R,則我們的弱分類學習器還需要支持概率預測,也就是在scikit-learn中弱分類學習器對應的預測方法除了predict還需要有predict_proba。

兩者的主要區別是弱學習器權重的度量,SAMME使用了和我們的原理篇里二元分類Adaboost算法的擴展,即用對樣本集分類效果作為弱學習器權重,而SAMME.R使用了對樣本集分類的預測概率大小來作為弱學習器權重。由於SAMME.R使用了概率度量的連續值,迭代一般比SAMME快,因此AdaBoostClassifier的默認算法algorithm的值也是SAMME.R。我們一般使用默認的SAMME.R就夠了,但是要注意的是使用了SAMME.R, 則弱分類學習器參數base_estimator必須限制使用支持概率預測的分類器。SAMME算法則沒有這個限制。

    random_state : int, RandomState instance or None, optional (default=None)。如果int,random_state是隨機數生成器使用的種子; 如果RandomState的實例,random_state是隨機數生成器; 如果None,則隨機數生成器是由np.random使用的RandomState實例。

屬性介紹:

    estimators_ : list of classifiers   子估計器

    classes_ : array of shape = [n_classes]  類別的標簽信息

    n_classes_ : int      類別的數量

    estimator_weights_ : array of floats    每個基估計器的權重

    estimator_errors_ : array of floats      每個基估計器的錯誤率

    feature_importances_ : array of shape = [n_features] 如果基估計器支持的話

“具體調參”參考博客

    調參還是分為兩部分:AdaBoost框架調參和弱分類器的調參。

  框架參數調節:

    框架參數就是值上述介紹的那些需要動態調節觀察效果的參數。

  弱分類器參數調節:

    這里我們僅僅討論默認的決策樹弱學習器的參數。即CART分類樹DecisionTreeClassifier和CART回歸樹DecisionTreeRegressor。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM