本文簡要介紹python語言中 sklearn.ensemble.GradientBoostingRegressor
的用法。
用法:
class sklearn.ensemble.GradientBoostingRegressor(*, loss='squared_error', 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.0, max_depth=3, min_impurity_decrease=0.0, init=None, random_state=None, max_features=None, alpha=0.9, verbose=0, max_leaf_nodes=None, warm_start=False, validation_fraction=0.1, n_iter_no_change=None, tol=0.0001, ccp_alpha=0.0)
用於回歸的梯度提升。
GB 以正向stage-wise 方式構建加法模型;它允許優化任意可微損失函數。在每個階段,回歸樹都適合給定損失函數的負梯度。
在用戶指南中閱讀更多信息。
- loss:{‘squared_error’, ‘absolute_error’, ‘huber’, ‘quantile’},默認='squared_error'
要優化的損失函數。 ‘squared_error’ 是指回歸的平方誤差。 ‘absolute_error’是指回歸的絕對誤差,是一個魯棒的損失函數。 ‘huber’ 是兩者的結合。 ‘quantile’ 允許分位數回歸(使用
alpha
指定分位數)。- learning_rate:浮點數,默認=0.1
學習率將每棵樹的貢獻縮小
learning_rate
。 learning_rate 和 n_estimators 之間存在權衡。- n_estimators:整數,默認=100
要執行的升壓級數。梯度提升對於過度擬合相當穩健,因此大量通常會帶來更好的性能。
- subsample:浮點數,默認=1.0
用於擬合各個基礎學習器的樣本分數。如果小於 1.0,則會導致隨機梯度提升。
subsample
與參數n_estimators
交互。選擇subsample < 1.0
會導致方差減少和偏差增加。- criterion:{‘friedman_mse’, ‘squared_error’, ‘mse’, ‘mae’},默認='friedman_mse'
測量分割質量的函數。支持的標準是均方誤差的“friedman_mse”,Friedman 的改進分數,均方誤差的“squared_error”,平均絕對誤差的“mae”。 “friedman_mse” 的默認值通常是最好的,因為它在某些情況下可以提供更好的近似值。
- min_samples_split:int 或浮點數,默認=2
拆分內部節點所需的最小樣本數:
- 如果是 int,則將
min_samples_split
視為最小數字。 - 如果是浮點數,那麽
min_samples_split
是一個分數,而ceil(min_samples_split * n_samples)
是每個拆分的最小樣本數。
- 如果是 int,則將
- min_samples_leaf:int 或浮點數,默認=1
葉節點所需的最小樣本數。隻有在左右分支中的每個分支中至少留下
min_samples_leaf
訓練樣本時,才會考慮任何深度的分割點。這可能具有平滑模型的效果,尤其是在回歸中。- 如果是 int,則將
min_samples_leaf
視為最小數字。 - 如果是浮點數,那麽
min_samples_leaf
是分數,而ceil(min_samples_leaf * n_samples)
是每個節點的最小樣本數。
- 如果是 int,則將
- min_weight_fraction_leaf:浮點數,默認=0.0
需要在葉節點處的權重總和(所有輸入樣本的)的最小加權分數。當未提供sample_weight 時,樣本具有相同的權重。
- max_depth:整數,默認=3
單個回歸估計器的最大深度。最大深度限製了樹中的節點數。調整此參數以獲得最佳性能;最佳值取決於輸入變量的相互作用。
- min_impurity_decrease:浮點數,默認=0.0
如果該分裂導致雜質減少大於或等於該值,則該節點將被分裂。
加權雜質減少方程如下:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
其中
N
是樣本總數,N_t
是當前節點的樣本數,N_t_L
是左孩子的樣本數,N_t_R
是右孩子的樣本數.N
,N_t
,N_t_R
和N_t_L
都是指加權和,如果通過了sample_weight
。- init:估計器或‘zero’,默認=無
用於計算初始預測的估計器對象。
init
必須提供擬合和預測。如果‘zero’,初始原始預測設置為零。默認情況下使用DummyEstimator
,預測平均目標值(損失='squared_error')或其他損失的分位數。- random_state:int、RandomState 實例或無,默認=無
控製在每次提升迭代中給予每個樹估計器的隨機種子。此外,它還控製每次拆分時特征的隨機排列(有關詳細信息,請參閱注釋)。如果
n_iter_no_change
不是None,它還控製訓練數據的隨機拆分以獲得驗證集。傳遞 int 以獲得跨多個函數調用的可重現輸出。請參閱詞匯表。- max_features:{‘auto’, ‘sqrt’, ‘log2’}, int 或浮點數,默認=無
尋找最佳分割時要考慮的特征數量:
- 如果是 int,則在每次拆分時考慮
max_features
特征。 - 如果是浮點數,那麽
max_features
是一個分數,並且在每次拆分時都會考慮int(max_features * n_features)
特征。 - 如果 “auto”,那麽
max_features=n_features
。 - 如果 “sqrt”,那麽
max_features=sqrt(n_features)
。 - 如果 “log2”,那麽
max_features=log2(n_features)
。 - 如果沒有,那麽
max_features=n_features
。
選擇
max_features < n_features
會導致方差減少和偏差增加。注意:在找到至少一個節點樣本的有效分區之前,對拆分的搜索不會停止,即使它需要有效地檢查超過
max_features
的特征。- 如果是 int,則在每次拆分時考慮
- alpha:浮點數,默認=0.9
huber損失函數和分位數損失函數的alpha-quantile。僅當
loss='huber'
或loss='quantile'
時。- verbose:整數,默認=0
啟用詳細輸出。如果為 1,那麽它會不時打印進度和性能(樹越多,頻率越低)。如果大於 1,那麽它會打印每棵樹的進度和性能。
- max_leaf_nodes:整數,默認=無
以best-first 方式用
max_leaf_nodes
種植樹。最佳節點定義為雜質的相對減少。如果 None 則無限數量的葉節點。- warm_start:布爾,默認=假
當設置為
True
時,重用前一個調用的解決方案以適應並向集成添加更多估計器,否則,隻需刪除前一個解決方案。請參閱詞匯表。- validation_fraction:浮點數,默認=0.1
留出作為提前停止驗證集的訓練數據的比例。必須介於 0 和 1 之間。僅在
n_iter_no_change
設置為整數時使用。- n_iter_no_change:整數,默認=無
n_iter_no_change
用於決定當驗證分數沒有提高時是否使用提前停止來終止訓練。默認情況下,它設置為 None 以禁用提前停止。如果設置為一個數字,它將留出validation_fraction
大小的訓練數據作為驗證,並在驗證分數在之前的所有n_iter_no_change
迭代次數中都沒有提高時終止訓練。- tol:浮點數,默認=1e-4
提前停止的公差。當
n_iter_no_change
迭代(如果設置為數字)的損失至少沒有改善 tol 時,訓練停止。- ccp_alpha:非負浮點數,默認=0.0
用於最小Cost-Complexity 修剪的複雜度參數。將選擇具有最大成本複雜度且小於
ccp_alpha
的子樹。默認情況下,不進行剪枝。有關詳細信息,請參閱最小 Cost-Complexity 修剪。
feature_importances_
ndarray 形狀 (n_features,)基於雜質的特征重要性。
- oob_improvement_:ndarray 形狀(n_estimators,)
out-of-bag 樣本相對於前一次迭代的損失(=偏差)的改進。
oob_improvement_[0]
是第一階段損失相對於init
估計器的改進。僅在subsample < 1.0
時可用- train_score_:ndarray 形狀(n_estimators,)
i-th 分數
train_score_[i]
是模型在 in-bag 樣本上迭代i
時的偏差(= 損失)。如果subsample == 1
這是訓練數據的偏差。- loss_:LossFunction
具體的
LossFunction
對象。- init_:估計器
提供初始預測的估計器。通過
init
參數或loss.init_estimator
設置。- estimators_:ndarray of DecisionTreeRegressor of shape (n_estimators, 1)
擬合sub-estimators 的集合。
n_classes_
int已棄用:屬性
n_classes_
在 0.24 版本中已棄用,並將在 1.1 中刪除(重命名為 0.26)。- n_estimators_:int
通過提前停止選擇的估計器數量(如果指定了
n_iter_no_change
)。否則設置為n_estimators
。n_features_
int已棄用:屬性
n_features_
在版本 1.0 中已棄用,並將在 1.2 中刪除。- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。- max_features_:int
max_features 的推斷值。
參數:
屬性:
注意:
每次拆分時,特征總是隨機排列。因此,即使在相同的訓練數據和
max_features=n_features
的情況下,如果在搜索最佳拆分期間枚舉的幾個拆分的標準改進相同,則找到的最佳拆分可能會有所不同。要在擬合期間獲得確定性行為,必須修複random_state
。參考:
J. Friedman,貪心函數逼近:梯度提升機,統計年鑒,卷。 2001 年第 29 期,第 5 期。
弗裏德曼,隨機梯度提升,1999
T. Hastie、R. Tibshirani 和 J. Friedman。統計學習的要素。 2,施普林格,2009 年。
例子:
>>> from sklearn.datasets import make_regression >>> from sklearn.ensemble import GradientBoostingRegressor >>> from sklearn.model_selection import train_test_split >>> X, y = make_regression(random_state=0) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> reg = GradientBoostingRegressor(random_state=0) >>> reg.fit(X_train, y_train) GradientBoostingRegressor(random_state=0) >>> reg.predict(X_test[1:2]) array([-61...]) >>> reg.score(X_test, y_test) 0.4...
相關用法
- Python sklearn GradientBoostingClassifier用法及代碼示例
- Python sklearn GraphicalLassoCV用法及代碼示例
- Python sklearn GraphicalLasso用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
- Python sklearn GroupShuffleSplit用法及代碼示例
- Python sklearn GroupKFold用法及代碼示例
- Python sklearn GaussianProcessClassifier用法及代碼示例
- Python sklearn GammaRegressor用法及代碼示例
- Python sklearn GenericUnivariateSelect用法及代碼示例
- Python sklearn GaussianNB用法及代碼示例
- Python sklearn GaussianRandomProjection用法及代碼示例
- Python sklearn GaussianProcessRegressor用法及代碼示例
- Python sklearn GaussianMixture用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn log_loss用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.ensemble.GradientBoostingRegressor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。