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

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个,因此对应的p1=2/3p2=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.对于属性经验:有两个取值{有,无}分别为S1S2

        信息熵:

        信息增益:

        分裂信息:

         信息增益率:

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

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

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

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

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

 

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

性别

学历

经验

是否录用

大专

大专

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

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

性别

学历

经验

是否录用

本科

本科

本科

本科

本科

本科

本科

1).计算数据集学历的信息熵,共7个数据,其中录用的有5人,不录用的有2人。

2). 计算各个属性A对数据集S的信息熵、信息增益、属性的分裂信息及信息增益率

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

        信息熵:

        信息增益:

        分裂信息:

         信息增益率:

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

        信息熵:

        信息增益:

 

        分裂信息:

         信息增益率:

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

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

性别

学历

经验

是否录用

研究生

研究生

研究生

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

划分结果如下图所示:

 

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

 

  • 10
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值