有一天,小明无聊,对宿舍玩CS的舍友进行统计,结果刚记下四行,被舍友认为影响发挥,给踢到床下去了,让我 们看看可怜的小明的记录: ----------------------------- 武器 | 子弹数量 | 血 | 行为 ----------------------------- 机枪 | 多 | 少 | 战斗 机枪 | 少 |

有一天,小明无聊,对宿舍玩CS的舍友进行统计,结果刚记下四行,被舍友认为影响发挥,给踢到床下去了,让我们看看可怜的小明的记录:
-----------------------------
武器 | 子弹数量 | 血 | 行为
-----------------------------
机枪 | 多 | 少 | 战斗
机枪 | 少 | 多 | 逃跑
小刀 | 少 | 多 | 战斗
小刀 | 少 | 少 | 逃跑
-----------------------------

为了对得起小明记录的这四条记录,我们对其进行决策树分析,从数据中看:
1. 如果一个玩家子弹很多,那么即使血少他也会战斗,如果子弹少的话,即使血多,他也会逃跑隐蔽起来;
2. 那我们再看子弹少的情况下,武器靠刀子,当血多时候,他还是会打一打得,但是血少,就立即逃跑隐蔽了。

这是我们大脑直觉上去分析,既然本文我是想聊一聊决策树,那么我们就用决策树来对小明的这些数据小试牛刀一下,顺便来慰藉一下小明(从小到大我们已经看过无数的小明了,这里再借用一下大度的小明)。

我们现在将数据分为两块:
X = {武器类型,子弹数量,血}
Y = {行为}
我们建立这颗决策树的目的就是,让计算机自动去寻找最合适的映射关系,即:Y = f(X),所谓听上去大雅的“数据挖掘”学科,干得也差不多就是这回事,X我们称之为样本,Y我们称之为结果(行为/类)。

样本是多维的,X = {x1,x2,...xn},如本例:X = {x1=武器类型,x2=子弹数量,x3=血},我们就是要通过这些不同维度的观测记录数据,和应对的不同结果,找到规律(映射关系),举个例子:
X = {天气,温度,湿度,女友约会} -> Y = {是否答应兄弟下午去打篮球}
X = {老妈说你是胖子,老婆说你是胖子,自己上秤评估自己体重} -> Y = {去办健身卡减肥}

这样来说,X的多维不同的数据,大个比方,更像是很多大臣,那么我们就是要根据这些大臣的意见,来决策,如本例:
>> 左大臣:武器类型
>> 中大臣:子弹数量
>> 右大臣:血

这些大臣每个人都有想法,左右着皇帝继续战斗还是撤退,但是三个也不能全信,那么我们就要根据他们的陈年老帐(训练样本)来评判他们的话语的重要性,当然,优先级高的肯定话语是有重量的,我们先提前来预览一下这个例子训练出来的决策树的样子:

这个根据小明的数据训练出来的决策树是不是和我们刚才拍脑门分析出来的结果差不多呢?看,子弹多就开打,子弹少,在看看用什么武器,如果又没子弹又用机枪,那铁定跑,如果用小刀,在掂量一下自己血厚不厚,厚则打,不厚则逃,看来决策树分析的结果还是可以的啊,接下来,我们来研究研究,计算机(这个只会重复人们给它设定的代码的家伙)是如何实现这样的分析的。

既然是三个大臣提意见{左大臣:武器类型,中大臣:子弹数量,右大臣:血},那么我们要分析一下历史数据(训练数据)他们哪个话更靠谱:

我们先单纯的看看左大臣的历史战绩(统计训练样本):
机枪 -> 战斗
机枪 -> 逃跑
小刀 -> 战斗
小刀 -> 逃跑
用机枪,你战斗逃跑的概率都是50%,用刀子,你亦似打似逃!看来这个大臣立场不坚定啊!

再看看中大臣的:
子弹多 -> 战斗
子弹少 -> 逃跑
子弹少 -> 战斗
子弹少 -> 逃跑
用机枪,你战斗概率是100%,用刀子,你33.3%打,你66.6%撤!这位大臣似乎坚定了一些。

