gbdt python_GBDT算法之Python调参

本文详细介绍了梯度提升模型(GBDT)在分类和回归任务中的关键参数设置,包括criterion、init、learning_rate、loss、subsample和n_estimators。通过实例阐述了不同参数的作用,并对比了分类与回归模型的异同。
摘要由CSDN通过智能技术生成

梯度提升模型,既可以做分类,在scikit-learn中使用GradientBoostingClassifier类;也可以用于回归,使用GradientBoostingRegressor类。下面我们就来分别介绍这两个部分。

分类

GBDT的分类模型如下:

如上图所示,看上去有很多参数,实际上我们很多都已经见过。下面来介绍主要的几个参数:

1.criterion参数

指特征选择的标准,我们就选择默认即可。

2.init参数

指是否用该参数提供的弱分类器来进行预测,默认为None,即使用原始样本集来进行预测。

3.learning_rate

学习率,指弱分类器的系数。

4.loss

指损失函数的类型,默认为deviance,即使用对数似然函数;也可以选择exponential,即指数损失函数。

5.subsample

指采样的比例,在0-1之间,默认为1,即不采样,使用全部样本;小于1,意味着只有一部分参与了模型的拟合。

6.n_estimators

指弱分类器的个数,默认为100.

回归

接下来,看看GBDT回归模型的参数:

可以看到,回归模型的参数大部分与分类相同,只有损失函数采用的不同。下面我们就来介绍loss参数。

回归模型的损失函数主要有4种,默认为ls(标准差函数)。还有三种分别是lad(绝对损失函数)、huber和quantile(分位损失函数)。

Gradient Boosting Decision Tree(GBDT算法是一种集成学习方法。它通过迭代训练多个决策树模型,并按照一定规则进行加权求和,来提高预测的准确性。 下面是一个使用Python实现GBDT算法的伪代码示例: 1. 导入必要的库: ```python import numpy as np from sklearn.tree import DecisionTreeRegressor ``` 2. 定义GBDT类: ```python class GBDT: def __init__(self, n_estimators=100, learning_rate=0.1, max_depth=3): self.n_estimators = n_estimators # 迭代次数 self.learning_rate = learning_rate # 学习率 self.max_depth = max_depth # 决策树最大深度 self.models = [] # 存储训练好的模型 def fit(self, X, y): residual = y # 初始化残差为y for i in range(self.n_estimators): model = DecisionTreeRegressor(max_depth=self.max_depth) # 创建一个决策树模型 model.fit(X, residual) # 使用当前的残差拟合模型 self.models.append(model) # 将训练好的模型添加到模型集合中 pred = model.predict(X) # 使用当前模型进行预测 residual = y - pred # 计算当前残差 y = pred # 更新y为当前预测值,用于下一轮迭代 def predict(self, X): y_pred = np.zeros(len(X)) # 用于存储预测结果的数组 for model in self.models: y_pred += self.learning_rate * model.predict(X) # 对每个模型进行预测,并按学习率进行加权求和 return y_pred ``` 3. 创建模型并进行训练和预测: ```python gbdt = GBDT(n_estimators=100, learning_rate=0.1, max_depth=3) gbdt.fit(X_train, y_train) # 使用训练集进行训练 y_pred = gbdt.predict(X_test) # 对测试集进行预测 ``` 这样就完成了GBDT算法的一次迭代训练和预测过程。通过增加迭代次数和调整学习率、模型深度等参数,可以进一步优化预测结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值