gbdt和xgboost的调参模板

本文详细介绍了如何使用Python进行GBDT(Gradient Boosting Decision Tree)和XGBoost的调参过程,包括使用GridSearchCV进行交叉验证来寻找最优参数。涉及的调参参数包括树的数量(n_estimators)、最大深度(max_depth)、最小分裂值(min_samples_split)、每个叶子的最小样本数(min_samples_leaf)、最大特征数(max_features)和子采样率(subsample)。
#Import libraries:
import pandas as pd
import numpy as np

import xgboost as xgb #XGBOOST
from xgboost.sklearn import XGBClassifier

from sklearn.ensemble import GradientBoostingClassifier  #GBDT 

#交叉验证和寻找最优参数的库
from sklearn import cross_validation, metrics   
from sklearn.grid_search import GridSearchCV  


import matplotlib.pylab as plt
from matplotlib.pylab import rcParams
rcParams['figure.figsize'] = 12, 4


#读数据
train = pd.read_csv('data.csv')
#目标和数据ID
target = 'Disbursed'
IDcol = 'ID'



#GBDT模型训练和特征重要性提取,以及利用交叉验证寻找最优的 树的数量 的参数
#参数解释 :alg 模型  dtrain训练数据 predictors训练数据里面的特征维度  performCV 是否用交叉验证(第一次训练设为True,
#找到最优的参数以后,后面改为false,在传入模型的时候设置树的个数)
#cv_folds 交叉验证分组数  printFeatureImportance 输出特征重要性
def modelfitGBDT(alg, dtrain, predictors, performCV=True, printFeatureImportance=True, cv_folds=5):
    #Fit the algorithm on the data
    alg.fit(dtrain[predictors], dtrain['Disbursed'])
        
    #Predict training set:
    dtrain_predictions = alg.predict(dtrain[predictors])
    dtrain_predprob = alg.predict_proba(dtrain[predictors])[:,1]
    
    #Perform cross-validation:
    if performCV:
        cv_score = cross_validation.cross_val_score(alg, dtrain[predictors], dtrain['Disbursed'], cv=cv_folds, scoring='roc_auc')
    
    #Print model report:
    print "\nModel Report"
    print "Accuracy : %.4g" % metrics.accuracy_score(dtrain['Disbursed'].values, dtrain_predictions)
    print "AUC Score (Train): %f" % metrics.roc_auc_score(dtrain['Disbursed'], dtrain_predprob)
    
    if performCV:
        print "CV Score : Mean - %.7g | Std - %.7g | Min - %.7g | Max - %.7g" % (np.mean(cv_score),np.std(cv_score),np.min(cv_score),np.max(cv_score))
        
    #Print Feature Importance:
    if printFeatureImportance:
        feat_imp = pd.Series(alg.feature_importances_, predictors).sort_values(ascending=False)
        feat_imp.plot(kind='bar', title='Feature Importances')
        plt.ylabel('Feature Importance Score')

#随便试着训练一下
predict
### GBDT算法在MATLAB中的实现 梯度提升决策树(Gradient Boosting Decision Tree, GBDT)是一种强大的集成学习方法,广泛应用于回归分类任务中。尽管GBDT最初是在Python库如XGBoost、LightGBMCatBoost中得到了广泛应用,但在MATLAB中也有相应的工具箱支持。 #### MATLAB内置支持 MATLAB提供了`fitensemble`函数来构建基于弱学习器的强学习器集合[^5]。此函数可以用来训练GBDT模型,具体来说可以通过设置`Method`参数为 `'LSBoost'` 来实现梯度提升回归树。对于分类任务,则可以选择 `'AdaBoostM1'` 或其他适合的方法[^6]。 以下是使用 `fitensemble` 函数的一个基本示例: ```matlab % 加载样本数据 load carsmall X = [Weight Horsepower]; % 特征变量 Y = MPG; % 响应变量 % 训练GBDT模型 TreeSize = 100; % 设置树的数量 learners = templateTree('MaxNumSplits',2); % 定义基础学习器模板 model = fitensemble(X,Y,'LSBoost',TreeSize,learners); % 可视化损失随迭代次数的变化情况 figure; plot(resubLoss(model,'Mode','Cumulative')); xlabel('Number of Trees'); ylabel('Training Loss'); title('Resubstitution Loss vs Number of Trees'); % 预测新数据点 newData = [3000, 150]; predictedValue = predict(model,newData); disp(['Predicted value: ', num2str(predictedValue)]); ``` 这段代码演示了如何利用汽车里程数的数据集创建一个简单的GBDT回归模型,并预测一辆新车可能达到的燃油效率。 #### 外部资源与扩展包 除了MATLAB自带的功能外,还有第三方开发者贡献了一些更高级别的GBDT实现方式或者接口绑定给MATLAB调用外部程序比如C++编写的高性能版本。如果需要更高性能或其他特性,可考虑安装额外插件或依赖项[^7]。 另外值得注意的是,在实际应用当中为了获得最佳效果往往还需要调整多个超参数例如最大深度(`MaxDepth`)、最小叶节点数目(`MinLeafSize`)等等[^8]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值