再看看右大臣的:
血少 -> 战斗
血多 -> 逃跑
血多 -> 战斗
血少 -> 逃跑
和左大臣一样,立场不坚定,50:50啊!

这样,中大臣的话的重量就提升了,因此决策书的第一层就重用中大臣吧(中大臣变成一品大员)

计算机是怎么来做到这一步的呢?且让我一步一步讲:

决策树训练中,有一个很重要的尺子,来衡量大臣的可信度,这个尺子,就是信息论的熵(Entropy),这个熵是何许人也,竟然朝廷大臣的可信度竟然用次来衡量,让我们对他做个自我介绍吧:
熵,洋名为(Entropy),乃测量信息的混乱程度为职,纵横科学界各门学术之中,为人低调,俭朴,就一个很短的公式:E = sum(-p(I)*log(p(I))),I=1:N(N类结果,如本例两种,战斗或逃跑),当信息一致,所有样本都属于一个类别I,那么熵为0,如果样本完全随机,那么熵为1,表明这个臣子对这种状态的预测就是胡言乱语。

OK,熵,告诉我你对这个数据的看法:
E(机枪) = -(1/2)Log2(1/2) - (1/2)Log(1/2) = 0.5 + 0.5 = 1
E(小刀) = -(1/2)Log2(1/2) - (1/2)Log(1/2) = 0.5 + 0.5 = 1
E(子弹多) = -(1/1)Log2(1/1) - (0/1)Log(0/1) = 0 + 0 = 0
E(子弹少) = -(1/3)Log2(1/3) - (2/3)Log(2/3) = 0.5283 + 0.39 = 0.9183
E(血多) = -(1/2)Log2(1/2) - (1/2)Log(1/2) = 0.5 + 0.5 = 1
E(血少) = -(1/2)Log2(1/2) - (1/2)Log(1/2) = 0.5 + 0.5 = 1

那么我们怎么用这个熵来衡量大臣(每维数据)的可信度呢,这里还要再引出一位仁兄,其是熵的上级,他熟知熵的能力,很会用熵,他就是信息增益(Information Gain),我们来看看这位上级是如何用熵来衡量的:
Gain(Sample,Action) = E(sample) - sum(|Sample(v)|/Sample * E(Sample(v)))

OK,Information Gain,说说你是怎么评估这个例子的三位大臣的!

Gain(武器类型) = E(S) - (2/4)*E(机枪) - (2/4)*E(小刀) = 1 - (2/4)*1 - (2/4)*1 = 0
Gain(子弹数量) = E(S) - (1/4)*E(子弹多) - (3/4)*E(子弹少) = 1 - (1/4)*0 - (3/4)*0.9183 = 0.3113
Gain(血量) = E(S) - (2/4)*E(血多) - (2/4)*E(血少) = 1 - (2/4)*1 - (2/4)*1 = 0

接着,计算机通过信息增益结果,选择最大的,作为一品大员


且看一品大员对子弹多的情况下料事如神(暂且不说本例样本少),但是其在子弹少的情况下,决策还是不行的,那么,再用同样的方法,再去选择二品,三品,这就是决策树的训练,呵呵,不知有没有帮助各位理解

from: http://www.52analysis.com/shujuwajue/2441.html

