文档章节

决策树算法教程(一)

无畏布衣
 无畏布衣
发布于 2017/08/28 11:32
字数 2023
阅读 31
收藏 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
朝阳
私信 提问
机器学习之学习路线

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

heavenseahill
2017/10/13
0
0
入门 | 机器学习第一课:决策树学习概述与实现

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

机器之心
2018/04/29
0
0
机器学习实战教程(二):决策树基础篇之让我们从相亲说起

原文链接:https://cuijiahua.com/blog/2017/11/ml2decisiontree1.html 一、前言 有读者反映,说我上篇文章机器学习实战教程(一):k-近邻算法(史诗级干货长文),太长了。一看那么长,读的欲...

圆方圆PYTHON学院
01/03
0
0
算法|决策树算法究竟说的是什么?

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

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

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

fengbingchun
2017/12/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
32分钟前
0
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
52分钟前
1
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0
聊聊flink的AsyncWaitOperator

序 本文主要研究一下flink的AsyncWaitOperator AsyncWaitOperator flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/operators/async/AsyncWaitOperator.java ......

go4it
今天
5
0
Java并发编程基础(四)

ThreadGroup 在主线程创建得线程,如果没有给他指定线程组,那么创建的线程,默认和主线程同一个线程组。线程组可以底下可以是线程,也可以实线程组。 构建线程组的方法: private ThreadGr...

chendom
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部