本帖最后由 不二晨 于 2018-6-29 09:59 编辑
Decision Tree决策树是很多集成学习算法的基础,了解决策树的原理和构造方法有助于更好的理解一些集成学习算法,比如Random Forest等。 决策树原理简介机器学习中,决策树是一种预测模型,代表的是一种对象特征属性与对象目标值之间的一种映射关系,树中的每一个节点表示对象属性的判断条件,其分支表示符合节点条件的对象。树的叶子节点表示对象所属的预测结果。显然使用决策树可以实现分类。 我的理解树是一种数据结构,它可以理解为一棵倒着长的树:上面只有一个树根,越往下分支越多,最后可以细分到各个叶子。可以想象一只蚂蚁正在树根上,想要往树叶上爬,那么它每当遇到一个树杈时(姑且假设所有的分支都只有两个树杈),都需要考虑从哪个树杈继续爬,而这个“考虑”,就是一个决策的过程,选择不同的树杈,必然会导致蚂蚁最终爬上不同的树叶,当然,在从树根爬到树叶的过程中,可能会遇到多个这样的树杈,树杈越多,我们认为这棵树越深。 返回到实际的决策树中,不同的叶子代表不同的结果,每个分支节点代表着一次决策,一棵决策树就是由这些节点+叶子构成的。下面我画个图简单说明一下:
花钱、学习这些节点都是属性,属性的值不同会导致不同的分支,产生不同的分类结果。可以把这些分支节点都认为是特征,每一个特征有两个不同的值(也有可能是多个值,比如说颜色属性),那么这些特征是如何被选择出来的呢,这就涉及到一个核心知识点:信息增益。要明白这个信息增益,首先需要知道什么是熵,熵是香农在信息论定义的一个概念,我最早是在计算机网络这门课上接触的,熵在信息论中的概念是接收的每条消息中包含的信息的平均量。记得当时因为少加一个常数导致自己丢了10分的大题。说白了,熵可以理解为代价,做一件事时,代价越高,我们认为越不好(姑且先这样认为,是不是高回报什么的先不说)。这个概念映射到机器学习中,就指的数据的不确定性。在找最佳特征时,就要找熵最小的特征,这样可以使数据的不确定性降到最低(极端点看,如果一个数据集中只有一个类,那么它的不确定性是最小的)。这里写一下熵的计算公式方便大家理解:
Ent(D)=−∑k=1npklog2pkEnt(D)=−∑k=1npklog2pk
其中,pk为样本集合中第k类样本所占的比例。假设属性a有V个可能的取值,如果使用a来进行划分,会产生V个分支节点,第i个分支节点包含了D中所有在属性a上取值为ai的样本,记为Dv,此时可以根据熵的计算公式计算出Dv的熵值,再考虑到不同节点的分支所包含的样本数不同,给分支节点再赋予权重Dv/D,从而可以得到“信息增益”,公式如下:
Gain(D,a)=Ent(D)−∑v=1VDvDEnt(Dv)Gain(D,a)=Ent(D)−∑v=1VDvDEnt(Dv)
信息增益越大,意味着用这个属性来划分越好。说得再具体一点,信息增益可以理解为类别熵减去属性熵,表示了不确定性减少的程度,如果一个属性(特征)的信息增益越大,说明利用该属性对数据进行划分后样本的不确定性会减少。
根据公式,我们可以算出每个特征(属性)的信息增益,然后将当前算出来的最大的信息增益的特征最为第一个节点,接着对剩下的特征做同样的计算与操作,这样迭代就可以生成一颗决策树了。其实依据这种依据信息增益来生成决策树的算法就是大名鼎鼎ID3算法。
代码实现#not yet for now~#目前没有合适的数据集,等找到再更新
【转载】原文地址:https://blog.csdn.net/fbygg/article/details/80741489
|