决策树(decision tree)

决策树是一个预测模型,也是一个分类器,代表对象属性和对象值的一种映射关系。决策树适用于小数据的分类。

决策树例子图:公司招聘


决策树(decision tree)_第1张图片
图1 招聘决策树

决策树通过不断选取特征属性作为根节点,通过判断输出结果分类,再根据下一个特征属性再分类,直到某一个子节点中只有一种结果或者不再有特征属性用来分类,如果用于分类的特征属性用完,还有某一子节点未得到单一结果,则根据少数服从多数原则来判别属于哪一类结果。那么如何来选取特征属性先作为根节点来进行分类,这就需要了解关于信息熵的概念。


信息熵:用来度量信息的一个概念,可理解为离散随机事件发生的概率。

信息熵(Entropy)的计算:


图2 信息熵计算

如何构建决策树,这里讨论两种算法:ID3和C4.5

ID3算法:

ID3算法通过信息增益(Information Gain)来选取特征属性进行分类,通过选取信息增益最大的特征属性先作为根节点来分类。如何计算信息增益:

信息增益计算方法:


图3 信息增益计算

为了防止建立的决策树出现过度拟合(Overfitting)现象,需要对决策树进行剪枝操作,有先剪枝和后剪枝。

ID3算法存在一些缺陷:

(1) 信息增益的计算依赖于特征数目较多的特征,而属性取值最多的属性并不一定最优。

(2) ID3是非递增算法。

(3) ID3是单变量决策树(在分枝节点上只考虑单个属性),许多复杂概念的表达困难,属性相互关系强调不够,容易导致决策树中子树的重复或有些属性在决策树的某一路径上被检验多次。

(4) 抗噪性差,训练例子中正例和反例的比例较难控制。


C4.5算法

基于上述ID3的缺陷,C4.5进行了一些优化。

C4.5算法通过计算信息增益率(Information Gain Ratio)来选取特征属性进行分类,增益比率度量是用前面的增益度量Gain(S,A)和分裂信息度量SplitInformation(S,A)来共同定义的计算方法如下:


决策树(decision tree)_第2张图片
图4 信息增益率计算


C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:

(1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;

(2) 在树构造过程中进行剪枝;

(3) 能够完成对连续属性的离散化处理;

(4) 能够对不完整数据进行处理。

C4.5算法优点:产生的分类规则易于理解,准确率较高。

C4.5算法缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。


为了便于新手理解,接下来对上面的公式进行例子计算:

假设以下是招聘的一些实例:


决策树(decision tree)_第3张图片
图5 招聘部分实例

先使用ID3算法中的信息增益来计算,首先不加任何特征属性的,计算录用的信息熵,由图5可知,一共有6个实例,录用为“是”的占5个,录用为“否”的占一个,所以“是”概率为5/6,“否”的概率为1/6,根据图2中信息熵的计算公式可得录用的信息熵为:

图 6

现在分别来计算加入特征属性后“录用”信息熵的值,计算加入“实习经历”后,根据是否有实习经历来计算的“录用”的信息熵值,由图5可知在6个实例中“实习经历”中为“有”的占3个,为“无”的占3个,所以在“实习经历”中“有”和“无”所占的概率都为1/2,在“实习经历”中为“有”中的“录用结果”都为“是”,所以“是”的概率为1,“否”为0,同理,在“实习经历”中为“无”中的“录用结果”为“是”的有2个,为“否”的有1个,所以“是”的概率为2/3,“否”的概率为1/3。所以“实习经历”为“有”的“录用”的信息熵为:

图 7

“实习经历”为“无”的“录用”的信息熵为:


图 8

所以图3式子中:


图 9

所以加入“实习经历”后“录用”的信息增益计算为:

图 10

其他的特征属性信息增益计算与上面相同,计算出每个特征属性的信息增益后,取最大的信息增益的对应的特征属性作为分类根节点。


C4.5算法中采用信息增益率来选取根节点,计算公式如图4,其中需要说明的是分裂信息度量SplitInformation(S,A)的计算,还是以“实习经历”属性来计算,在图5中“实习经历”中分“有”和“无”两种,且分别占1/2,所以计算SplitInformation(S,A)结果为:

图 11

以上为个人理解,如有错误,欢迎大家批评指正。

你可能感兴趣的:(决策树(decision tree))