概念
决策树(Decision Tree)是一种有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策(基于分类或者回归)规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。
我们来简单了解一下决策树是如何工作的。决策树算法的本质是一种树结构,我们只需要问一系列问题就可以对数据进行分类了。比如说,来看看下面的一组数据集,这是一些列已知物种以及所属类别的数据:
我们现在的目标是,将动物们分为哺乳类和非哺乳类。那根据已经收集到的数据,决策树算法为我们算出了下面的这棵决策树:
假如我们现在发现了一种新物种,它是冷血动物,体表带鳞片,并且不是胎生,我们就可以通过这棵决策树来判断它的所属类别。
可以看出,在这个决策过程中,我们一直在对记录的特征进行提问。最初的问题所在的地方叫做根节点,在得到结论前的每一个问题都是中间节点,而得到的每一个结论(动物的类别)都叫做叶子节点。
决策树算法的核心是要解决两个问题
1.如何从数据表中找出最佳节点或最佳分枝。
2.如何让决策树停止生长,防止过拟合。
决策树是基于训练集数据构建出来的,如果树长的越大分支越细致,则对训练数据的描述越清楚,但是不一定会很好的作用到测试数据中。
构建决策树
接下来讨论如何根据已有的数据集来建立有效的决策树。原则上讲,任意一个数据集上的所有特征都可以被拿来分枝,特征上的任意节点又可以自由组合,所以一个数据集上可以发展出非常非常多棵决策树,其数量可达指数级。在这些树中,总有那么一棵树比其他的树分类效力都好,那样的树叫做”全局最优树“。
全局最优:经过某种组合形成的决策树,整体来说分类效果为最好的模型。
局部最优:每一次分枝的时候都向着更好的分类效果分枝,但无法确认如此生成的树在全局上是否是最优的。
机器学习研究者们开发了一些有效的算法,能够在合理的时间内构造出具有一定准确率的次最优决策树。这些算法基本都执行”贪心策略“,即通过局部的最优来达到我们相信是最接近全局最优(次最优决策树)的结果。
为了要将数据集转化为一棵树,决策树需要找出最佳节点和最佳的分枝方法,而衡量这个“最佳”的指标叫做“不纯度”。 不纯度是基于叶子节点来计算的,所以树中的每个节点都会有一个不纯度,并且子节点的不纯度一定是低于父节点的。 也就是说,在同一棵决策树上,叶子节点的不纯度一定是最低的。
不纯度
决策树的每个根节点和中间节点中都会包含一组数据(工作为公务员为某一个节点)。在这组数据中,如果有某一类标签占有较大的比例,我们就说该节点越“纯”,分枝分得好。
某一类标签占的比例越大,叶子就越纯,不纯度就越低,分枝就越好。
如果没有哪一类标签的比例很大,各类标签都相对平均,则说该节点”不纯“,不纯度高,分枝不好。
分类型决策树在节点上的决策规则是少数服从多数,在一个节点上,如果某一类标签所占的比例较大,那所有进入这个节点的样本都会被认为是这一类别。
具体来说,如果90%根据规则进入节点的样本都是类别0(节点比较纯),那新进入该节点的测试样本的类别也很有可能是0。
但是,如果51%的样本是0,49%的样本是1(极端情况),该节点还是会被认为是0类的节点,但此时此刻进入这个节点的测试样本点几乎有一半的可能性应该是类别1。
从数学上来说,类分布为0和100%的结点具有零不纯性,而均衡分布 50%和50%的结点具有最高的不纯性。如果节点本身不纯,那测试样本就很有可能被判断错误,相对的节点越纯,那样本被判断错误的可能性就越小。
如何计算不纯度
信息熵
信息熵(entropy):信息量的值在信息论中被称为信息熵,是一种信息的度量方式,表示信息的混乱程度,也就是说:信息越有序,信息熵越低(不纯度或者信息量越低)。
问题:现在有32支球队,然后猜出谁是冠军。
如果我们不知道球队的任何信息情况下,我们可以这么猜:
你可能会乱猜那么猜对的几率为1/32。
如果你每猜错一次需要付出一定的代价,则你就会设计方法提升猜你对的几率而减少代价。每次折半猜,将32只球队以此编码为1-32,则第一次你会问,冠军在1-16中,在1-8中吗等等这样折半的猜,那么这样势必会减少猜错的几率,付出较少的代价。
折半猜的话只需要猜log32=5次(底数为2)就可以知道结果啦。
结论:
我们已经知道32只球队猜对的代价为log32=5次,64只球队猜对的代价为log64=6次,以信息论的角度来讲的话,代价为5次或者代价为6次被称为代价为5比特或者代价为6比特。
比特:就是信息论中信息度量的单位也叫做信息量。这个概念是由信息论的创始人香农提出的。
香农在信息论中提出信息量的值会随着更多有用信息的出现而降低。
继续猜冠军的问题:
如果将32只球队的一些往期比赛胜负的数据进行公开,则《谁是冠军》的信息量的值肯定会小于5比特,其精准的信息量的值计算法则为:
公式解释:
在谁是冠军例子中,n就是32,p(xi)就是某只球队获胜的概率,H为信息量的值叫做信息熵。
比特or信息量也就是信息熵的单位。
那么在谁是冠军的例子中每一个球队获胜的概率为1/32,通过折半计算的代价也就是信息熵为5:
5 = - (1/32log1/32 + 1/32log1/32 + ......),因为log1/32=-5(2**-5==1/32)为负数,所以求和后加一个负号表示正的结果5。5就是该事件的信息熵。
如果获知了球队的往期获胜数据公开后,则德国获胜概率为1/4,西班牙为1/5,中国为1/20,则带入香农公式中为:
5 >= - (1/5log1/5 + 1/32+log1/32 + 1/4+log1/4+......)结果值一定小于5。
结论:信息熵和消除不确定性是相关联的。
信息熵越大则表示信息的不确定性越大,猜对的代价大
信息熵越小则表示信息的不确定性越小,猜对的代价小
信息增益
为什么越重要的特征要放在树的越靠上的节点位置呢?
因为我们的分类结果是要从树的根节点开始自上而下的进行分步判断从而得到正确的划分结论。越重要的节点作为树中越靠上的节点可以减少基于该树进行分类的更多的不确定性。
如何衡量决策树中节点(特征)的重要性呢?如何理解特诊的重要性呢?
重要性:如果一个节点减少分类的不确定性越明显,则该节点就越重要。
年龄要比收入可以减少更多见与不见分类结果的不确定性。
使用信息增益衡量特征的重要性。
信息增益:
在根据某个特征划分数据集之前之后信息熵发生的变化或差异叫做信息增益,知道如何计算信息增益,获得计算增益最高的特征就是最好的选择。
信息增益作为决策树的划分依据,决定决策树怎么画,每个特征作为节点存放位置的确定。
信息增益g(D,A)计算公式为:
公式解释:信息增益 = 划分前熵 - 划分后熵