转载请标明出处http://www.cnblogs.com/haozhengfei/p/d65ab6ccff684db729f44a947ac9e7da.html


决策树

1.什么是决策树

   决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性某个值域上的输出,而每个叶节点存放一个类别。
   使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶节点存放的类别作为决策结果。
 
   我们的决策树是一个分类的决策树,将我们的数据离散到各个不同的分类。
 
构建决策树的两个要求:
   1.选择需要的属性以及怎么给属性做分支(分裂属性),
   2.属性的前后(属性选择度量算法)。
 
决策树的构造关键是分裂属性 
    所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。 
 
分裂属性分为三种不同的情况: 
 
 
   – 1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。
   – 2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。
   – 3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。

2.决策树中属性的选择顺序

属性的选择度量算法--决定哪一个属性应该排在前面(属性的选择顺序)
   ID3(原始的算法),C4.5(ID3衍生的算法)

ID3(原始的算法)

   ID3算法的核心思想:以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。
 
   熵:给了一个条件后,判断这个条件的信息增益,信息增益越大,表明熵锐减的越多,那么这个条件应该越往前排。
        Demo1:扔筛子的信息熵怎么求?
            (-1/6 * log1/6 + -1/6 * log1/6 + ...)

 
        Demo2:
 
 
 
    分别算出各个条件的信息增益,哪一个信息增益越大,则选择该特征属性的排序越靠前

C4.5(衍生的算法)

为什么会出现C4.5?
    ID3算法有一些弊端,比如某个属性下有10个分类,这10个分类每个分类都对应一个值,那么最后求得这一属性的熵为0,信息增益最大,就排在了其他属性的前面,这对于其他属性是不公平的,所以引入了C4.5,可以看做是ID3的升级版,C4.5比较的信息增益。
    比较信息增益率(每一属性的信息/这一属性下的类别),按照信息增益率的高低进行属性的排序。
 

3.决策树应用时需要注意的一些问题

决策树本身是一个弱分类器的算法,优点是可以做到多分类,但是应用时要考虑到"剪枝"
   1.树太高,容易造成计算量太大
   2.容易过拟合(准确率超过90%可能就过拟合了,小于70%拟合度不够),就是一个节点上面只有少数的样本,所以使用决策树经常需要降低深度,也就是"剪枝“
 

4.决策树升级版-->GBDT和随机森林

    随机森林:每次在全量样本中采取有放回的可以构建多棵决策树,随机森林的本质是采取一种投票的机制(比如随机森林中有15棵树,7棵树投票见面,8棵树投票不见面,那么最后的结果就是不见面)

MLlib--决策树的更多相关文章

  1. MLlib决策树与集成树

    决策树是一种常见的分类与回归机器学习算法,由于其模型表达性好,便于理解,并能取得较好的效果,而受到广泛的应用.下图是一个简单的决策树,决策树每个非叶子节点包含一个条件,对于具有连续值的特征,该条件为一 ...

  2. Spark2.0机器学习系列之3:决策树

    概述 分类决策树模型是一种描述对实例进行分类的树形结构. 决策树可以看为一个if-then规则集合,具有“互斥完备”性质 .决策树基本上都是 采用的是贪心(即非回溯)的算法,自顶向下递归分治构造. 生 ...

  3. Spark机器学习之MLlib整理分析

    友情提示: 本文档根据林大贵的<Python+Spark 2.0 + Hadoop机器学习与大数据实战>整理得到,代码均为书中提供的源码(python 2.X版本). 本文的可以利用pan ...

  4. 《大数据Spark企业级实战 》

    基本信息 作者: Spark亚太研究院   王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...

  5. Spark Mllib里决策树回归分析使用.rootMeanSquaredError方法计算出以RMSE来评估模型的准确率(图文详解)

    不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型 ...

  6. Spark Mllib里决策树回归分析如何对numClasses无控制和将部分参数设置为variance(图文详解)

    不多说,直接上干货! 在决策树二元或决策树多元分类参数设置中: 使用DecisionTree.trainClassifier   见 Spark Mllib里如何对决策树二元分类和决策树多元分类的分类 ...

  7. Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)

    不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的 ...

  8. Spark MLlib机器学习(一)——决策树

    决策树模型,适用于分类.回归. 简单地理解决策树呢,就是通过不断地设置新的条件标准对当前的数据进行划分,最后以实现把原始的杂乱的所有数据分类. 就像下面这个图,如果输入是一大堆追求一个妹子的汉子,妹子 ...

  9. spark(1.1) mllib 源码分析(三)-决策树

    本文主要以mllib 1.1版本为基础,分析决策树的基本原理与源码 一.基本原理 二.源码分析 1.决策树构造 指定决策树训练数据集与策略(Strategy)通过train函数就能得到决策树模型Dec ...

  10. Spark Mllib里如何对决策树二元分类和决策树多元分类的分类数目numClasses控制(图文详解)

    不多说,直接上干货! 决策树二元分类的分类数目numClasses控制 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类Stumble ...

随机推荐

  1. SQLServer 查看SQL语句的执行时间

    在MSSQL Server中通过查看SQL语句执行所用的时间,来衡量SQL语句的性能. 通过设置STATISTICS我们可以查看执行SQL时的系统情况.选项有PROFILE,IO ,TIME.介绍如下 ...

  2. Linux服务管理1-1 课程简介与系统运行级别

  3. .Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)

    现在,因为种种因素,你必须对一个请求或者方法进行频率上的访问限制. 比如, 你对外提供了一个API接口,注册用户每秒钟最多可以调用100次,非注册用户每秒钟最多可以调用10次. 比如, 有一个非常吃服 ...

  4. css动画-音频跳动

    css动画-音频跳动 ---------------------------------------------------------------------------- ------------ ...

  5. Redis学习之一VMWare Pro虚拟机安装和Linux系统的安装

    一.引言 设计模式写完了,相当于重新学了一遍,每次学习都会有不同的感受,对设计模式的理解又加深了,理解的更加透彻了.还差一篇关于设计模式的总结的文章了,写完这篇总结性的文章,设计模式的文章就暂时要告一 ...

  6. Mac安装Homebrew

    Homebrew的安装,打开终端复制.粘贴以下命令,回车 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/i ...

  7. docker:(3)docker容器挂载宿主主机目录

    有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了 比如在2中,我们要发布一个war包,是通过 sudo docker c ...

  8. Appium Mac 命令行安装

    试过很多方法都失败,打算用命令行方式安装. 准备工作: 从 https://github.com/appium/appium下载appium版本的源码(.tar) 详见github_Appium1.6 ...

  9. 【数论·错位排列】bzoj4517 排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 1428  Solved: 872[Submit][Statu ...

  10. Node Express 初探

    一如既往,先上一张图 Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. 关于Express更多相关知识请链接至官网http://www.expressjs.com.c ...