1. 程式人生 > >skiti-learn GBDT類庫

skiti-learn GBDT類庫

  • GBDT類庫boosting框架引數 GradientBoostingClassifier和GradientBoosting的引數大部分相同 1)n_estimators:弱學習器的迭代次數,或者說是弱學習器的個數,預設為100,實際調參常與learning_rate共同考慮

    2)learning_rate:每個弱學習器的權重衰減稀疏ν。加上了正則化項,我們的強學習器的迭代公式為fk(x)= fk−1 (x)+νhk(x)。ν的取值範圍為0<ν≤1,對於同樣的訓練集擬合效果,較小的ν需要更多的弱學習器的迭代次數。

    3)subsample:子取樣,取值為(0,1]。注意這裡的子取樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這裡是不放回抽樣。如果取值為1,則全部樣本都使用,等於沒有使用子取樣。如果取值小於1,則只有一部分樣本會去做GBDT的決策樹擬合。選擇小於1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。推薦在[0.5, 0.8]之間,預設是1.0.

    4)init:初始化的時候的弱學習器,如果不輸入,則用訓練集樣本來做樣本集的初始化分類迴歸預測。否則用init引數提供的學習器做初始化分類迴歸預測。一般用在我們對資料有先驗知識,或者之前做過一些擬合的時候,如果沒有的話就不用管這個引數了。

    5)loss: GBDT演算法中的損失函式。分類模型和迴歸模型的損失函式是不一樣的。 對於分類模型,有對數似然損失函式"deviance"和指數損失函式"exponential"兩者輸入選擇。預設是對數似然損失函式"deviance"。一般來說,推薦使用預設的"deviance"。它對二元分離和多元分類各自都有比較好的優化。而指數損失函式等於把我們帶到了Adaboost演算法。 對於迴歸模型,有均方差"ls", 絕對損失"lad", Huber損失"huber"和分位數損失“quantile”。預設是均方差"ls"。一般來說,如果資料的噪音點不多,用預設的均方差"ls"比較好。如果是噪音點較多,則推薦用抗噪音的損失函式"huber"。如果我們需要對訓練集進行分段預測的時候,則採用“quantile”。

    6)alpha:這個引數只有GradientBoostingRegressor有,當我們使用Huber損失"huber"和分位數損失“quantile”時,需要指定分位數的值。預設是0.9,如果噪音點較多,可以適當降低這個分位數的值。