机器学习_决策树_ID3算法_C4.5算法_CART算法及各个算法Python实现

本文介绍了决策树的背景和定义,包括ID3、C4.5和CART算法的原理,如信息熵、信息增益、信息增益率和基尼指数,并提供了Python实现的概述。通过比较这三种算法在构建决策树时的不同之处,阐述了它们在选择最优属性时的策略。
摘要由CSDN通过智能技术生成

下面的有些叙述基于我个人理解, 可能与专业书籍描述不同, 但是最终都是表达同一个意思, 如果有不同意见的小伙伴, 请在评论区留言, 我不胜感激.

参考:

周志华-机器学习

https://blog.csdn.net/xiaohukun/article/details/78112917

https://blog.csdn.net/fuqiuai/article/details/79456971

决策树简介

1. 问题背景

常规方式对样本进行分类, 会导致很大的性能问题, 样本需要不断重复检测每一项属性(属性之间还不能存在相关性), 例如: 人的体重由[年龄, 身高] 决定, 当获得一组样本 [20, 178], 可能我们会先将该数据归到20岁的阶段中, 然后判断身高, 最后判断体重, 我们也有可能先使用身高, 然后使用年龄, 最后判断体重, 排列组合的方式得出预测值, 这种毫无准则的选择判断会导致很大的计算量; 然而决策树使用**信息增益(当前属性对样本的贡献率) **, 根据信息增益从大到小选用对应的属性进行判断, 有针对性的选择可以有效地避免无用的计算, 通过选用合适的样本属性按照特定的规则进行判断, 对样本准确的分类, 现在遇到的问题就是如何构建一棵决策树, 构建出来的决策树还能准确预测结果, 下面将针对决策树定义, 信息量, 建立决策树需要遵守的规则, 优化等问题来讲解.

2. 决策树定义

决策树是基于树结构进行决策, 一棵决策树包含一个Root根节点(里面包含所有测试集, 测试集从Root处出发, 按照一定的决策方式, 不同的决策将导致每个样本最终拥有不同的预测结果), 以及若干内部节点和叶子节点, 叶子节点对应最终的决策结果, 每一个内部节点都是一个属性测试, 从Root到叶子节点的路径就是一个样本的决策过程, 当样本到达叶子节点的时候就是样本的预测结果.
决策树如下图:
Root: 包含所有的样本集
DECISION: 决策方式
Result: 决策结果
在这里插入图片描述

构造决策树

1. 问题背景

构建决策树需要有一个构建规则, 不同的构建规则将导致预测结果的不同, 当然, 不同的数据需要使用不同的构建规则, 这样才能最好地预测出结果, 下面将介绍3中不同的构建规则: 信息增益, 信息增益率, 基尼指数

2. 信息熵

信息熵是度量样本属性对最终预测结果的影响程度, 当某一属性的熵在正常情况下比其他属性的熵要大的时候, 我们就可以先选用该属性优先对样本进行分类(越是影响大的属性越容易影响预测结果, 越容易预测正确).
信息熵方程定义:
在这里插入图片描述
pk: 属性在样例中的比例

使用例子说明:
如下图片, 使用age, income, student, credit属性来判断一个人能否买电脑
在这里插入图片描述
使用buys_computer计算总的信息熵:
buys_computer包含2个子集 {yes, no}, 正例比例: 9/14, 反例比例: 5/14, 最终得到 Info(D)
在这里插入图片描述
同理计算age:
age包含3个子集 {youth, middle_aged, senior}, 分别计算youth, middle_aged, senior各自相对于正反例的比例值, 道理同上, 然后得到 Info_youth(D), Info_middle_aged(D), Info_senior(D).
由于不同子集样本相对于age数目不同, 所以:

Info_age(D) = youth_权重*Info_youth + middle_aged_权重*Info_middle_aged(D) + senior_权重*Info_senior(D)

最终age的信息熵计算结果:
在这里插入图片描述

3. 信息增益(ID3算法)

信息增益: 样本利用某一属性分类之后得到多少样本, 例如: 样本使用age属性分类, Gain(D, age) = 总的熵(即Info(D)) - Info_age(D)
信息增益方程定义:
在这里插入图片描述
V代表属性种类; D^V代表每种属性对应的样本数目;
Ent(D)代表Info(D); |D^v|/|D| 就是属性数目在样本中权重.
下面直接计算Gain(D, age), 计算age相对于总样本D的信息增益
在前面信息熵的计算中, 我们已经得出Info(D), Info_age(D), 按照公式只需做差

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值