GBDT vs RandomForest

GBDT和随机森林都是集成算法,主要区别在于GBDT是boosting,通过减少偏差来提升模型性能,而随机森林是bagging,通过减少方差。GBDT适合稠密数据,对异常值敏感,而随机森林对异常值不敏感,适用于高维特征。两者在特征归一化、基模型选择及优化策略上有不同考虑,如GBDT通常用回归树,而随机森林可用分类或回归树。

1 随机森林:

  • bagging算法,可并行
  • 适用于高维特征的数据,特征少的时候不适用
  • 随机性体现在两个方面:
    1:每个节点都随机从M个特征中选择m个特征,m应远小于M
    2:随机从样本中以有放回抽样的方式,抽样N次,形成训练集。未抽到的作为验证集。
  • 每棵树都完整成长而不会剪枝。
  • 对异常数据比较鲁棒
  • 适用于分类,回归效果可能不好,因为他无法输出连续的数据。
  • 减少的是模型的方差

2 GBDT

GBDT(Gradient Boosting Decision Tree),即梯度提升决策树。

  • boosting 算法,学习前一轮的残差
  • 每一轮训练一棵树,训练轮数=基模型个数
  • 训练时串行,速度慢。
  • 预测阶段的计算速度快,可并行。
  • 在分布稠密的数据集上,泛化能力和表达能力都很好。
  • 不适用于高维数据或者稀疏数据。
  • 决策树可解释性好。
  • 模型拟合效果好,减少的是偏差
  • 因为会过拟合,所以对异常数据比较敏感
  • 为防止过拟合,会控制控制树的深度

3 异同点

  1. 相同点:
  • 都是集成算法
  • 基模型都是树
  1. 不同点:
  • 随机森林是bagging,可并行; GBDT是boosting,需串行
  • 随机森林是投票,GBDT是累加
  • 随机森林对异常值不敏感,GBDT对异常值比较敏感
  • 随机森林减少模型方差,GBDT减少模型偏差

问题汇总:

GBDT减少偏差 vs 随机森林减少方差

GBDT
GBDT降低偏差的原理:
GBDT每一轮拟合的是前一轮的残差,所以可以更好的拟合原数据,有效减少偏差。
因为GBDT拟合效果好,为了防止过拟合,我们就选择深度较浅的树,选择更简单的分类器。

随机森林
随机森林降低方差的原理:
假设 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1,X2,...,Xn独立同分布,均服从正太分布 N ( μ , σ ) N(\mu,\sigma) N(μ,σ),请问 X ‾ = X 1 + X 2 + . . . + X n n \overline{X}=\frac{X_1+X_2+...+X_n}{n} X=nX1+X2+...+Xn服从什么分布?
答: X ‾ \overline{X} X的分布为 N ( μ , σ / n ) N(\mu,\sigma/\sqrt{n}) N(μ,σ/n )。均值后,方差变小了,这就是随机森林减少方差的原理。
因为随机森林可以有效降低方差,所以我们希望每棵树的拟合效果强一些,预测的偏差小一些,所以我们会倾向于选择深度比较深的树。所以随机森林算法中,会让树完全生长。

特征归一化问题

参考资料
chentq说xgboost不需要做归一化:https://github.com/dmlc/xgboost/issues/357
xgboost不要做归一化的解释:https://stats.stackexchange.com/questions/353462/what-are-the-implications-of-scaling-the-features-to-xgboost
机器学习 需要和不需要做特征归一化的情况总结:https://blog.csdn.net/baoyan2015/article/details/111177161

randomforest不用做特征归一化

当需要计算距离的时候,或需要更新的梯度跟特征值有关系的时候需要做归一化。否则,就不用。比如KNN,SVM,神经网络模型就需要做归一化,而决策树,朴素贝叶斯就不用
randomforest的基模型是树,且树跟树之间是独立的。构造树时,特征分割点的选择,与特征值的大小无关,只跟特征的分布有关。所以不需要做归一化。

xgboost要不要归一化?

xgboost的基模型也是树,不过树之间不是独立的,当前树学习的是上一轮的残差。xgboost使用的是梯度提升方法。损失函数中增加了正则化项,即叶子节点权重的 L 2 L_2 L2<

### 随机森林和梯度提升决策树的原理 - **随机森林**:采用bagging思想,即bootstrap aggregation,通过在训练样本集中进行有放回的采样得到多个采样集,基于每个采样集训练出一个基学习器,再将基学习器结合。在对决策树进行bagging的基础上,随机森林在决策树的训练过程中引入了随机属性选择。传统决策树在选择划分属性时是在当前节点属性集合中选择最优属性,而随机森林则是先对结点随机选择包含k个属性的子集,再选择最优属性,k作为一个参数控制了随机性的引入程度[^2]。 - **梯度提升决策树**:是一种boosting算法,其工作机制为先从初始训练集训练出一个基学习器,然后根据基学习器的表现对训练样本分布进行调整,使得先前的基学习器做错的训练样本在后续获得更多关注(增加错误样本权重),然后基于调整后的样本分布训练下一个基学习器,如此重复,直到基学习器达到指定的数量T时,最终将T个基学习器进行加权结合得出预测结果。GBDT使用的决策树通常是CART回归树[^1][^3]。 ### 随机森林和梯度提升决策树的对比 - **相同点**: - 都是由多棵树组成。 - 最终的结果都是由多棵树一起决定[^3]。 - **不同点**: - **集成方式**:随机森林是bagging思想,通过有放回采样和随机属性选择生成多棵树;GBDT是boosting思想,通过迭代训练基学习器并调整样本分布来生成多棵树[^2][^3]。 - **样本权重**:随机森林的每棵树训练时样本权重是一致的;GBDT会根据前一个基学习器的表现调整样本权重,让错误样本在后续训练中获得更多关注[^3]。 - **树的类型**:随机森林的基学习器一般是决策树算法,也可以是神经网络;GBDT使用的决策树通常是CART回归树[^1][^3]。 - **泛化能力**:随机森林能体现样本集之间的差异性,提高最终预测结果的泛化能力;GBDT在减少偏差方面表现较好,但可能过拟合,需要适当调整参数来提高泛化能力。 ### 随机森林和梯度提升决策树的应用 - **随机森林**:在分类、回归、特征重要性评估等方面都有广泛应用。例如,在图像分类中可以用于识别图像中的物体类别;在金融领域可以用于信用风险评估;还可以用于评估各特征在模型中的重要性,帮助进行特征选择[^1]。 - **梯度提升决策树**:可用于解决回归与分类问题。在回归问题上,既能用于线性回归,也能用于非线性回归;在分类问题上,可用于二分类问题,通过设定阈值,大于阈值为正例,反之为负例。在实际应用中,如人力资源分析与员工流失预测等场景也有应用[^1][^3][^4]。 以下是使用Python的`sklearn`库实现随机森林GBDT分类的简单代码示例: ```python from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier() rf.fit(X_train, y_train) y_pred_rf = rf.predict(X_test) accuracy_rf = accuracy_score(y_test, y_pred_rf) print(f"随机森林准确率: {accuracy_rf}") # 创建GBDT分类器 gbdt = GradientBoostingClassifier() gbdt.fit(X_train, y_train) y_pred_gbdt = gbdt.predict(X_test) accuracy_gbdt = accuracy_score(y_test, y_pred_gbdt) print(f"GBDT准确率: {accuracy_gbdt}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值