数据挖掘之C4.5决策树算法

  • Post author:
  • Post category:其他


1.决策树算法实现的三个过程:

  • 特征选择:选择哪些特征作为分类的标准是决策树算法的关键,因此需要一种衡量标准来进行特征的确定,不同的决策树衡量标准不同。例如C4.5决策树就是以信息增益率来作为衡量标准。
  • 决策树的生成:根据所选择的衡量标准不断递归调用计算最后直到整个数据集中的特征不可分为止。决策树是从根节点开始自上而下逐渐生成树状结构。
  • 决策树的剪枝:在决策树学习中,为了尽可能正确分类训练样本,结点划分过程将不断重复,有时会造成决策树分支过多导致过拟合.因此需要剪枝降低过拟合风险。剪枝有预剪枝(边建立决策树边剪枝,就是设立一些规则来防止树过度生长。)和后剪枝(建立决策树后再剪枝让决策树生长成过拟合后再进行剪枝)

2.算法的实现步骤:

输入:数据集(训练集)S及属性A 输出:属性A对训练数据集S的信息增益

  • 先将S作为根节点,其目标属性y有c个类别属性。假设S中

    出现的概率

    ,计算数据集S的信息熵

  • 假设属性A有k个不同取值,因此将S划分为k个子集

    ,

    计算属性A对数据集S的信息熵


  • 计算按照属性A划分S的信息增益

  • 计算属性的分裂信息

    及信息增益率

  • 属性取值数目越大,分裂信息越大,从而抵消了属性取值数目所带来的影响,但增益率准则对可取值数目较少的属性有所偏好,所以应先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性.
  • 将该属性作为决策树的节点,在该节点的子节点上使用剩余属性递归执行①~⑤。
  • 对生成的决策树进行剪枝处理。

3.算法实例

例题:以下是某公司招录人员的信息表,运用C4.5算法构建决策树模型。



性别



学历



学校



经验



是否录用






本科


985







本科

211






研究生


普通院校







大专

普通院校






本科


985







研究生

普通院校






本科


211







大专

普通院校






本科


普通院校







本科

普通院校






本科


211







研究生

211

① 计算数据集S的信息熵

该数据集的样本数为12,目标属性有{是,否}两个取值,其中取值为“是”的有8个,取值为“否”的有4个,因此对应的

p


1=2/3




p


2=1/3


。所以数据集S的信息熵为

② 计算各个属性A对数据集S的信息熵

、信息增益

、属性的分裂信息

及信息增益率

a.对于属性性别:有两个取值{男,女}分别为



,每个取值对应的情况分别为:

男—-9个:其中录取的有6个,不录取的有3个

女—-3个:其中录取的有2个,不录取的有1个

因此

信息熵:

信息增益:

分裂信息:

信息增益率:

b.对于属性学历:有三个取值{大专,本科,研究生}分别为





,每个取值对应的情况分别为:

大专—-2个:其中录取的有0个,不录取的有2个

本科—-7个:其中录取的有5个,不录取的有2个

研究生–3个:其中录取的有3个,不录取的有0个

因此

信息熵:

信息增益:

分裂信息:

信息增益率:

c.对于属性学校:有三个取值{985,211,普通院校}分别为





,每个取值对应的情况分别为:

985——-2个:其中录取的有2个,不录取的有0个

211——-4个:其中录取的有4个,不录取的有0个

普通院校–6个:其中录取的有2个,不录取的有4个

因此

信息熵:

信息增益:

分裂信息:

信息增益率:

d.对于属性经验:有两个取值{有,无}分别为



,每个取值对应的情况分别为:

有—-5个:其中录取的有2个,不录取的有3个

无—-7个:其中录取的有6个,不录取的有1个

因此

信息熵:

信息增益:

分裂信息:

信息增益率:

③ 从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性.

所有属性的平均信息增益:

其中学历和学校的信息增益高于平均水平的属性,两者中增益率最高的是学校。

④ 以学校作为根节点,

按照其他三个属性对属性学校中的985进行划分,



性别



学历



学校



经验



是否录用






本科


985







本科

985


由表可知对属性学校中的

985分支划分后的子节点已经是纯的,因此不再需要继续划分节点。

按照其他三个属性对属性学校中的211进行划分,



性别



学历



学校



经验



是否录用






本科


211







本科

211






本科


211







研究生

211

由表可知对属性学校中的211分支划分后的子节点已经是纯的,因此不再需要继续划分节点。

按照其他三个属性对属性学校中的普通院校进行划分,计算步骤同上:



性别



学历



学校



经验



是否录用






研究生


普通院校







大专

普通院校






研究生


普通院校







大专

普通院校






本科


普通院校







本科

普通院校

1).计算数据集普通院校

的信息熵,共6个数据,其中录用的有2人,不录用的有4人。

2). 计算各个属性A对数据集S的信息熵

、信息增益

、属性的分裂信息

及信息增益率

a.对于属性性别:有两个取值{男,女}分别为


信息熵:

信息增益:

分裂信息:

信息增益率:

b.对于属性学历: 有三个取值{大专,本科,研究生}分别为





信息熵:

信息增益:

分裂信息:

信息增益率:

c.对于属性经验:有两个取值{有,无}分别为

S1




S2


信息熵:

信息增益:

分裂信息:

信息增益率:

从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的属性.

所有属性的平均信息增益:

其中学历信息增益高于平均水平的属性,且增益率最高的也是学历。

⑤ 把学校的子节点中的普通学校节点的子节点设为学历。

以学历为父节点:如图所示:

按照其他两个属性对属性学历中大专的进行划分,



性别



学历



经验



是否录用






大专







大专

由表可知对属性学历中的大专分支划分后的子节点已经是纯的,因此不再需要继续划分节点。

按照其他两个属性对属性学历中本科的进行划分,



性别



学历



经验



是否录用






本科







本科






本科







本科






本科







本科






本科





1).计算数据集学历

的信息熵,共7个数据,其中录用的有5人,不录用的有2人。

2). 计算各个属性A对数据集S的信息熵

、信息增益

、属性的分裂信息

及信息增益率

a.对于属性性别:有两个取值{男,女}分别为


信息熵:

信息增益:

分裂信息:

信息增益率:

b.对于属性经验:有两个取值{有,无}分别为



信息熵:

信息增益:

分裂信息:

信息增益率:

其中经验增益率高于性别,所以学历节点中本科的子节点是经验。

按照其他两个属性对属性学历中研究生的进行划分,



性别



学历



经验



是否录用






研究生







研究生






研究生





由表可知对属性学历中的研究生分支划分后的子节点已经是纯的,因此不再需要继续划分节点。

划分结果如下图所示:

  • 最后总的划分结果如下:



版权声明:本文为hanmengyuan2001原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。