一周搞懂一个机器学习算法之决策树Decision Tree

Decision Tree

决策树是很多集成学习算法的基础,了解决策树的原理和构造方法有助于更好的理解一些集成学习算法,比如Random Forest等。

  • 原理简介
  • 我的理解
  • 代码实现

决策树原理简介

机器学习中,决策树是一种预测模型,代表的是一种对象特征属性与对象目标值之间的一种映射关系,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。显然使用决策树可以实现分类。

我的理解

树是一种数据结构,它可以理解为一棵倒着长的树:上面只有一个树根,越往下分支越多,最后可以细分到各个叶子。可以想象一只蚂蚁正在树根上,想要往树叶上爬,那么它每当遇到一个树杈时(姑且假设所有的分支都只有两个树杈),都需要考虑从哪个树杈继续爬,而这个“考虑”,就是一个决策的过程,选择不同的树杈,必然会导致蚂蚁最终爬上不同的树叶,当然,在从树根爬到树叶的过程中,可能会遇到多个这样的树杈,树杈越多,我们认为这棵树越深。

返回到实际的决策树中,不同的叶子代表不同的结果,每个分支节点代表着一次决策,一棵决策树就是由这些节点+叶子构成的。下面我画个图简单说明一下:
这里写图片描述

花钱、学习这些节点都是属性,属性的值不同会导致不同的分支,产生不同的分类结果。可以把这些分支节点都认为是特征,每一个特征有两个不同的值(也有可能是多个值,比如说颜色属性),那么这些特征是如何被选择出来的呢,这就涉及到一个核心知识点:信息增益。要明白这个信息增益,首先需要知道什么是熵,熵是香农在信息论定义的一个概念,我最早是在计算机网络这门课上接触的,熵在信息论中的概念是接收的每条消息中包含的信息的平均量。记得当时因为少加一个常数导致自己丢了10分的大题。说白了,熵可以理解为代价,做一件事时,代价越高,我们认为越不好(姑且先这样认为,是不是高回报什么的先不说)。这个概念映射到机器学习中,就指的数据的不确定性。在找最佳特征时,就要找熵最小的特征,这样可以使数据的不确定性降到最低(极端点看,如果一个数据集中只有一个类,那么它的不确定性是最小的)。这里写一下熵的计算公式方便大家理解:

Ent(D)=k=1npklog2pk E n t ( D ) = − ∑ k = 1 n p k l o g 2 p k
其中,pk为样本集合中第k类样本所占的比例。假设属性a有V个可能的取值,如果使用a来进行划分,会产生V个分支节点,第i个分支节点包含了D中所有在属性a上取值为ai的样本,记为Dv,此时可以根据熵的计算公式计算出Dv的熵值,再考虑到不同节点的分支所包含的样本数不同,给分支节点再赋予权重Dv/D,从而可以得到“信息增益”,公式如下:
Gain(D,a)=Ent(D)v=1VDvDEnt(Dv) G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V D v D E n t ( D v )
信息增益越大,意味着用这个属性来划分越好。说得再具体一点,信息增益可以理解为类别熵减去属性熵,表示了不确定性减少的程度,如果一个属性(特征)的信息增益越大,说明利用该属性对数据进行划分后样本的不确定性会减少。

根据公式,我们可以算出每个特征(属性)的信息增益,然后将当前算出来的最大的信息增益的特征最为第一个节点,接着对剩下的特征做同样的计算与操作,这样迭代就可以生成一颗决策树了。其实依据这种依据信息增益来生成决策树的算法就是大名鼎鼎ID3算法。


代码实现

#not yet for now~
#目前没有合适的数据集,等找到再更新
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值