[机器学习算法]决策树引论和CART算法

决策树综述

1.决策树的工作原理

决策树decision tree分类法是一种简单但广泛使用的分类技术。以是否贷款违约的二分类问题为例,当我们希望根据给定的训练集习得一个模型对新出现的贷款人进行分类时,经常需要从大量的贷款申请单中识别出来哪些贷款人是劣质的贷款人(容易拖欠贷款)。想象一下客户经理和助手针对一个贷款者进行的如下对话:

经理:他有房吗?
助手:没有
经理:他结婚了吗?
助手:没有,一个单身汉
经理:他年收入高于70K吗?
助手:不足70K
经理:那驳回他的申请

经理根据贷款者的各方面“特征”一步步分析后进行的多次决策就相当于一个简单的决策树过程。下面我们用一个决策树模型模拟经理的决策过程。

image.png

2.决策树的构成

决策树是一种由节点和有向边组成的层次结构,树中包含三种节点:

  • 根节点root node:它没有入边,但有零条或多条出边,是决策树首次划分的节点。
  • 内部节点internal node:恰有一条入边和两条或多条出边。
  • 叶子节点left node:恰有一条入边但没有出边。每个叶子节点都被赋予一个类标签。

3.如何建立决策树模型

机器学习中,决策树是一个预测模型,代表着的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。机器学习中的经典决策树算法包括ID3C4.5CART等,但最基本的原理都是一样的。
理论上讲,对于给定的属性集可以构造的决策树数目达到指数级,尽管某些决策树比其他决策树更加准备,但是由于搜索空间是指数规模的,找出最佳决策树在计算上是不可行的尽管如此,人们还是开发了一些有效的算法能够在合理的时间内构造出具有一定准确率的次最优决策树
这些算法通常采用贪心策略,在选择划分数据的属性时,采取一系列局部最优决策来构造决策树,Hunt算法就是这样一种算法,它是包括ID3C4.5CART在内算法的基础

4.决策树的发展:Hunt-ID3-C4.5-CART

虽然基于多棵弱决策树的BaggingRandom ForestBoostingTree ensemble模型更加普遍且准确率更优,但是“完全生长”的决策树由于其简单直观的特性具有广泛的应用。除此之外,想要掌握Tree ensemble模型也绕不开组成其的弱分类树原理。
一般而言,一棵“完全生长”的决策树包括特征选择、决策树构建和剪枝三个过程。在Hunt算法的基础上,决策树算法发展出较为流行的ID3C4.5CART算法,同样这些算法都是基于启发式的贪心算法简历的,并不能保证建立全局最优的决策树。

image.png

我们这里简单介绍三种决策树算法

  • ID3决策树按照“最大信息增益”原则选择最优划分特征(特征一经划分在之后的过程中不再参与划分),然后按照该特征的所有取值划分数据集缺点是会优先选择属性值较多的特征(该特征信息增益较大);不能处理属性值是连续型变量的特征。
  • C4.5算法:在ID3算法基础上使用信息增益率gain ratio替代信息增益information gain缺点:信息增益率会优先选择可取值数目较少的属性,并且对于连续属性需要扫描排序,性能不佳。
  • CART算法:CART使用基尼系数Gini index来选择划分属性,并且采用二分递归分割技术生成结构简洁的二叉树,同时CART既能处理分类问题又能处理回归问题。

关于决策树的各种算法的细节会在决策树部分详细介绍,本文只介绍CART决策树。

CART决策树特点

CART树全称是Classification and Regression Tree。递归地将当前数据集分割为两个子数据集,形成一棵二叉树。CART既能处理连续型变量又能处理离散型变量,利用训练数据递归的划分特征空间进行决策树构造,用验证集进行剪枝

  • 二叉树:内部节点属性取值分为“是”(归到左分支)和“否”(归到右分支)。一般而言,二叉树的精度会高于多叉树。
  • 组成:特征选择、树生成和剪枝
  • 适用:既可用于分类也可用于回归
  • 特征选择标准:Gini系数。对于离散型属性选择该属性产生最小Gini 系数的子集作为分裂子集;对于连续型属性考虑所有可能的分裂点。

CART分类树(输出为离散型变量)

1.算法

输入:训练数据集D,停止计算的条件
输出CART决策树
算法:根据训练数据集D,从根节点开始,递归地对每个节点进行如下操作,构建二叉决策树

  • 设当前节点的训练数据集为D,计算每个现有属性A对该数据集DGini系数。同时,对每个属性A的每个可能取值a,根据样本对A=a的测试为“是”或“否”将D二分为D1D2两个部分,计算Gini(D_1)Gini(D_2)后加权得到A=aGini系数
  • 对于所有可能的属性A和他们所有可能的分割点a,选择Gini系数最小的属性和其对应的分割点作为最优属性和最优分割点,并以此从现节点生成两个子节点,将训练数据集D依属性测试条件A=a分配到两个子节点中
  • 对两个子节点递归进行上两步,直到满足停止条件。

