本篇文章主要先从宏观上介绍一下什么是决策树,以及决策树构建的核心思想。

1. 引例

关于什么是决策树(decision tree),我们先来看这么一个例子。假如我错过了看世界杯,赛后我问一个知道比赛结果的人“哪支球队是冠军”?他不愿意直接告诉我,而让我猜,并且每猜一次,他要收一元钱才肯告诉我是否猜对了,那么我要掏多少钱才能知道谁是冠军呢?我可以把球队编上号,从1到16,然后提问:“冠军球队在1-8号中吗?”,假如他告诉我猜对了,我会接着问:“冠军在1-4号中吗?”,假如他告诉我才错了,那么我自然知道冠军在5-8号中。这样只需要五次,我就能知道哪支球队是冠军。

而这背后所隐藏着的其实就是决策树,我们用更为直观的图来展示上面的过程:

由此我们得出,决策树就是降低信息不确定性的过程,你甚至可以将其看成是一个if-then规则的集合。如上图,一开始有16中可能性,接着变成8种,这意味着每次决策我们都能得到更多的信息,减少更多的不确定性。

不过对于熟悉足球的人来说,这样的决策树似乎显得多余了。因为只有少部分的球队有夺冠的希望,而大多数都是没可能夺冠的。因此在一开始的时候就将几个热门的可能夺冠的球队分在一起,将剩余的放在一起,整个决策的效率可能就提高了一个量级。

比如最有可能夺冠的是1,2,3,4这四个球队,其余的夺冠的可能性远远小于这四个。那么一开始就可以分成1-4和5-16,如果是在1-4中,那么后面很快就能知道谁是冠军;退一万步,假如真是在5-16,你同样可以将其按照这样的思路在下一步做决策的时候将其划分成最有可能和最不可能的两个部分。

于是我们发现:若一种划分,一次能使数据的“不确定性”减少得越多(谁不可能夺冠),就意味着该划分能获取更多的信息,而我们就更倾向于采取这样的划分,因此采用不同的划分就会得到不同的决策树。现在的问题就是如何来构建一棵“好”的决策树呢?要想回答这个问题,我们先来解决如何描述的“信息”这个问题。

2. 信息的度量

关于如何定量的来描述信息,几千年来都没有人给出很好的解答。直到1948年,香农在他著名的论文“通信的数学原理”中提出了“信息熵”的概率,才解决了信息的度量问题,并且量化出信息的作用。

2.1 信息熵

一条信息的信息量与其不确定性有着直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,就需要了解大量的信息。相反,如果已经对某件事了解较多,则不需要太多的信息就能把它搞清楚。所以从这个角度来看,可以认为,信息量就等于不确定性的多少。我们经常说,一句话包含有多少信息,其实就是指它不确定性的多与少

于是,引例中第一种划分的不确定性(信息量)就等于“4块钱”,因为我花4块钱就可以解决这个不确定性。当然,香农不是用钱,而是用“比特”(bit)这个概念来度量信息量。一个字节就是8比特。在上面的引例第一种情况中,“谁是冠军”这条消息的信息量是4比特。那4比特是怎么计算来的呢?第二种情况的信息量又是多少呢?

香农指出,它的准确信息量应该是:
H = − ( p 1 ⋅ log ⁡ p 1 + p 2 ⋅ log ⁡ p 2 + ⋯ + p 16 ⋅ log ⁡ p 16 ) H = -(p_1\cdot\log p_1+p_2\cdot\log p_2+\cdots+p_{16}\cdot\log p_{16}) H=−(p1​⋅logp1​+p2​⋅logp2​+⋯+p16​⋅logp16​)

其中 log ⁡ \log log表示以2为底的对数, p 1 , p 2 , . . . , p 16 p_1,p_2,...,p_{16} p1​,p2​,...,p16​分别是这16支球队夺冠的概率。香农把它称为“信息熵(Entropy),一般用符号 H \mathrm{H} H表示,单位是比特。当16支球队夺冠概率相同时,对应的信息熵就是4比特。并且等概率时的信息熵最大,即引例中的信息量不可能大于4.

对于任意一个随机变量 X X X(比如得冠军的球队),它的熵定义如下:
H ( X ) = − ∑ x ∈ X P ( x ) log ⁡ P ( x ) , 其中 log ⁡ 表示以2为底的对数  H(X) = -\sum_{x\in X}P(x)\log P(x),\text{其中$\log$表示以2为底的对数 } H(X)=−x∈X∑​P(x)logP(x),其中log表示以2为底的对数

