04-07 scikit-learn庫之梯度提高樹

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlnode

scikit-learn庫之梯度提高樹

本文主要介紹梯度提高樹的兩個模型GradientBoostingClassifierGradientBoostingRegressor,這兩個模型調參包括兩部分,第一部分是Bagging框架,第二部分是CART決策樹的參數。本文會詳解介紹GradientBoostingClassifier模型,而後會對比着講解GradientBoostingRegressor模型。python

接下來將會討論上述二者的區別,因爲是從官方文檔翻譯而來,翻譯會略有偏頗,有興趣的也能夠去scikit-learn官方文檔查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble算法

1、GradietBoostingClassifier

1.1 使用場景

GradientBoostingClassifier模型主要用於解決分類問題。數據結構

1.2 參數

  • loss:損失函數,str類型。分類梯度提高樹默認爲'deviance'。
    • 對於分類提高樹,能夠選擇'deviance'對數似然損失函數和'exponential'指數損失函數。通常推薦使用默認的'deviance',若是使用'exponential'二分類時等同於AdaBoost算法。默認爲'deviance'。
    • 對於迴歸提高樹能夠選擇'ls'均方偏差、'lad'絕對損失、'lad'絕對損失、'hub'Huber損失、'quantile'分位數損失。數據噪聲很少,使用默認的'ls';噪音較多,使用'huber';對訓練集分段預測,使用'quantile'。使用'huber'和'quantile'的時候須要指定參數alpha。默認爲'ls'。
  • learning_rate:權重縮減係數,float類型。這個參數是正則化項的參數\(\lambda\)。較小的\(\lambda\)須要更多的迭代次數,即learning_rate和n_estimators須要一塊兒調參。默認爲1。
  • n_estimators::弱學習器個數,int類型。弱學習器的個數,也能夠說是弱學習的最大迭代次數,若是n_estimators過大,容易過擬合;若是n_estimators太小,容易欠擬合。默認爲10。
  • subsample:子採樣,float類型。subsample取值範圍爲\((0,1]\),這裏的子採樣是不放回抽樣,若是取值爲1,則使用所有樣本,若是取值小於去,只有訓練一部分樣本,使用該參數能夠減少方差,防止過擬合,可是會增長樣本擬合的誤差,通常取值在\([0.5,0.8]\)。默認爲1.0。
  • criterion:特徵選擇,str類型。criterion='gini'表示基尼指數;criterion='entropy'表示信息增益,推薦使用'gini'。默認爲'gini'。
  • splitter:特徵劃分點選擇,str類型。默認爲'friedman_mse'。
  • min_samples_split:內部節點劃分須要最少樣本數,float類型。限定子樹繼續劃分的條件,若是某節點的樣本數少於min_samples_split,則會中止繼續劃分子樹。若是樣本數量過大,建議增大該值,不然建議使用默認值。默認爲2。
  • min_samples_leaf:葉子節點最少樣本數float類型。若是在某次劃分葉子節點數目小於樣本數,則會和兄弟節點一塊兒剪枝。若是樣本數量過大,建議增大該值,不然建議使用默認值。默認爲1。
  • min_weight_fraction_leaf:葉子節點最小的樣本權重和,float類型。該參數限制了葉子節點全部樣本權重和的最小值,若是小於該值,則會和兄弟節點一塊兒剪枝。若是樣本有角度的缺失值,或者樣本的分佈誤差較大,則能夠考慮權重問題。默認爲0。
  • max_depth:最大深度,int類型。限制決策樹的深度。默認爲3。
  • max_leaf_nodes:最大葉子節點數,int類型。限制最大葉子節點數,能夠防止樹過深,所以能夠防止過擬合。默認爲None。
  • min_impurity_decrease:節點減少不純度,float類型。若是某節點劃分會致使不純度的減小大於min_impurity_decrease,則中止該節點劃分。默認爲0。
  • min_impurity_split:節點劃分最小不純度,float類型。若是某節點的不純度小於min_impurity_split,則中止該節點劃分,即不生成葉子節點。默認爲1e-7(0.0000001)。
  • class_weight:類別權重,dict類型或str類型。對於二元分類問題可使用class_weight={0:0.9,1:0.1},表示0類別權重爲0.9,1類別權重爲0.1,str類型即爲'balanced',模型將根據訓練集自動修改不一樣類別的權重。默認爲None。
  • init:初始弱學習器,弱學習器類型。對應前向分步算法中的\(f_0(x)\),除非對數據有先驗知識,不然不用管這個參數。可選參數。
  • random_state:隨機數種子,int類型。random_state=None,不一樣時刻產生的隨機數據是不一樣的;random_state=int類型,相同隨機數種子不一樣時刻產生的隨機數是相同的。默認爲None。
  • max_features:劃分的最大特徵數,str、int、float類型。max_depth='log2'表示最多考慮\(log_2n\)個特徵;max_depth={'sqrt','auto'}表示最多考慮\(\sqrt{n}\)個特徵;max_depth=int類型,考慮\(|int類型|\)個特徵;max_depth=float類型,如0.3,則考慮\(0.3n\)個特徵,其中\(n\)爲樣本總特徵數。默認爲None,樣本特徵數不大於50推薦使用默認值。
  • verbose:日誌冗長度,int類型。verbose=0,不輸出訓練過程;verbose=1,輸出部分訓練過程;verbose>1,輸出全部的訓練過程。默認爲0。
  • max_leaf_nodes:最大葉子節點數,int類型。限制最大葉子節點數,能夠防止樹過深,所以能夠防止過擬合。默認爲None。
  • warm_start:熱啓動,bool類型。若是爲True,則基於上一個隨機森林添加決策樹;若是爲False,則從新生成一個隨機森林。默認爲False。
  • presort:數據是否排序,bool類型。樣本量較小,presort=True,即讓樣本數據排序,節點劃分速度更快;樣本量較大,presort=True,讓樣本排序反而會增長訓練模型的時間。一般使用默認值。默認值爲False。
  • validation_fraction:預留數據,float類型。取值範圍爲\([0,1]\),預留多少比例的數據作驗證。默認爲0.1。
  • n_iter_no_change:中止訓練,int類型。能夠在設置一個參數控制算法,在驗證分數沒有提升的時候提前結束。默認爲None。
  • tol:損失中止訓練,float類型。設置一個值在損失在某個區間內沒有改善時中止算法。默認爲1e-4。

