目录
1.梯度提升决策树(GBDT)
GBDT在Adaboost上做了优化/拓展,在Adaboost算法中,损失函数为平方损失或指数函数,因此求解损失函数的最小值问题会非常简单。但如果损失函数为更一般的函数,目标值的求解就会相对复杂很多,GBDT就是为了解决这个问题,利用损失函数的负梯度值作为该轮基础模型损失值的近似,并使用这个近似值取拟合下一轮模型。
梯度提升决策树,属于boosting的集成学习,通过组合多棵决策树来构建更强大的模型。梯度提升决策树采用逐步增强(减少残差)的方式来构建树模型,每一棵树的构建都依赖于前一棵树的结果。
2. 构建过程
1. 初始化模型:初始化一个基本的回归树(或分类树)作为初始的弱学习器。通常情况下,回归问题,输出值可以为平均值;分类问题,输出值可以为最多的类别。
2. 计算残差: 使用初始模型进行预测,并计算预测值与实际值之间的残差。残差即为实际值与当前模型预测值之间的差异。
3. 拟合残差:构建一个新的回归树(或分类树)拟合残差。这意味着新的树将学习如何修正上一轮模型的预测误差。
- 训练树的过程:
- 计算每个可分割特征的增益,选择增益最大分割点
- 创建叶节点,再次计算可分割特征增益,选择最大增益分割点
- 循环直到达到停止条件(如深度限制和其他约束)
4. 更新模型:将新构建的树的预测结果与之前的模型进行组合,以得到一个更强的模型。这通常是通过将新树的预测结果与之前模型的预测结果相加(对于回归问题),或者进行加权投票(对于分类问题)来实现的。
5. 迭代: 重复步骤2至步骤4,直到满足停止条件,例如达到最大迭代次数、模型性能不再提高等。
6. 最终模型:将所有模型的预测结果进行组合,以得到最终的模型。对于回归问题,通常是将所有模型的预测结果相加;对于分类问题,通常是进行加权投票。
3.非平衡数据处理
针对数据严重不平衡的问题,SMOTE算法被提出,即合成少数过采样技术,它是基于随机所采样算法的一种改进方案。
SMOTE算法
通过人工模拟添加新样本到数据集中,达到使原来数据平衡的目的。
1. 选择离样本x最近的k个同类样本(这里我们假设为5)
2. 从k个同类样本中,随机挑选m个样本,m可以理解为一个样本生成几个新样本。(假设m为2,则生成两个新样本,m可以大于k)
3. 对于m个随机选中的样本,使用公式构造新的样本点。公式为
假设,蓝红点的数量为(100,10),通过smote算法,m=2的情况下,会生成20个模拟红点,再加上原来的10个,红点数量就变成了30个,样本就平衡了很多,因此m的选择依赖于最终所希望的平衡率。
4. GBDT优点
1. 高预测性能:较高的预测性,尤其是在处理结构化数据和非线性问题时
2. 灵活性:适用于各种类型的数据,包括数值型和类别型特征,以及大多数类型的预测任务,如回归、分类和排序等。
3. 特征组合: GBDT能够发现特征之间的非线性关系和交互作用,从而提高模型的泛化能力。
4. 对缺失值的处理: 自动处理缺失值,无需对数据进行额外的处理。
5. 可解释性:相对于某些黑盒模型(如深度神经网络),GBDT通常具有更强的可解释性,因为它们由多个决策树组成,每个决策树都可以解释为一系列简单的规则。
5. GBDT缺点
1. 计算开销:由于GBDT是一个串行算法,每个树都需要在上一轮模型的基础上进行拟合,因此训练和预测的速度较慢,尤其是当数据集很大时。
2. 不适用于高维稀疏数据:GBDT对于高维稀疏数据的处理效果通常不如线性模型或者基于正则化的方法。
3. 不支持在线学习:GBDT通常需要一次性加载全部数据进行训练,不支持在线学习或者增量学习。
为了优化GBDT,XGBoost诞生!