举个例子:比如在2分类问题中:设 P ( y = 0 ) = p , P ( y = 1 ) = 1 − p , 0 ≤ p ≤ 1 P(y=0)=p,P(y=1)=1-p,0\leq p\leq1 P(y=0)=p,P(y=1)=1−p,0≤p≤1
那么此时的信息熵 H ( y ) H(y) H(y)即为:
H ( y ) = − ( p log ⁡ p + ( 1 − p ) log ⁡ ( 1 − p ) ) H(y)=-(p\log p+(1-p)\log(1-p)) H(y)=−(plogp+(1−p)log(1−p))

其图像如下

我们可以看到,当概率均等( p = 1 − p = 0.5 p=1-p=0.5 p=1−p=0.5)时,信息熵最大,也就是说此时的不确定性最大,要把它搞清楚,所需要的信息量也就越大。

2.2 条件熵

在谈条件熵(condition entropy)之前,我们先来看看信息的作用。

一个事物,内部会存有随机性,也就是不确定性,假定为 U U U;从外部消除这个不确定性唯一的办法就是引入信息 I I I,而需要引入的信息量取决于这个不确定性的大小,即 I > U I>U I>U才行。当 I < U I<U I<U时,这些信息可以消除一部分不确定性,也就是说新的不确定性$U^{\prime}=U-I , 反 之 , 如 果 没 有 信 息 , 任 何 公 式 都 无 法 消 除 不 确 定 性 。 而 ∗ ∗ 所 谓 条 件 熵 , 说 得 简 单 点 就 是 在 给 定 某 种 条 件 ( 有 用 信 息 ) ,反之,如果没有信息,任何公式都无法消除不确定性。而**所谓条件熵,说得简单点就是在给定某种条件(有用信息) ,反之,如果没有信息,任何公式都无法消除不确定性。而∗∗所谓条件熵,说得简单点就是在给定某种条件(有用信息)I 下 , 事 物 下,事物 下,事物U 的 熵 , 即 的熵,即 的熵,即H(U|I)$**。

此处暂时不引入条件熵的确切数学定义,等谈到如何生成决策树的时候再表。

2.3 信息增益

我们在引例中说过:若一种划分能使数据的“不确定性”减少得越多,就意味着该划分能获取更多的信息,而我们就更倾向于采取这样的划分。也是就说,存在某个事物 I I I,它使得 H ( U ∣ I ) H(U|I) H(U∣I)要尽可能的小,即当引入信息 I I I之后 U U U的熵变小了。

而信息增益(information gain)就是 g ( U ∣ D ) = H ( U ) − H ( U ∣ I ) g(U|D)=H(U)-H(U|I) g(U∣D)=H(U)−H(U∣I)

3.核心思想

在前面的引例中谈到,“采用不同的划分就会得到不同的决策树”,而我们所希望的就是在每一次划分的时候都采取最有的方式,即局部最优解;这样每一步划分能够使得当前的信息增益达到最大。因此,决策树构建的核心思想就是:每次划分时,要选择使得信息增益最大的划分方式,以此来递归构建决策树

系列文章

决策树——(一)决策树的思想
决策树——(二)决策树的生成与剪枝ID3,C4.5

参考

  • 《数学之美》吴军
  • 《统计学习方法》李航
  • 《Python与机器学习实战》何宇健

决策树——(一)决策树的思想相关推荐

  1. 基于单层决策树的adaBoost算法思想分析和源代码解析

    基于单层决策树的AdaBoost算法思想分析和源代码解析 前言: 上一篇SVM可是废了我好鼻子劲,这一篇咱们来点愉快的东西.我们一定听说过这句俗语:"三个臭皮匠,顶个诸葛亮!" 大 ...

  2. 决策树及决策树生成与剪枝

    文章目录 1. 决策树学习 2. 最优划分属性的选择 2.1 信息增益 - ID3 2.1.1 什么是信息增益 2.1.2 ID3 树中最优划分属性计算举例 2.2 信息增益率 - C4.5 2.3 ...

  3. 【机器学习与深度学习理论要点】15. 什么是决策树?决策树的特点及使用情况

    1)什么是决策树? 决策树的核心思想是:相似的输入必然产生相似的输出.决策树通过把数据样本分配到树状结构的某个叶子节点来确定数据集中样本所属的分类.决策树可用于回归和分类.当用于回归时,预测结果为叶子 ...

  4. 分类决策树 回归决策树_决策树分类器背后的数学

    分类决策树 回归决策树 决策树分类器背后的数学 (Maths behind Decision Tree Classifier) Before we see the python implementat ...

  5. 机器学习_决策树(信息熵,决策树,决策树优化,剪枝)

    今天开始学决策树,尽管导师每天催任务,但我还是得把机器学习学完,学懂,现在看西瓜书很有感觉.这个机器学习太好了,感觉学着学着就变聪明了一样,不断地让自己的思维变得更敏捷,所以我爱机器学习. 今天要讲的 ...

  6. 机器学习(9)决策树(决策树分类鸢尾花)

    目录 一.基础理论 二.决策树分类鸢尾花 API 1.读取数据 2.划分数据集 3.创建决策树预估器,训练 4.模型评估 方法一:比对法 方法二:计算错误率 代码 一.基础理论 决策树思想: 程序设计 ...

  7. 决策树 prepruning_决策树与随机森林

    机器学习中的决策树模型 ① 树模型不用做scaling ② 树模型不太需要做离散化 ③ 用Xgboost等工具库,是不需要做缺失值填充 ④ 树模型是非线性模型,有非线性的表达能力 决策树基本概念 决策 ...

  8. gini系数 决策树_决策树系列--ID3、C4.5、CART

    决策树系列,涉及很好算法,接下来的几天内,我会逐步讲解决策树系列算法 1.基本概念 首先我们理解什么是熵:熵的概念最早源于物理学,用于度量一个热力学系统的无序程度.在信息论里面,信息熵是衡量信息量的大 ...

  9. dt决策树_决策树:构建DT的分步方法

    dt决策树 介绍 (Introduction) Decision Trees (DTs) are a non-parametric supervised learning method used fo ...

  10. 决策树php,决策树模型组合之随机森林与GBDT

    前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over- ...

最新文章

  1. 室内+室外激光SLAM关键算法、代码和实战剖析正式开课(cartographer+LOAM+ LIO-SAM)
  2. PAT_A1106#Lowest Price in Supply Chain
  3. 继电反馈法自整定_基于继电反馈PID自整定方法在Buck―Boost电路中应用.doc
  4. 蚌埠学院计算机科学技术校区,蚌埠学院计算机科学与关键技术(6页)-原创力文档...
  5. 测试驱动开发_?使用jest进行测试驱动开发
  6. DataTable 中各种计算(笔记)
  7. 35. 后台模块开发(2)
  8. 汉字转拼音多音字java_汉字转拼音多音字解决方案 搜索引擎分词细胞词库更新 搜狗词库提取TXT PHP高性能输出UNICODE正则汉字列表...
  9. 数学专项counting:LA 5846
  10. 重新学习Python的第二天_列表及字符串的学习与练习
  11. 渗透测试人员常用的8种火狐插件
  12. 基于LM334芯片的恒流源调试
  13. 数据挖掘实战(9.5)--使用神经网络识别MINIST数据集
  14. Windows三种文件系统:NTFS、FAT32、FAT16的区别
  15. 迅为RK3568开发板Android11修改开机动画
  16. 【C语言经典100例】-- 06 用*号输出字母C的图案
  17. uni-app/5+App开发淘客商城时如何拉起淘宝/京东/拼多多
  18. CocoaPods——Cocoapods 入门
  19. 无领导小组讨论面试真题解析(七)—— 荒岛逃生记
  20. 如何实现物理机与虚拟机两者之间的ping通

热门文章

  1. oracle 无效连接,Oracle SQL多重连接与重复记录或“无效标识符”
  2. git 客户端 所有客户端 钩子_git自定义项目钩子和全局钩子
  3. 李宏毅2020机器学习深度学习 笔记1(理论上持续更新中)
  4. Redis--变慢的原因及排查方法--系统方面
  5. Doc2Vec句向量模型PV-DM与PV-DBOW的理解
  6. pair用法(给元素赋值)
  7. 局域网共享上网IP设置
  8. SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)
  9. MySql Order By 多个字段 排序规则
  10. 自然语言处理(三)——句法分析与依存句法分析