决策树在MLib中的实现解析

决策树作为一种分类回归算法,在处理非线性、特征值缺少的数据方面有很多的优势,能够处理不相干的特征,并且对分类的结果通过树的方式有比较清晰的结构解释,但是容易过拟合,针对这个问题,可以采取对树进行剪枝的方式,还有一些融合集成的解决方案,比如随机森林RandomForest、GBDT (Gradient Boost Decision Tree)等,对于随机森林、GBDT在后面的章节进行介绍

模型的训练过程其实是决策树的构造过程,它采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较,并根据不同的属性值判断从该结点向下分支,进行递归进行划分,直到满足一定的终止条件(可以进行自定义),其中叶结点是要学习划分的类。在当前节点用哪个属性特征作为判断进行切分(也叫分裂规则),取决于切分后节点数据集合中的类别(分区)的有序(纯)程度,划分后的分区数据越纯,那么当前分裂规则也合适。衡量节点数据集合的有序无序性,有熵、基尼Gini、方差,其中熵和Gini是针对分类的,方差是针对回归的。

这里介绍一下常用的熵以及信息增益。

熵代表集合的无序性的参数,熵越大,代表越无序、越不纯。熵的公式如下:

其中c表示类别,是样本集合中属于类别i的概率

在决策树分类中,一般是用信息增益infoGain来作为决策树节点特征属性划分的依据,采用使得信息增益最大的属性作为数据划分的度量依赖。信息增益infoGain定义如下:

其中V(A)代表属性A的分区,S代表样本集合,是S中属性A的值属于v分区的样本集合

决策树的算法实现在学术界有ID3,C4.5,CART等, ID3采用信息增益作为属性选择的度量,参见上面的Gain,这种方式的一个缺点是在计算信息增益时,倾向于选择具有大量值的属性,因此提出了C4.5的基于信息增益率的度量,而CART使用基尼Gini指数作为属性选择的度量,这些算法之间的差别主要包括在训练创建决策树过程中如何选择属性特征,以及剪枝的机制处理。这些算法相关的定义可以参考相关的材料,这里不做介绍了。

Spark MLlib对决策树提供了二元以及多label的分类以及回归的支持,支持连续型和离散型的特征变量。这里的决策树是一颗二叉树的,因此信息增益infoGain就为:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值