机器学习 —— DecisionTree决策树( 二 )


不同于逻辑斯蒂回归和贝叶斯算法,决策树的构造过程不依赖领域知识,它使用属性选择度量来选择将元组最好地划分成不同的类的属性 。所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构 。
构造决策树的关键步骤是分裂属性 。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯” 。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别 。分裂属性分为三种不同的情况:
1、属性是离散值且不要求生成二叉决策树 。此时用属性的每一个划分作为一个分支 。2、属性是离散值且要求生成二叉决策树 。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支 。3、属性是连续值 。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支 。
构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,它决定了拓扑结构及分裂点的选择 。
属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略 。这里介绍常用的ID3算法 。
ID3算法
划分数据集的大原则是:将无序的数据变得更加有序 。
尽快把不确定的数据变得确定
我们可以使用多种方法划分数据集,但是每种方法都有各自的优缺点 。组织杂乱无章数据的一种方法就是使用信息论度量信息,信息论是量化处理信息的分支科学 。我们可以在划分数据之前使用信息论量化度量信息的内容 。
在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择 。
在可以评测哪种数据划分方式是最好的数据划分之前,我们必须学习如何计算信息增益 。集合信息的度量方式称为香农熵或者简称为熵,这个名字来源于信息论之父克劳德?香农 。

熵: 是>=0的值,越大表示不确定度越大, 越低表示不确定性越低(越确定)
熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义 。如果待分类的事务可能划分在多个分类之中,则符号x的信息定义为:
其中p(x)是选择该分类的概率
为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:
其中n是分类的数目 。
在决策树当中,设D为用类别对训练元组进行的划分,则D的熵()表示为:

机器学习 —— DecisionTree决策树

文章插图
其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计 。熵的实际意义表示是D中元组的类标号所需要的平均信息量 。
现在我们假设将训练元组D按属性A进行划分,则A对D划分的期望信息为:
而信息增益即为两者的差值:
ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂 。下面我们继续用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树 。为了简单起见,我们假设训练集合包含10个元素:
其中s、m和l分别表示小、中和大 。
设L、F和H表示日志密度、好友密度、是否使用真实头像,下面计算各属性的信息增益 。
因此日志密度的信息增益是0.276 。
用同样方法得到F和H的信息增益分别为0.553和0.033 。