白话一下什么是决策树模型相关推荐

  1. 决策树模型与学习《一》

    决策树总结<一>.md 决策树模型与学习 1. 定义 一般的,一棵决策树包含一个根结点,若干个内部结点和若干个叶结点:叶结点对应于决策结果,其他每个结点则对应于一个属性测试:每个结点包含的 ...

  2. R语言使用rpart包构建决策树模型、使用prune函数进行树的剪枝、交叉验证预防过拟合、plotcp可视化复杂度、rpart.plot包可视化决策树、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用rpart包构建决策树模型.使用prune函数进行树的剪枝.使用10折交叉验证选择预测误差最低的树来预防过拟合.plotcp可视化决策树复杂度.rpart.plot包可视化最终决策树.使用t ...

  3. 随机森林算法参数解释及调优 转胡卫雄 RF模型可以理解成决策树模型嵌入到bagging框架,因此,我们首先对外层的bagging框架进行参数择优,然后再对内层的决策树模型进行参数择优

    RF参数择优思想:RF模型可以理解成决策树模型嵌入到bagging框架,因此,我们首先对外层的bagging框架进行参数择优,然后再对内层的决策树模型进行参数择优.在优化某一参数时,需要把其他参数设置 ...

  4. 【数据挖掘】决策树算法简介 ( 决策树模型 | 模型示例 | 决策树算法性能要求 | 递归创建决策树 | 树根属性选择 )

    文章目录 I . 决策树模型 II . 决策树模型 示例 III . 决策树算法列举 IV . 决策树算法 示例 V . 决策树算法性能要求 VI . 决策树模型创建 ( 递归创建决策树 ) VII ...

  5. 决策树-基于不同算法的决策树模型对比

    决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别.使用决策树进行决策的过程就是从根节点开始 ...

  6. 模型开发-GBDT决策树模型开发代码

    GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决 ...

  7. 文献记录(part67)--基于决策树模型重用的分布变化流数据学习

    学习笔记,仅供参考,有错必纠 关键词:机器学习 , 分布变化 , 流数据 , 模型重用 , 集成学习 , 动态环境 基于决策树模型重用的分布变化流数据学习 摘要 在很多真实应用中 , 数据以流的形式不 ...

  8. 决策树模型 - (ID3算法、C4.5算法) - Python代码实现

    目录 算法简介 信息熵(Entropy) 信息增益(Information gain) - ID3算法 信息增益率(gain ratio) - C4.5算法 源数据 代码实现 - ID3算法 代码实现 ...

  9. 机器学习笔记(七)——决策树模型

    引言 决策树(Decision Tree)是一种基本的分类和回归方法.它的扩展方法有GBDT和GBRT 等.决策树模型的学习过程主要有特征选择.决策树生成和剪枝.主要算法有ID3.C4.5和CART等 ...

最新文章

  1. Windows Phone 7编程学习点滴一——页面切换、返回键重载和工具栏
  2. 鹅厂2020暑期实习第一次一面
  3. Java集合:数组的使用
  4. pytorch list转tensor_PyTorch 52.PyTorch常用代码段合集
  5. Part8 多态性 8.1运算符重载
  6. 4种方法帮你解决IntelliJ IDEA控制台中文乱码问题
  7. premnmx tramnmx postmnmx 函数用法
  8. mysql日期函_mysql日期函数
  9. 在线小说阅读器app
  10. 计算机一级安装的软件要钱吗,电脑没装这5个软件,基本算是废了
  11. 如何查找qq邮箱的服务器地址
  12. android图标重力感应插件,重力感应,图片摆动旋转(自定义控件) android
  13. 【Python】pass,continue和break的区别
  14. 读书札记:德鲁克生命中的七堂课(转)
  15. JDBC使用教程详解
  16. 卓越人生的两大利器——任务分解与保持节奏
  17. Matlab二值图像进行轮廓提取
  18. 【NLP】文本数据分析文本特征处理文本数据增强
  19. Idea自带http测试功能真香
  20. 2018春招实习笔试面试总结(PHP)

热门文章

  1. 从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
  2. 点击率预估的几个经典模型简介
  3. 初创科技公司都采用什么样的技术架构?
  4. 供应链金融服务平台:应收、预付和存货融资业务
  5. Apache Kafka-Spring Kafka生产消费@KafkaListener源码解析
  6. 基础JavaScript_Day04
  7. HTML基础_Day01
  8. mysql sleep详解_关于MySQL的SLEEP(N)函数
  9. python 链表中倒数第k个节点
  10. 图像混合模式:Android Paint Xfermode 使用和demo