1. 程式人生 > >GBDT分類實戰完全總結(一)

GBDT分類實戰完全總結(一)

第一部分:引數說明(一)、簡述sklearn自帶的ensemble模組中集成了GradientBoostingClassifier的類,引數包括:class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’learning_rate=0.1n_estimators=100subsample=1.0criterion=’friedman_mse’min_samples_split=2min_samples_leaf=1min_weight_fraction_leaf=0.0max_depth=3min_impurity_decrease=0.0
min_impurity_split=Noneinit=Nonerandom_state=Nonemax_features=Noneverbose=0max_leaf_nodes=Nonewarm_start=Falsepresort=’auto’) 原始碼見[source](二)、引數含義及可取的值 ●表示可選引數,★ 表示預設引數1、loss : {‘deviance’, ‘exponential’}, optional (default=’deviance’)---------損失函式● exponential:模型等同AdaBoost★ deviance:和Logistic Regression的損失函式一致
2、learning_rate : float, optional (default=0.1)--------學習率(縮減)注:即每個弱學習器的權重縮減係數ν,也稱作步長,ν的取值範圍為0<ν≤1。3、n_estimators : int (default=100)--------子模型的數量● int:個數★ 100:預設值注:大量提升時效能更好。4、max_depth : integer, optional (default=3)---------最大深度,如果max_leaf_nodes引數指定,則忽略● int:深度★ 3:預設值5、criterion : string, optional (default=”friedman_mse”)--------如何劃分特徵
注:Supported criteria are “friedman_mse” for the mean squared error with improvement score by Friedman, “mse” for mean squared error, and “mae” for the mean absolute error.6、min_samples_split : int, float, optional (default=2)-------分裂所需的最小樣本數● int:樣本數★ 2:預設值注:如果為int,則將min_samples_split作為最小值。如果為float,則min_samples_split為百分比,ceil(min_samples_split * n_samples)為每個分割的最小取樣數。7、min_samples_leaf : int, float, optional (default=1)-------葉節點最小樣本數● int:樣本數★ 1:預設值注:如果為int,則將min_samples_leaf視為最小值。如果為float,則min_samples_leaf是百分比,ceil(min_samples_leaf * n_samples)是每個節點的最小取樣數。8、min_weight_fraction_leaf : float, optional (default=0.)-------葉節點最小樣本權重總值● float:權重總值★ 0:預設值注:需要在葉節點處的所有輸入樣本權重總和的最小加權分數。 沒有提供sample_weight時,樣本具有相同的權重。9、subsample : float, optional (default=1.0)------子取樣率● float:取樣率★ 1.0:預設值注:如果小於1.0,則會導致隨機梯度增強(Stochastic Gradient Boosting)。 子樣本與引數n_estimators互動。 選擇子樣本<1.0會導致方差減少和偏差增加。推薦在[0.5, 0.8]之間,預設是1.0,即不使用子取樣。10、max_features : int, float, string or None, optional (default=None)---節點分裂時參與判斷的最大特徵數● int:個數● float:佔所有特徵的百分比● auto:所有特徵數的開方● sqrt:所有特徵數的開方● log2:所有特徵數的log2值★ None:等於所有特徵數注:選擇max_features <n_features會導致方差減少和偏差增加。11、max_leaf_nodes : int or None, optional (default=None)------最大葉節點數● int:個數★ None:不限制葉節點數12、min_impurity_split : float----------停止劃分的閾值注:Deprecated since version 0.19: min_impurity_split has been deprecated in favor ofmin_impurity_decrease in 0.19 and will be removed in 0.21. Usemin_impurity_decrease instead.13、min_impurity_decrease : float, optional (default=0.)----------停止劃分的閾值注:如果此分割導致大於或等於該值的純度減少,則節點將被分割。純度方程:N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)14、init : BaseEstimator, None, optional (default=None)--------初始子模型注:用於計算初始預測的估計器物件。 init必須提供擬合和預測。 如果沒有,它使用loss.init_estimator。15、verbose : int, default: 0-------日誌冗長度● int:冗長度★ 0:不輸出訓練過程● 1:偶爾輸出● >1:對每個子模型都輸出16、warm_start : bool, default: False--------是否熱啟動,如果是,則下一次訓練是以追加樹的形式進行● bool:熱啟動★ False:預設值17、random_state : int, RandomState instance or None, optional (default=None)---隨機器物件注:如果是int,random_state是隨機數發生器使用的種子; 如果RandomState例項,random_state是隨機數生成器; 如果為None,則隨機數生成器是np.random使用的RandomState例項。18、presort : bool or ‘auto’, optional (default=’auto’)---------是否預排序,預排序可以加速查詢最佳分裂點,對於稀疏資料不管用● Bool★ auto:非稀疏資料則預排序,若稀疏資料則不預排序注: 預設情況下,自動模式將對密集資料使用預排序,並且預設對稀疏資料進行正常排序。 在稀疏資料上將presort設定為true會引發錯誤。(三)、屬性Attributes說明1、feature_importances_ : array, shape = [n_features]------------輸出特徵的重要性,越大越重要2、oob_improvement_ : array, shape = [n_estimators]---------損失函式的提升3、train_score_ : array, shape = [n_estimators]-------4、loss_ : LossFunction5、init : BaseEstimator------即我們的初始化的時候的弱學習器,擬合對應原理篇裡面的f0(x),如果不輸入,則用訓練集樣本來做樣本集的初始化分類迴歸預測。否則用init引數提供的學習器做初始化分類迴歸預測。一般用在我們對資料有先驗知識,或者之前做過一些擬合的時候,如果沒有的話就不用管這個引數了。6、estimators_ : ndarray of DecisionTreeRegressor, shape = [n_estimators, loss_.K](四)、Methods1、apply(X)-------將集合中的樹應用於X,返回葉索引。注:Parameters: X : array-like or sparse matrix, shape = [n_samples, n_features]Returns: X_leaves : array_like, shape = [n_samples, n_estimators, n_classes]2、decision_function(X)------計算決策樹Parameters: X : array-like or sparse matrix, shape = [n_samples, n_features]Returns: score : array, shape = [n_samples, n_classes] or [n_samples]3、feature_importances_-------------返回特徵重要性4、fit(X, y, sample_weight=None, monitor=None)----擬合the gradient boosting model.5、get_params(deep=True)6、n_features7、predict(X)------預測函式8、predict_log_proba(X)--------預測概率的log值9、predict_proba(X)-----------預測概率10、score(X, y, sample_weight=None)-----返回平均精度11、set_params(**params)12、staged_decision_function(X)13、staged_predict(X)15、staged_predict_proba(X)實戰部分見下一博文