2.相关公式

数据集D的不纯度用Gini系数度量:
Gini (D)=1-\sum_{k=1}^{|y|}p_k^2

|y|:表示分类的类别个数
p_k:数据集D中第k(k=1,2,...,|y|)类样本所占的比例
纯度:直观来说,数据集D的不纯度Gini(D)反映了从D中随机抽取两个样本,其类别标记不一致的概率,当Gini(D)越小时,纯度越高

当数据集D根据属性A在某一取值a上进行二元分割后得到D_1,D_2两个子集。Gini增益Gain\_Gini(D,A)表示数据集D根据属性A=a分割后集合D的不纯度增益。
Gain\_Gini(D,a)=\frac{|D_1|}{D}Gini(D_1)+\frac{|D_2|}{D}Gini(D_2)-Gini(D)
对于属性A,分别计算A每个取值对应的Gini增益,然后选取其中最小值作为属性A得到的最优二分方案。然后对于数据集D,计算所有属性的最优二分方案,选择其中的最小值作为数据集的最优分割属性。
a^*=\min_{a\in A} Gain\_Gini(D,a)
A^*=\min_{A\in Attribute} Gain\_Gini(D,A)

CART回归树(输出为连续型变量)

用户数值预测的决策树可分为两类。第一类称为回归树,是在20世纪80年代作为CART算法的一部分引入的。尽管它被称为回归树,但是并没有使用线性回归方法,而是基于到达叶节点的输出平均值做预测的。第二类称为模型树,这是一种鲜为人知的算法,但功能要比回归树强大,模型树和回归树以大致相同的方式生长,但是在每个叶子节点处会根据到达该叶子节点的数据建立多元线性回归模型。

1.回归树算法原理

假设XY分别是输入和输出变量(连续型变量),在训练集所在的输入空间中,递归地将每个区域划分为两个子区域,根据每个子区域上输出值的平均值作为预测结果,构建二叉树。
训练数据集:
D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}
选择最优划分属性j和划分属性值s:
\min_{j,s}[\min_{c_1} \sum_{x_i \in R_1(j,s)}(y_i-c_1)^2+\min_{c_2} \sum_{x_i \in R_2(j,s)}(y_i-c_2)^2]

R_i:表示被二元划分的两个输入空间
c_i:表示R_i空间对应的固定输出值
原理:遍历属性j和对应的划分属性值s,找到使该式最小的(j,s)

选定(j,s)对后,划分区域并决定相应的输出值:
R_1(j,s)=\{x|x^{j}≤s\},R_2(j,s)=\{x|x^{j}>s\}
\hat{c}_m = \frac{1}{N_m}\sum_{x_i \in R_m(j,s)}y_i,x\in R_m,m=1,2
继续对两个子区域调用上述步骤,直到满足停止条件,最终将输入空间划分为M个区域R_1,R_2,...R_M,生成决策树:
f(x)=\sum_{m=1}^M \hat c_m I (x\in R_m)

2.回归树的问题

下图是我对一个数据集应用回归树和模型树算法后真实值(横轴)与预测值(纵轴)的散点图。可以看到回归树只能预测有限个值(这取决于划分的输出空间个数M),本质上仍然是在做分类,然后对每个分类赋予到达该叶节点的类平均值。相比之下,模型树在回归方面的表现更加出色。

image.png

3.模型树:回归树的进阶版本

前面讲回归树的缺点时我们提到回归树的预测值是有限的,对于每一个叶节点赋予一个固定的值。模型树和回归树的生长方式一致,但是在每个叶子节点都建立的对应的多元线性回归模型,从而实现真正意义上的“回归”。

写在最后

我们简单梳理了一下决策树的原理和发展历程,并详细介绍了CART分类和回归树的算法,但还有一些关于决策树算法的其他内容我们还没有介绍。例如一棵完全生长的决策树存在过拟合的问题,我们会专门介绍决策树的剪枝;再比如基于简单决策树的Tree ensemble模型。

Reference

[1] https://blog.csdn.net/baimafujinji/article/details/53269040

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Decision Trees (DTs) 是一种用来classification和regression的无参监督学...
    婉妃阅读 6,102评论 0 8
  • 决策树 1.概述 决策树由节点和有向边组成,节点有两种类型,内部节点和叶节点,内部节点表示一个特征或属性,叶节点表...
    Evermemo阅读 2,287评论 0 1
  • 前言: 通过第前面的学习介绍了机器学习回归模型创建的流程,并且知道了机器学习要做的事情是找到目标函数,优化它,通过...
    飘涯阅读 6,378评论 4 83
  • 基本概念 决策树(decision tree)是一种常见的机器学习方法,它是基于树结构来进行决策的,这恰是人类在面...
    司马安安阅读 1,493评论 0 3
  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,845评论 0 25