文档章节

决策树算法教程(一)

无畏布衣
 无畏布衣
发布于 2017/08/28 11:32
字数 2023
阅读 30
收藏 0

原文:https://www.analyticsvidhya.com/blog/2016/04/complete-tutorial-tree-based-modeling-scratch-in-python/

Introduction

    基于树的学习算法,一贯被认为是最好的、最有用的监督学习方法。这种方法可以有效的保证预测模型的高准确度,稳定性和易理解性。不同于线性模型算法,他们可以很好的反映非线性关系。他们可以很容易的使用在需要解决的任何类型的问题上(分类或回归)。

    像决策树算法,随机森林,梯度推进等算法,已经被广泛使用在解决各种类型的数据科学问题当中。因此,对于每一个数据分析者而言(当然也包括菜鸟啦),学习这些算法原理并在实践中使用这些模型,是很有帮助和必要的。

    该教程的只要意图,就是帮助那些新人摆脱" 抓耳挠腮,无处下手 “ 的状态,帮助他们从基础开始,逐步打开学习的大门。希望大家能在完成本轮学习之后,能够熟练的使用基本的算法逻辑和构建预测模型。

 注意: 本教程并不需要任何的机器算法基础。但是基本的 R 或者Python的编程基础还是有一定的要求。

如果需要,可进入学习 full tutorial in R and full tutorial in Python.

Table of Contents

    1. What is a Decision Tree? How does it work?
    2. Regression Trees vs Classification Trees
    3. How does a tree decide where to split?
    4. What are the key parameters of model building and how can we avoid over-fitting in decision trees?
    5. Are tree based models better than linear models?
    6. Working with Decision Trees in R and Python
    7. What are the ensemble methods of trees based model?
    8. What is Bagging? How does it work?
    9. What is Random Forest ? How does it work?
    10. What is Boosting ? How does it work?
    11. Which is more powerful: GBM or Xgboost?
    12. Working with GBM in R and Python
    13. Working with Xgboost in R and Python
    14. Where to Practice ?

 

 

1. 什么是决策树?它如何工作?

    决策树是一种监督学习算法(具有预先定义的目标变量),在分类问题上作用效果明显。它适合于分类和连续输入、输出变量。在算法过程中,我们会基于最有效的分离器或者区分器,将样本分为两个或多个同类集合(或者子样本集),如下图。

dt

示例:

    我们有一个包含有30位同学的样本集,他们都有单个不同的标签:性别(男,女),班级(IX/X)和身高(5 to 6 ft)。他们其中有15人在课余时间是喜欢打板球的。那么现在,我们想构建一个模型,来预测一下,那些同学在课余时间喜欢打板球!在这个问题中,我们需要基于这三个输入中最显著的特征的输入变量,来划分所有的同学,进而得到问题的答案。

    通过树形图,我们可以看到,基于每种变量和其取值,我们可以将同学分成不同类别的样本组,每组之间都是完全不同类别的。如下图,对比可以发现,性别标签,比其他两个标签能够鉴别出最好的同类集。

    如上所述,决策树能够标识出最有效的变量和取值,这些变量和值能够很好的区分原始样本。那么问题来了,它是如何从所有标签中确定这个最有效的标签的呢?为了解决这个问题,决策树算法使用的多种算法,下面我们就要讨论一下这些算法。

决策树的类型

决策树的类型,是基于我们已有的目标变量的类型而定的,共有两类:

  1. Categorical Variable Decision Tree: 离散变量决策树,顾名思义,他的目标变量是离散状态。比如:上面提到的学生的例子,目标变量就是“学生玩板球或者不玩”,也就是两种状态:是,否。
  2. Continuous Variable Decision Tree: 连续变量决策树,顾名思义,他的目标变量是连续状态。举个例子:假如我们想预测一个客户是否会继续给他的保险公司缴纳保金(当然这个结果是离线的,即,交或者否)。但是我们发现对所有的客户,工资输入是影响交否的一个重要变来变量,但是保险公司去没有所有用户的工资细节信息。因此,我们可基于用户的职业,产品以及其他各式各样的变量,来构建一个决策树来预测客户的输入决策树。这个例子中,我们的预测值(工资)就是个连续变量了。

 

决策树术语

Decision Tree Terminology, Root Node, Branch, Splitting, Pruning

  1. Root Node:根节点,代表全部样本集合。

  2. Splitting: 拆分,将一个节点分割成多个节点的过程

  3. Decision Node: 决策点,当一个子节点还可以被继续拆分,那这个子节点就是一个决策点。

  4. Leaf/ Terminal Node: 叶子/终结点,不能在被拆分的节点

  5. Pruning: 剪除,移除一个决策点的子节点的过程

  6. Branch / Sub-Tree: 分支, 整个树的一个分路径,就叫一个分支

  7. Parent and Child Node: 父节点/子节点,一个节点,把它拆分成多个子节点,那么这个节点就是父节点。

 

优点

  1. 容易理解,基础要求低.
  2. 在数据分析上很有用,可以帮我们快速从众多变量中找到最有用的,最有意义的标签
  3. 无需数据清晰,能够很好包容异常、缺失数据
  4. 能够同时处理数据型和常规型属性
  5. 无参算法,即无需假定空间分布或者分类框架等

 

