sklearn中GBDT的一些参数、属性、方法的理解
文章目錄
- GBDT 分類器
- 引入
- 重要參數
- loss
- learning_rate
- subsample
- n_estimators
- criterion
- max_depth
- min_samples_leaf
- min_samples_split
- max_features
- verbose
- 重要屬性
- 重要方法
- GBDT 回歸器
本文主要是sklearn中GBDT的一些參數、屬性、方法的理解,如果需要了解基礎的理論知識,可以看看之前發表的文章: 梯度提升樹(GBDT)相關知識。
GBDT 分類器
引入
from sklearn.ensemble import GradientBoostingClassifier # 全部參數 GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,learning_rate=0.1, loss='deviance', max_depth=3,max_features=None, max_leaf_nodes=None,min_impurity_decrease=0.0, min_impurity_split=None,min_samples_leaf=1, min_samples_split=2,min_weight_fraction_leaf=0.0, n_estimators=100,n_iter_no_change=None, presort='deprecated',random_state=None, subsample=1.0, tol=0.0001,validation_fraction=0.1, verbose=0,warm_start=False)重要參數
loss
字符串類型,默認值’deviance’。用于指定損失函數:
learning_rate
數值型,默認值0.1。用于指定學習率,調參方法:
合適的候選值:[0.001, 0.01, 0.1, 1]
subsample
數值型,默認值1。指定采樣出 subsample * n_samples 個樣本用于訓練弱學習器。注意這里的子采樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這里是不放回抽樣。 取值在(0, 1)之間,設置為1表示使用所有數據訓練弱學習器。如果取值小于1,則只有一部分樣本會去做GBDT的決策樹擬合。選擇小于1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。
推薦的取值為:[0.5, 0.6, 0.7, 0.8, 0.9, 1]
n_estimators
數值型參數,默認值為100,此參數指定了弱分類器的個數。設置的值越大,精確度越好,但是當 n_estimators 大于特定值之后,帶來的提升效果非常有限。
推薦的參數值為:[120, 300, 500, 800, 1200]
criterion
字符串類型,默認值為 ‘gini’。這個參數指定劃分子樹的評估標準:
**推薦設置為 ‘gini’,**因為(1)基尼系數的計算過程相對簡單,而計算信息增益需要進行對數運算。(2)使用信息增益作為劃分標準時,在使用高緯度數據或者噪聲很多的數據時容易過擬合。
max_depth
數值型,默認值3。這是與剪枝相關的參數,設置為None時,樹的節點會一直分裂,直到:(1)每個葉子都是“純”的;(2)或者葉子中包含?于min_sanples_split個樣本。
推薦從 max_depth = 3 嘗試增加,觀察是否應該繼續加大深度。
合適的取值可以是 [3, 5, 8, 15, 25, 30, None]
如果max_leaf_nodes參數非None,則忽略此項
min_samples_leaf
數值型,默認值1,指定每個葉子結點包含的最少的樣本數。參數的取值除了整數之外,還可以是浮點數,此時(min_samples_leaf * n_samples)向下取整后的整數是每個節點的最小樣本數。
此參數設置的過小會導致過擬合,反之就會欠擬合。調整過程:
推薦的取值可以是:[1, 2, 5, 10]
min_samples_split
數值型,默認值2,指定每個內部節點(非葉子節點)包含的最少的樣本數。與min_samples_leaf這個參數類似,可以是整數也可以是浮點數。
推薦的取值是:[1, 2, 5, 10, 15, 100]
max_features
可以為整數、浮點、字符串,默認值為None。此參數用于限制分枝時考慮的特征個數,超過限制個數的特征都會被舍棄。
推薦的取值為:[‘log2’, ‘sqrt’, None]
verbose
數值類型,默認值為0,表示不輸出日志。如果為1,則每次迭代輸出一次日志。如果大于1,則每間隔 verbose 此迭代輸出一次日志。
重要屬性
1,feature_importances_ ,給出了各個特征對模型的重要性。
2,estimators_,一個數組,給出了每個弱學習器。
重要方法
1,fit(X, y) : 訓練模型。
2,predict(X) : 用模型預測,返回預測值。
3,predict_proba(X) : 返回一個數組,數組元素依次為各個樣本屬于各個類別的概率值。
4,score(X, y) : 返回在(X, y)上預測的準確率(accuracy)。
GBDT 回歸器
引入方式如下:
from sklearn.ensemble import GradientBoostingRegressor # 所有參數 GradientBoostingRegressor(alpha=0.9, ccp_alpha=0.0, criterion='friedman_mse',init=None, learning_rate=0.1, loss='ls', max_depth=3,max_features=None, max_leaf_nodes=None,min_impurity_decrease=0.0, min_impurity_split=None,min_samples_leaf=1, min_samples_split=2,min_weight_fraction_leaf=0.0, n_estimators=100,n_iter_no_change=None, presort='deprecated',random_state=None, subsample=1.0, tol=0.0001,validation_fraction=0.1, verbose=0, warm_start=False)與GBDT分類樹相比較,主要是下面的參數存在區別:
loss:
字符串類型,默認值為 ‘ls’,實際可選的有:
-
‘ls’:此時損失函數為平方損失函數,使用最小二乘回歸。
-
‘lad’:此時使用指數絕對值損失函數。
-
‘huber’:此時損失函數為上述兩者的綜合,即誤差較小時,采用平方損失,在誤差較大時,采用絕對值損失。
-
‘quantile’:分位數回歸(分位數指的是百分之幾),采用絕對值損失。
criterion:
字符串類型,默認值為 ‘friedman_mse’,是衡量回歸效果的指標??蛇x的有:
- ‘friedman_mse’:改進型的均方誤差
- ‘mse’:標準的均方誤差
- ‘mae’:平均絕對誤差
除了這兩個參數之外,其他參數、屬性、方法的含義與用法與上文提到的GBDT分類器的參數基本一致。
參考文章:
sklearn.ensemble.GradientBoostingClassifier
sklearn.ensemble.RandomForestRegressor
scikit-learn 梯度提升樹(GBDT)調參小結
總結
以上是生活随笔為你收集整理的sklearn中GBDT的一些参数、属性、方法的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界怀旧服君王板甲怎么制作 君王
- 下一篇: pycharm社区版和专业版的区别