决策树算法要点梳理(摘选)

拜读了博客园的文章后将自己认为比较有用的决策树算法的知识点梳理一下作为备忘,贴上原始链接:
https://www.cnblogs.com/pinard/p/6050306.html#4307680
https://www.cnblogs.com/pinard/p/6053344.html

scikit-learn中决策树使用的分类树算法是CART算法,使用基尼系数来代替信息增益比(基尼系数越小越好),每次仅仅对某个特征的值进行二分,而不是多分,这样CART分类树算法建立起来的是二叉树,而不是多叉树。
对于CART分类树连续值的处理问题,其思想和C4.5是相同的,都是将连续的特征离散化。具体的思路如下,比如m个样本的连续特征A有m个,从小到大排列为a1,a2,…,am,则CART算法取相邻两样本值的平均数,一共取得m-1个划分点,其中第i个划分点Ti表示为:Ti=ai+ai+12。对于这m-1个点,分别计算以该点作为二元分类点时的基尼系数。选择基尼系数最小的点作为该连续特征的二元离散分类点。比如取到的基尼系数最小的点为at,则小于at的值为类别1,大于at的值为类别2,这样我们就做到了连续特征的离散化。要注意的是,与ID3或者C4.5处理离散属性不同的是,如果当前节点为连续属性,则该属性后面还可以参与子节点的产生选择过程。

决策树总结:
看看决策树算法作为一个大类别的分类回归算法的优缺点。这部分总结于scikit-learn的英文文档。
    首先我们看看决策树算法的优点:
    1)简单直观,生成的决策树很直观。
    2)基本不需要预处理,不需要提前归一化,处理缺失值。
    3)使用决策树预测的代价是O(log2m)。 m为样本数。
    4)既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。
    5)可以处理多维度输出的分类问题。
    6)相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释
    7)可以交叉验证的剪枝来选择模型,从而提高泛化能力。
    8) 对于异常点的容错能力好,健壮性高。
    我们再看看决策树算法的缺点:
    1)决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。
    2)决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。
    3)寻找最优的决策树是一个NP难的问题,我们一般是通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。
    4)有些比较复杂的关系,决策树很难学习,比如异或。这个就没有办法了,一般这种关系可以换神经网络分类方法来解决。
    5)如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值