參考:
scikit-learn基於梯度提公升樹演算法提供了兩個模型:
gradientboostingclassifier即gbdt(gradient boosting decision tree)梯度提公升決策樹,用於分類問題
gradientboostingregressor即gbrt(gradient boost regression tree)漸進梯度回歸樹,用於回歸問題
from sklearn.ensemble import gradientboostingclassifier
gradientboostingclassifier(loss='deviance', learning_rate=0.1, n_estimators=100,
subsample=1.0, criterion='friedman_mse', min_samples_split=2,
min_samples_leaf=1, min_weight_fraction_leaf=0.,
max_depth=3, min_impurity_decrease=0.,
min_impurity_split=none, init=none,
random_state=none, max_features=none, verbose=0,
max_leaf_nodes=none, warm_start=false,
presort='auto')
引數含義:
1、loss:損失函式
2、learning_rate:float, optional (default=0.1)。學習率,在learning_rate和n_estimators之間需要權衡。通常學習率越小,需要的基本分類器就越多,因此在learning_rate和n_estimators之間要有所折中。
3、n_estimators:int (default=100),指定基本決策樹的數量。梯度提公升對過擬合有很好的魯棒性,因此該值越大,效能越好。
4、subsample:float, optional (default=1.0)
5、criterion:string, optional (default="friedman_mse"),評估節點**的質量指標。
6、min_samplses_split:int, float, optional (default=2),表示**乙個內部節點需要的最少樣本數。
7、min_samples_leaf:int, float, optional (default=1),葉子節點最少樣本數
8、min_weight_fraction_leaf:float, optional (default=0.),指定葉子節點中樣本的最小權重。
9、max_depth:integer, optional (default=3),指定每個基本決策樹的最大深度。最大深度限制了決策樹中的節點數量。調整這個引數可以獲得更好的效能。
10、min_impurity_decrease:float, optional (default=0.)
如果節點的**導致不純度的減少(**後樣本比**前更加純淨)大於或等於min_impurity_decrease,則**該節點。
個人理解這個引數應該是針對分類問題時才有意義。這裡的不純度應該是指基尼指數。
回歸生成樹採用的是平方誤差最小化策略。分類生成樹採用的是基尼指數最小化策略。
11、min_impurity_split:樹生長過程中停止的閾值。如果當前節點的不純度高於閾值,節點將**,否則它是葉子節點。這個引數已經被棄用。用min_impurity_decrease代替了min_impurity_split。
12、init:baseestimator, none, optional (default=none),乙個基本分類器物件或者none,該分類器物件用於執行初始的**。如果為none,則使用loss.init_estimator
13、random_state:int, randomstate instance or none, optional (default=none)
14、max_features:int, float, string or none, optional (default=none)
搜尋最佳劃分的時候考慮的特徵數量。
如果為整數,每次**只考慮max_features個特徵。
如果為浮點數(0到1之間),每次切分只考慮int(max_features * n_features)個特徵。
如果為'auto'或者'sqrt',則每次切分只考慮sqrt(n_features)個特徵
如果為'log2',則每次切分只考慮log2(n_features)個特徵。
如果為none,則每次切分考慮n_features個特徵。
如果已經考慮了max_features個特徵,但還是沒有找到乙個有效的切分,那麼還會繼續尋找下乙個特徵,直到找到乙個有效的切分為止。
如果max_features < n_features,則會減少方差,增加偏差。
15、verbose:int, default: 0,如果為0則不輸出日誌資訊,如果為1則每隔一段時間列印一次日誌資訊。
16、max_leaf_nodes:int or none, optional (default=none),指定每顆決策樹的葉子節點的最大數量。
18、presort:bool or 'auto', optional (default='auto'),在訓練過程中,是否預排序資料加速尋找最佳劃分。
屬性:
feature_importances_:陣列,給出每個特徵的重要性。
oob_improvement_:array, shape = [n_estimators],陣列,給出了每增加一顆基本決策樹,在包外估計(即測試集上)的損失函式的改善情況(相對於上一輪迭代),即損失函式的減少值。
train_score_:陣列,給出每增加一顆基本決策樹,在訓練集上的損失函式的值。
init:初始**使用的分類器。
estimators_:陣列,給出每棵基礎決策樹。
方法:
fit():訓練模型
predict():模型**
predict_log_proba():陣列,**各個類別的概率對數值。
predict_proba():陣列,**各個類別的概率值。
from sklearn.ensemble import gradientboostingregressor
gradientboostingregressor(loss='ls', learning_rate=0.1, n_estimators=100,
subsample=1.0, criterion='friedman_mse', min_samples_split=2,
min_samples_leaf=1, min_weight_fraction_leaf=0.,
max_depth=3, min_impurity_decrease=0.,
min_impurity_split=none, init=none, random_state=none,
max_features=none, alpha=0.9, verbose=0, max_leaf_nodes=none,
warm_start=false, presort='auto')
引數含義:
1、loss:, optional (default='ls'),指定優化的損失函式。
提公升樹與梯度提公升樹演算法
我們對boosting家族的adaboost演算法做了總結,本文就對boosting家族中另乙個重要的演算法梯度提公升樹 gradient boosting decison tree,以下簡稱gbdt 做乙個總結。gbdt有很多簡稱,有gbt gradient boosting tree gtb g...
提公升樹,梯度提公升樹(GBDT)筆記
決策樹可以分為二叉分類樹或者二叉回歸樹,剛剛我們講了分類樹,現在介紹一下回歸樹。回歸問題是用來處理連續值。提公升樹採用了前向分布演算法,模型如下 公式分析 演算法目標 圖中的x,y圖表示的就是,曲線上的點就是這個回歸樹所 到的殘差的 值,我們最後要的就是 值接近真實的殘差就是去擬合這個殘差 fitt...
梯度提公升樹GBDT
上一節我們講了adaboost,而提公升樹也是提公升方法的一種,它的基分類器為分類樹或者回歸樹。ps 首先我們講一下殘差的概念 殘差是指實際值和估計值之間的差,就是相減。一般提公升樹的模型的損失函式是平方損失和對數損失,所以優化很簡單。但是對一般損失函式而言就有困難,所以又有了梯度提公升演算法,然後...