机器学习 决策树 集成学习小结

本文总结了决策树的基本概念,包括ID3、C4.5和CART算法,并介绍了集成学习的核心思想——bagging和boosting,特别讨论了adaboost和gbdt。此外,还对比了xgboost与lightgbm的工程实现差异。

机器学习 决策树 集成学习 小结

        最近想把决策树,adaboost,gbdt,xgboost,lightgbm等相关东西整理下,整理成自己的框架,方便记忆,重点在架构。

1. 决策树

        什么是决策树,可以简单理解为做决策的过程,比如你买一件衣服,可能会考虑价格、面料、款式、颜色等几个方面,这些考虑的因素就是决策树的特征,最终你决定是买还是不买,而你先考虑哪些颜色,比如价格> 面料 > 款式 > 颜色,就是决策树需要学习的。

     决策树一般包含三个构成,特征选择、树的构造、树的剪枝。从若干决策树中选取最优的决策树,是一个NP完全问题。

     常用的决策树算法有,ID3 最大信息增益 、C4.5最大信息增益比、CART最大基尼指数。

     1.1 ID3 最大信息增益:(pi * log pi)

      gain = H(D) 原数据集的信息熵  -  H(D / A ) 根据某个属性划分的新数据集的信息熵的和, 选择信息增益gain最大的那个属性

     1.2 C4.5 最大信息增益比:

      gain rate =  gain/属性的取值熵, ID3的改进版。

      属性取值熵是指这个属性有k种类别,每张类别出现的概率是1/k,代入信息熵公式,求出该属性的取值熵。ID3倾向于优先选择类别多的属性,引入属性取值熵就是对类别比较多的属性增加惩罚。

     1.3 CART最大基尼指数 (pi * pi)

      和上述两种方式不一样,ID3和C4.5是选取最佳的属性,而CART是选取最佳属性的最佳分割点(属性+类别/数值),3个属性,每个属性有4个类别,需要计算3*4个基尼指数,选取基尼指数最小的组合(属性+类别)为最佳分割点。

 

 

2. 集成学习理论部分

        “三个臭皮匠,顶个诸葛亮”,可以说是集成学习的核心思想,多个分类器计算结果,最终统一汇总。既然要多个分类器,那就是希望不同分类器输出的结果不同,一般都是采用树模型,像线性模型等就不合适(多个线性模型结果几乎一致)。

       集成学习,主要是bagging并行和boosting串行两种方式,多个模型训练结果融合得到最终结果。

       bagging采用有放回采样方式,每次随机抽取一部分样本来训练模型,每次采样结果对应训练一个分类器,同时多次采样多次训练, 经典算法是随机森林。

        boosting主要是串行,训练完一棵树,再训练下一棵树,有两种经典算法,adaboost和gbdt梯度提升,adaboost可以看成是错题本,每次重点学习之前做错的部分,gbdt关键在于残差,每次模型学习的是之前预测的结果和真实结果之间的差值,叫残差。

     

3.工具 xgboost vs lightgbm

    GBDT是算法,XGBoost是工程实现,LightGbm也是工程实现。

3.1 GBDT VS XGBoost

       GBDT算法是基于CART决策树的,每次迭代学习的都是前t-1棵树预测结果之和与真实值之间的残差,损失函数采用梯度下降方式(一阶),树建立完成后再剪枝(后剪枝),cart评判标准是基于基尼指数和平方误差。

      XGBoost对GBDT做了一系列的优化,损失函数采用二阶泰勒展开(二阶+一阶),目标函数引入正则化(预剪枝),支持并行,默认缺失值处理等,XGBoost的有特定的标准选择最优分类(预测值代入损失函数求最小值,计算分类前后损失函数差值,为评判标准)。 

 

    3.2 XGBoost vs LightGBM

     XGBoost是遵循逐层级(level-wise)模式工作。

     lightGBM在较大的数据集上运行所需的时间较短,是基于树算法遵循逐叶子(leaf-wise)的方式,不过逐叶子可能在较小的数据集上过拟合,但可以通过函数max_depth来调整。

    CatBoost适用于处理类别型数值比较多的情况,不需要对变量one-hot。

 

参考:

《百面机器学习》

《清华大学--数据挖掘 集成学习》视频

从头到尾理解树模型(三):XGBoost及面试常见问题

通俗理解kaggle比赛大杀器xgboost (公式推导)

珍藏版 | 20道XGBoost面试题

XGBoost和LightGBM的比较

机器之心:从基础到实现:集成学习综合教程(附Python代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值