上一篇:k-近邻算法
1. 简单理论介绍
决策树的类型有很多,有CART、ID3和C4.5等,其中CART是基于基尼不纯度(Gini)的,这里不做详解,而ID3和C4.5都是基于信息熵的,它们两个得到的结果都是一样的,本次定义主要针对ID3算法。下面我们介绍信息熵的定义。
1.1 熵
设D为用类别对训练集进行的划分,则D的熵(entropy)表示为:
其中m表示训练集中标签种类的个数;pi表示第i个类别在整个训练集中出现的概率,可以用属于此类别元素的数量除以训练集合元素总数量作为估计;-log2(p(i))表示为事件i的不确定程度,称为i的自信息量。熵的实际意义表示是D中训练集的标签所需要的平均信息量。
1.2 信息增益
现在我们假设将训练集D按特征A进行划分,则A对D划分的期望信息为:
其中v表示特征A所取值的个数,|Dj|表示当特征A为j时的训练集元素的个数,|D|表示训练集所有元素的总数。
则用特征A划分训练集D后所得的信息增益(gain)为:
1.3 ID3决策树原理
从信息论知识中我们知道,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益度量特征选择,选择分裂后信息增益最大的特征进行分裂。下面我们继续用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。为了简单起见,我们假设训练集合包含10个元素。
其中s、m、l分别表示小、中、大。
先计算总的信息熵。总共有10个元素,标签类别有两种,一种是“yes”(7条记录),表示账号为真实,另一种是“no”(3条记录),表示账号不真实。则总的熵为:
设L、F、H和R表示日志密度、好友密度、是否使用真实头像和账号是否真实,下面分别计算各特征的信息增益。
以计算日志密度为例,对于特征日志密度,其取值有s(3条记录)、m(4条记录)和l(3条记录)三种;在日志密度为s的条件下,账号为真实的记录有1条,账号不真实的记录有2条;在日志密度为m的条件下,账号为真实的记录有3条,账号不真实的记录有1条;在日志密度为l的条件下,账号为真实的记录有3条,账号不真实的记录有0条。
用特征日志密度划分训练集D后所得的信息增益(gain)为: