今天开始进入决策树的算法部分,首先介绍一下这部分涉及到的知识点。

一、大纲

1、信息熵

决策树在生成过程中,对于评判是否要对树进行划分的关键指标。即树生成时的决策根本。

2、决策树
之前提过KD树的划分标准。02 KNN算法 - KD Tree KD树是基于一个划分的标准(中位数),最后构建起了整个KD树。决策树同样也是一个树形结构,同样需要某些决策指标来构建起决策树。最后帮助我们实现回归或分类的目标。

3、决策树优化
和KD树一样,决策树模型生成以后同样会存在欠拟合和过拟合的问题。如何解决这些问题就是决策树优化需要考虑的。

4、剪枝
防止决策树过拟合的过程,实际生产过程中剪枝的操作用的很少,但面试可能会提问,了解即可。

5、决策树可视化
导入一些新的模块,最后将决策树展现在用户面前。

二、决策树的直观理解

根据一个人是否有房产、婚姻情况、年收入情况判断一个人是否有能力偿还债务。
根据样本构建出一个模型:

相比Logistic模型、回归模型中参数的理解,决策树是一个解释性更强的模型。

三、比特化

数据:BACADCBD...
这里ABCD出现的概率都是1/4,等概率。
即P(X=A) =P(X=B) =P(X=C) =P(X=D) =1/4

令A-00 B-01 C-10 D-11(等概率,用两个比特位表示4个变量即可)
BACADC = 01001011100111
E = 1×1/4 *4 = 1
(每个变量占用一个比特位,出现概率是1/4,一共4个变量,平均每个变量占1个比特位)


如果X变量出现概率不同:
即P(X=A)=1/2; P(X=B) = 1/4; P(X=C) =P(X=D) =1/8;

用更少的比特位描述出现概率更大的事件,能够让总的比特位数量最少:
令A-0 B-10 C-110 D-111

E=1×1/2 + 2×1/4 + 3×1/8 + 3×1/8 = 1.75
平均每个变量占1.75个比特位。其他任何一种编码方式最终得到的期望都会大于1.75,耗费了多余的计算机资源。

还可以用下面的公式表示__平均每个变量占用的比特位__数量:

$color{red}{每个变量出现的概率:}$ p
$color{red}{每个变量占用的比特位:}$ -log2p

所以,m个变量在不同的出现概率p1~pm时,平均每个变量占用的比特位公式如下:

四、信息熵

__信息熵__是描述一个信息量的指标。如果一个事件发生的概率越大,那么认为该事件蕴含的信息越少。

当一个事件百分百确定的时候,我们得不到其他推论。那么认为信息量为0。

只有当事件的出现存在概率性,说明有额外的信息影响事件发生,那么针对这些信息我们才需要推理判断 。

__信息熵__是系统有序程度的度量,一个系统越是有序,信息熵就越低。信息熵就是用来描述系统信息量的不确定度。

信息熵 = 比特化随机变量X占用比特位的数学期望

五、条件熵

回顾H(X)的概念,并看下面的例子:


令L(S) = -P(S) × log2(S)
H(X) = L(X=数学) + L(X=IT) + L(X=英语)

= -0.5 × log2(0.5) - 0.25 × log2(0.25) - 0.25×log2(0.25)
=  0.5 + 0.5 + 0.5 = 1.5

H(Y) = L(Y = M) + L(Y = F)

= -0.5 × log2(0.5) - 0.5 × log2(0.5)
= 0.5 + 0.5 = 1

H(X, Y) = L(X=数学, Y=M) + L(X=IT, Y=M) + L(X=英语, Y=F) +
L(X=数学, Y=F) = -0.25 × log2(0.25) × 4 = 2

看明白上面的例子后,接下来引入__条件熵__的概念:
给定条件X的情况下,随机变量Y的信息熵就是__条件熵__。
给定条件X的情况下,所有不同x值情况下,Y的信息熵的平均值,叫做__条件熵__。

当专业X为数学时,Y的信息熵的值为:H(Y|X=数学)
怎么计算H(Y|X=数学)?先把数学相关的项提取出来:

现在姓别出现的概率都是2/4,根据公式:

$color{red}{每个变量出现的概率:}$ p

$color{red}{每个变量占用的比特位:}$ -log2p


-log2(0.5)=1:单个性别的信息熵。
H(Y|X=数学) = -0.5 × log2(0.5) × 2 = 1


H(Y|X=数学) 是 H(Y|X) 的一部分,H(Y|X)还包括H(Y|X=IT)、H(Y|X=英语) 根据上述的方式能够依次计算出H(Y|X=IT)、H(Y|X=英语) 的值。

回顾一下定义:
给定条件X的情况下,所有不同x值情况下,Y的信息熵的平均值,叫做__条件熵__。

以下log表示log2

条件熵 H(X/Y)
= H(X/Y=M)×P(Y=M) + H(X/Y=F)×P(Y=F) 即加权平均熵

    = [L(X=数学/Y=M)+L(X=数学/Y=M)]×P(Y=M) + H(X/Y=F)×P(Y=F)= [-0.5 × log(0.5) × 2] × 0.5 + H(X/Y=F)×P(Y=F)= 0.5 + H(X/Y=F)×P(Y=F) = 0.5 + 0.5 = 1= __H(X, Y) - H(Y)__

条件熵 H(Y/X)
= H(Y/X=数学)×P(X=数学)+H(Y/X=IT)×P(X=IT)+H(Y/X=英语)×P(X=英语)

    = [-0.5 × log(0.5) × 2] × 0.5+H(Y/X=IT)×P(X=IT)+H(Y/X=英语)×P(X=英语)= 0.5 + 0 + 0 = 0.5= __H(X, Y) - H(X)__

条件熵__的另一个公式: __H(Y/X) = H(X, Y) - H(X)
事件(X,Y)发生所包含的熵,减去事件X单独发生的熵,即为事件X发生前提下,Y发生“新”带来的熵。

结合概率论中的Venn图思考上面公式的意义:

最后给出一个推导公式:

01 决策树 - 数学理论概述 - 熵相关推荐

  1. math专栏 01.数学内容概述

    # 01.学习数学的必要性[toc]{type: "ol", level: [2, 3, 4, 5]}## 微积分[*微分] ### 大纲 Num | 大纲 :---|:----- ...

  2. 决策树——从理论到入手

    决策树--从理论到入手 决策树 基本知识点 基本概念 分析与思考 决策树前提知识点 信息增益.增益率.基尼指数 信息增益(ID3) 增益率(C4.5) 基尼指数(CART) 剪枝处理 预剪枝 后剪枝 ...

  3. [数据分析][评价方法]打分式评价-信息熵理论与熵权法

    前言: 信息熵是一种用于衡量系统内部信息量的度量.在信息论中,信息是系统有序程度的一种度量. 信息是确定性的增加,不确定性的减少(香农定理).而信息熵是系统无序程度的一种度量,是系统不确定性的量度.两 ...

  4. 计算数学与数学理论专栏【简介】

    计算数学与数学理论专栏 (简介) 文章目录 计算数学与数学理论专栏 (简介) 一.离散(discrete)与计算数学 二.现代数学理论 2.0 概述与杂论 2.1 代数 2.2 分析 2.3 几何 2 ...

  5. 机器人学数学理论_基于格理论的机器学习数学

    机器人学数学理论 This is a third article in the series of works (see also first one and second one) describi ...

  6. 【机器学习】决策树(理论)

    决策树(理论) 目录 一.何为决策树 1.决策树的组成 2.决策树的构建 二.熵 1.熵的作用 2.熵的定义 3.熵的计算 4.条件熵的引入 5.条件熵的计算 三.划分选择 1.信息增益( ID3 算 ...

  7. 神经网络的数学方法及应用,神经网络的数学理论

    神经网络算法原理 4.2.1 概述人工神经网络的研究与计算机的研究几乎是同步发展的. 1943年心理学家McCulloch和数学家Pitts合作提出了形式神经元的数学模型,20世纪50年代末,Rose ...

  8. AI算法工程师 | 04人工智能基础-高等数学知识强化(一)数学内容概述

    数学内容概述 人工智能学习数学的必要性: 人工智能跟开发 APP 和后台服务器相比,人工智能需要大量的数学知识. 人工智能需要一些必要的数学知识,这对后续理解机器学习.深度学习的算法有帮助,会理解得更 ...

  9. 视频编解码之理论概述 和即时通信

    前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的.有关实时 ...

最新文章

  1. 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》—第1课0.15节创建剪切蒙版...
  2. nginx php 配置请求等待时间_CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代码执行漏洞预警...
  3. SpringMVC传递JSON数据的方法
  4. linux最小安装桌面,Linux工作环境:CentOS7最小安装+Xfce桌面环境
  5. vscode markdown_搭建 Markdown 舒适写作环境(VSCode,含扩展盘点)
  6. 因为在此系统上禁止运行脚本。有关详细信息_win10系统下Hyper-V基本(网上资源整合)3
  7. Web项目--------原Oracle数据库的项目同时兼容MySql
  8. linux jvm启动过程,Linux操作系统启动过程详解
  9. java语言介绍及特点分析(萌新入门须知内容)
  10. NOD32杀毒软件如何更新及用户名列表
  11. linux不能显示微软雅黑字体
  12. Java SE《基础篇》——(二)程序基础01
  13. vue项目 webpack-dev-server 报错
  14. 桌面word文档变成了html,我电脑上的Word文档都变成网页形式了怎么回事?
  15. LiveMe x TiDB丨单表数据量 39 亿条,简化架构新体验
  16. 相关性分析热点图_防老剂TMQ及6PPD价格上涨逻辑分析及后市展望
  17. 【MySQL】SQL优化
  18. 【PP】PP 模块配置
  19. 百度搜索 “Java面试题” 前200页
  20. 学习Linux前必备专业知识

热门文章

  1. 【Android】Handler详解
  2. 关于ASP.NET控件DropDownList控件的问题
  3. C++中的变量不初始化是什么结果?(整型、bool型、字符型)结果都是随机的,不确定
  4. 实时计算Flink——产品安全
  5. 送餐机器人被解雇,人工智能“人性”待进化
  6. 人工智能,也许是另一场文艺复兴!
  7. 利用规则引擎计算个人所得税学习
  8. “4K云字库”基本框架图
  9. 如何到达永生?揭示科学之美
  10. Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?