1.3 屬性

  • estimators_:list類型。全部決策樹集合。
  • feature_importances_:array類型。特徵重要度。
  • oob_improvement_:array類型。袋外樣本對前一次迭代損失的改善程度。
  • train_score_:array類型。袋內樣本訓練數據的誤差。
  • loss_:返回損失函數。
  • init_:返回初始弱學習器。
  • estimators_:ndarray類型。弱學習器集。

1.4 方法

  • apply(X[, check_input]):返回每一個樣本預測的葉子節點索引。
  • decision_function(X):決策函數關於樣本X的值。
  • fit(X,y):把數據放入模型中訓練模型。
  • get_params([deep]):返回模型的參數,能夠用於Pipeline中。
  • predict(X):預測樣本X的分類類別。
  • predict_log_proba(X):返回樣本X在各個類別上對應的對數機率。
  • predict_proba(X):返回樣本X在各個類別上對應的機率。
  • score(X,y):基於報告決定係數\(R^2\)評估模型。
  • set_prams(**params):建立模型參數。
  • staged_decision_function(X):返回每一個階段樣本X的決策函數值。
  • staged_predict(X):返回每一個階段樣本X的預測值。
  • staged_predict_proba(X):返回每一個階段樣本X在各個類別上對應的機率。

2、GradietBoostingClassifier

GradientBoostingClassifier較於GradientBoostingClassifier模型主要用於解決迴歸問題,不一樣之處在於處理預測值的方法不一樣和使用的損失函數的不一樣。app

相關文章
相關標籤/搜索