[数据挖掘] 决策树

数据挖掘--决策树 待更新 简介信息熵理解:决策树的优劣主要问题解决方案ID3算法简介训练过程信息增益的计算如何划分数据简介决策树, 举两个栗子:网络上各种心理测试的题, 根据你选的答案, 跳到另一题, 最后得出你是什么性格的人.图灵测试, 通过设计各种问题来问跟你聊天的人, 在20 个问题以内, 你来判断跟你聊天的是机器人还是人.以上, 都是决策树的一种形式, 看图就懂:判...
摘要由CSDN通过智能技术生成

简介

决策树, 举两个栗子:

  • 网络上各种心理测试的题, 根据你选的答案, 跳到另一题, 最后得出你是什么性格的人.
  • 图灵测试, 通过设计各种问题来问跟你聊天的人, 在20 个问题以内, 你来判断跟你聊天的是机器人还是人.

以上, 都是决策树的一种形式, 看图就懂:
在这里插入图片描述

  • 判断年龄,->判断性别->是谁

从根节点, 一步一步判断(决策过程), 走到叶子节点得到一个确定的分类

  • 也可以说是通过一步一步获取更多信息 来不断降低事件的不确定性(信息熵)

信息熵

理解:

物理的: 判断空间的混乱程度, 越混乱, 熵值越大
信息熵: 用来衡量事务的不确定性, 事务越不确定, 熵值越大; 随机变量不确定性的度量.
计算公式:
在这里插入图片描述

  • xi 为最后分类的类别
  • p(xi) 为: 第 i 个类别出现的次数 / 总次数
  • 其中 - 号实际意义不大, 是为了把结果取正, log 的是在p(xi) = 1 时, 信息熵最小为0

决策树的优劣

  • 优点:
    1. 复杂度不高, 结果易理解
    2. 过程直观
    3. 只需要一次训练, 存储在磁盘可之后多次使用
  • 缺点:
    1. 可能产生过度匹配(过拟合)问题
  • 使用数据:标称数据或数值数据类型

主要问题

  • 如何更快的得到最后的分类结果, 即如何使决策树的层数最少?
  • 更进一步阐述问题:
    1. 决策树主要需要解决的问题: 每一个节点的选择, 即: 选择什么问题来使你获得更多的信息, 更有效的降低事物的熵.
    2. 如何去掉不必要的分支, 使决策树更小, 即剪枝

解决方案

  • ID3算法
    信息增益
  • C4.5算法
    信息增益率
  • CART算法
    基尼系数

(在此, 我主要讨论ID3算法, 并且只讨论如何选择节点, 不管剪枝问题, 待更新…)

ID3算法

简介

  • id3算法采用信息增益来选择节点
  • 信息增益: 假如当前需分类事务的熵为 0.9, 在得到一个信息后(向下经过一个节点之后), 再次计算此时的熵为 0.4, 那么, 选择该节点的信息增益为 0.9-0.6 = 0.4
  • 只能用标称型数据, 若是数值型需要给数据划分

训练过程

输入: 数据特征及其所属类别
输出: 一棵决策树
此处我们选择的归纳偏好为: 当只有一个属性无法划分, 而存在多个标签时, 选择最多的标签作为最终结果
算法: 采用递归的形式构造, 即从根节点开始, 不断进入子树递归构造
在这里插入图片描述
代码:

def create_tree(dataSet, labels):
   classList = [exam[-1] for exam in dataSet]
   # 1. 若所有的类别相同, 到达叶子节点, 停止划分,
   if classList.count(classList[0]) == len(classList):
       return classList[0]

   # 2. 遍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值