缺点

  1. 过分拟合。这个问题通过设置模型参数和修剪的约束来解决(详见下文)。
  2. 不适合连续变量。

 

 

2. Regression Trees vs Classification Trees

我们都知道终端节点(或叶子)位于决策树的底部。这意味着决策树通常是颠倒的,就像叶子是底而根是顶一样(如下图所示)。

111

这两种树的工作原理几乎是一样的,让我们来看看分类和回归树之间的主要差异和相似性:

  1. 回归树通常在因变量连续时候使用;分类数则是在因变量离散时用
  2. 回归树中,训练数据中终端节点所获得的值是该区域观测值下降(observation falls )的平均响应。因此,如果一个看不见的数据在那个区域下降,我们将用平均值来做预测。
  3. 在分类树的情况下,训练数据中终端节点获得的值(类别)是该区域的观测值。因此,如果在该区域中有一个看不见的数据,我们将用mode值进行预测。
  4. 这两种树将预测空间(独立变量)分为不同的和非重叠的区域。为了简单起见,您可以将这些区域看作是高维的箱子。
  5. 这两棵树都遵循自顶向下的贪婪方法,称为递归二进制分割。我们把它称为“自上而下”,因为它从树的顶端开始,当所有的观测都在一个区域内,并相继将预测空间分成两个新的分支。它被称为“贪婪”,因为算法只关心当前的分割,而不是未来的分裂,从而构建出更好的树。
  6. 这种分裂过程一直持续到用户定义的停止标准达成。例如: 一旦每个节点的观察次数小于 50时,我们可以让算法停下来。
  7. 在这两种情况下,分裂过程会导致完全长成的树,直到达到停止的条件。但是,完全成熟的树可能会过分拟合数据,从而导致不可见数据的不准确性。这这将造成“修剪”。修剪是解决过度拟合的技术之一。在下一节中,我们将进一步了解它。

 

未完待续。。。

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 决策树算法介绍
下一篇: KNN初探
无畏布衣
粉丝 1
博文 5
码字总数 8394
作品 0
朝阳
私信 提问
入门 | 机器学习第一课:决策树学习概述与实现

  选自HEARTBEAT   作者:Ishan Sharma   机器之心编译      基于树的学习算法在数据科学竞赛中相当常见。这些算法给预测模型赋予了准确性、稳定性以及易解释性。其中,决策树算法...

机器之心
04/29
0
0
机器学习之学习路线

# 机器学习教程 ## 生产案例 Scikit-Learn机器学习实践——垃圾短信识别 ## 引用 http://blog.51cto.com/6230973/1983254 机器学习入门 - 1. 介绍与决策树(decision tree) http://summertime...

heavenseahill
2017/10/13
0
0
算法|决策树算法究竟说的是什么?

作者简介 浩彬老撕,R语言中文社区特邀作者。 个人公众号:探数寻理 决策树算法概述

kmd8d5r
05/10
0
0
决策树(Decision Tree)简介

决策树(Decision Tree)及其变种是另一类将输入空间分成不同的区域,每个区域有独立参数的算法。决策树分类算法是一种基于实例的归纳学习方法,它能从给定的无序的训练样本中,提炼出树型的分...

fengbingchun
2017/12/23
0
0
传统算法如何转化成神经网络?| 回顾

在当今AI时代中,CNN和RNN都被广泛关注,并且有很多相关讨论,而最基础的神经网络DNN,它的研究和曝光度却相对较少。DNN是所有其它神经网络的基础,所以对它有一定了解是必要的。本文为大家详...

y0w1as5eg37urfds
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

让天下没有难用的搜索:阿里搜索如何成长为贴心“暖男”?

摘要: 阿里搜索技术体系演进至今天,基本形成了由offline、nearline、online三层体系,分工协作,保证电商平台上,既能适应日常平稳流量下稳定有效的个性化搜索及推荐,也能够去满足电商平台...

阿里云官方博客
5分钟前
0
0
(一)spring cloud互联网分布式微服务云平台规划分析--spring cloud平台整体规划

1. 导语 近期公司孵化了一个互联网产品,随着业务发展,产品运营后用户数据量(过亿)、业务数据量(过100亿)较大,技术团队配合产品、运营快速定制化开发, 还要考虑产品涉及的资金安全、消...

明理萝
6分钟前
0
1
linux 下对于jvm的监测

在看阿里巴巴开源项目的时候,发现了alibaba/arthas ,之前出现会员卡的时候,需要只能去看日志。但是日志又不能有效的知道当时的问题情况。一种方法就是去监测出现问题的情况下,去查看jvm...

miaojiangmin
14分钟前
0
0
大数据就业前景分析的太到位了,想学习大数据的可以看看

大数据广泛应用于电网运行、经营管理及优质服务等各大领域,并正在改变着各行各业,也引领了大数据人才的变革。大数据专业就业前景怎么样?这对于在就业迷途中的我们是一个很重要的信息。 随...

董黎明
47分钟前
2
0
如何利用Photoshop进行快速切图

在UI设计中我们常常使用Ai来进行矢量图的绘制,然后导入Ps中进行设计、排版和导出。 在以前的版本中,切图一直是个很麻烦的事情,要么依托于脚本,要么手动一张张导出,很不方便,这种窘况在...

mo311
54分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部