决策树算法 python实现

来源:互联网 发布:原生js 触发事件 编辑:程序博客网 时间:2024/06/09 14:46

lz最近在研究机器学习十大算法中的决策树算法(decision tree dt),这是一种用于分类的算法。首先需要有具体的数据集,数据集中包含很多的特征属性和具体的类的判别。

一、信息熵和信息增益

信息熵是用于衡量样本集中纯度的一种常用的指标。假定当前样本集d中第k类样本所占的比例为pk,则d的信息熵为   公式


并且信息熵越小,则其纯度越高。

假定离散属性a有v个可能取值的属性,若使用a来对样本集d进行划分,会产生v个分支点,其中第v个分支点包含了d中所有在属性a上取值为av的样本,可以根据上述公式来计算dv的信息熵。同时再考虑各个分支节点的权重,即此分支节点在总体属性上的一个出现情况。这样就可以得到信息增益的概念gain(d,a)。它 的表示如下:


一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”比较大,因此,可用信息增益进行决策树的属性划分选择,也就是选择各个属性的信息增益越大者,则作为当前节点下的属性划分标准。著名的id3决策树算法就是采用这种方法来进行属性划分的。

以下给出一个案例,我们通过一步步的方式来向大家展示如何用信息增益进行决策树的决策的。

首先是数据集:

[[1,1,yes],

 [1,1,yes],

 [1,0,no],

 [0,1,no],

 [0,1,no]

]

这个数据集的前两列表示特征属性0和1,最后一列的yes和no表示的是分类结果,那么我们首先对最后一列分类结果计算信息熵。


然后分别对特征属性0和1进行信息增益值的计算。

原创粉丝点击