机器学习-决策树

积跬步以致千里,积怠惰以致深渊

注:本篇文章在整理时主要参考了 周志华 的《机器学习》。

主要内容

决策树是机器学习中一类常见算法,其核心思想是通过构建一个树状模型来对新样本进行预测。树的叶结点是决策结果,而所有非叶结点对应于一个个决策过程。

基本流程

一般的,一颗决策树包含一个根结点、若干内部结点和若干个叶结点;叶结点对应于决策结果,其它每个内部结点(包括根结点)则对应一个属性测试。决策树根据内部结点的属性测试结果将该结点所包含的样本集按照属性测试的结果被划分到不同的子结点中。这是一种简单且直观的“分而治之”(divide-and-conquer)策略。

决策树学习的目的是为了产生一颗泛化能力强的决策树。

决策树

上图是一棵结构简单的决策树,用于预测贷款用户是否具有偿还贷款的能力。贷款用户主要具备三个属性:是否拥有房产,是否结婚,平均月收入。每一个内部节点都表示一个属性条件判断,叶子节点表示贷款用户是否具有偿还能力。例如:用户甲没有房产,没有结婚,月收入5K。通过决策树的根节点判断,用户甲符合右边分支 (拥有房产为“否”);再判断是否结婚,用户甲符合左边分支(是否结婚为否);然后判断月收入是否大于 4k,用户甲符合左边分支 (月收入大于4K),该用户落在“可以偿还”的叶子节点上。所以预测用户甲具备偿还贷款能力。

属性划分选择

那么,我们应该如何选择最优划分属性呢?随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”(purity)越来越高。

要使得结点纯度越来越高,我们得要选择合适的指标来对纯度进行评估,并且我们也得要在这些指标上对属性的划分进行选择。目前决策树主流使用的属性划分指标为以下三个:

信息增益

“信息熵”(information entropy)是度量样本集合纯度最常用的一种指标。其代表了不同的类别的数据在总数据集中的熵的和,当样本集合越“纯”时,信息熵越小(信息熵的取值范围为0~log2(k))。

信息增益(information gain):Gain(A)=Info(D)-Info_A(D),用属性对样本集进行划分。

决策树归纳算法(ID3):

[1] 树以代表训练样本的单个结点开始。

[2] 如果样本都在同一个类,则该结点成为树叶,并用该类标号。

[3] 否则,算法使用称为信息增益的基于熵的度量作为启发信息,选择能够最好地将样本分类的属性。该属性称为该结点的“测试”或“判定”属性。

[4] 在算法的该版本中,所有的属性都是分类的,即离散值。连续属性必须离散化。

[5] 对测试属性的每个已知的值,创建一个分枝,并据此划分样本。

[6] 算法使用同样的过程,递归地形成每个划分上的样本判定树。一旦一个属性出现在一个结点上,就不必该结点的任何后代上考虑它。

递归划分步骤仅当下列条件之一成立停止:

(a) 给定结点的所有样本属于同一类。

(b) 没有剩余属性可以用来进一步划分样本。在此情况下,使用多数表决。

这涉及将给定的结点转换成树叶,并用样本中的多数所在的类标记它。替换地,可以存放结

点样本的类分布。

(c) 分枝

test_attribute=ai没有样本。在这种情况下,以samples中的多数类创建一个树叶。

增益率

实际上,信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优划分属性。

其中

增益率是让信息增益除以选择的划分属性的“固有值”(intrinsic value)。一般来说属性a的可能取值数目越多,则固有值越大,所以信息增益除以固有值后,抵消了信息增益对取值数目多的属性的偏好。

增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

决策树归纳算法(C4.5):

基尼指数

CART(Classification and Regression Tree)决策树使用“基尼指数”(Gini index)来选择划分属性。数据集D的纯度可用基尼值来度量。

基尼值
基尼指数

基尼值反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率。因此,基尼值越小,则数据集D的纯度越高。

我们在候选属性集合A中,选择那个使得划分后基尼指数最小的属性作为最优划分属性。

剪枝处理

剪枝(pruning)是决策树学习算法对付“过拟合”的主要手段。为了尽可能正确分类训练样本,会不断的进行结点划分,有时会造成决策树分支过多,这时就可能因为训练过程学得太好了,将训练集自身的一些特点当作普遍化特征进行学习而会导致过拟合。

因此,可通过主动去掉一些分支来降低过拟合的风险。目前决策树剪枝的基本策略有以下两种:

[1]预剪枝

指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能的提升,则停止划分并将当前结点标记为叶结点;

[2]后剪枝

在训练出一颗完整的决策树之后,自底向上的对非叶结点进行考察,若将该结点对应的子树替换成叶结点能提升泛化性能,则将该子树替换为叶结点。

[3]泛化性能

如何判断决策树泛化性能是否提升呢?我们采用性能评估策略将数据集分为测试集和验证集,基于属性划分准则对训练集进行属性划分,若验证集精度下降,则剪枝策略将禁止结点被划分,若验证集精度上升,则剪枝策略将保留结点划分。

一般情形下,后剪枝策略的欠拟合风险小,泛化性能往往优于预剪枝决策树。但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树要大得多。

连续与缺失值

在前边提到的决策树处理逻辑中的属性使用的都是离散值,那么当遇到属性是连续或缺失时,我们应该知道该如何处理。

[1]连续值处理

连续值属性一个合理的处理逻辑是:连续属性离散化。我们需要做的是将训练样本中该属性的所有取值进行排序,并对这排好序的取值队列进行分区划分,每一个分区即为该属性的一个离散点取值。

不失一般性,我们就取二分法(即分为两个分区,可以根据需要分为N个)来进行描述。以身高划分为例,训练集中身高数据取值(cm)排序如下:

{160,163,168,170,171,174,177,179,180,183}

因为是二分法,我们只需要找到一个划分点即可。每个划分点可放在两个取值之间,也可放在一个取值之上,这里我们取两个取值之间的中位数。那么上边例子中可选的划分点为:

{161.5,165.5,169,170.5,172.5,175.5,178,179.5,181.5}

根据不同的划分,我们可以分别计算一下信息增益的大小,然后选出一个最好的划分来。

需注意的是,和离散值不同,连续值的划分是可以在子结点上继续划分的。即你将身高划分为“小于175”和“大于等于175”两部分,对于“小于175”的子结点,你仍然可以继续划分为“小于160”和“大于160”两部分。

[2]缺失值处理

为了避免由于样本出现缺失值而导致数据信息浪费,我们需要解决两个问题:

如何在属性值缺失的情况下进行划分属性选择?

不将缺失值的样本代入选择判断的公式计算(信息增益、增益率、基尼指数)之中,只在计算完后乘以一个有值的样本比例即可。

比如训练集有10个样本,在属性 a 上,有两个样本缺失值,那么计算该属性划分的信息增益时,我们可以忽略这两个缺失值的样本来计算信息增益,然后在计算结果上乘以8/10即可。

给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

若样本 x 在划分属性 a 上取值未知,则将 x 划入所有子结点,但是对划入不同子结点中的 x 赋予不同的权值(不同子结点上的不同权值一般体现为该子结点所包含的数据占父结点数据集合的比例)。

多变量分类器

在学习任务的真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似,此时的决策树会相当复杂,由于要进行大量的属性测试,预测时间开销会很大。

若能使用斜的划分边界,则决策树模型将大为简化,这就是多变量决策树(multivariate decision tree)。在此类决策树中,非叶结点不再是仅对某个属性,而是对属性的线性组合进行测试;换言之,每个非叶结点时一个形如线性回归的线性分类器了。下图是一个在连续属性密度和含糖率上的选瓜多变量决策树样例:

注解

决策树的优点:直观,便于理解,小规模数据集有效。

决策树的缺点:不方便处理连续变量;类别较多时,错误率增长较快;可规模性一般。

总结

1)决策树采用的是一种简单且直观的“分而治之”(divide-and-conquer)策略

2)决策树根据数据集的总体纯度来衡量不同属性划分的优劣

3)当属性选择过于频繁会导致模型过拟合,这时候就需要使用剪枝算法来进行处理

4)剪枝算法的判断标准是剪枝前后模型的性能指标是否提高

5)当遇到连续值的属性时,可以通过将其拆解成两块的方式将数据转换为连续值

6)当遇到缺失值属性时,可以通过在属性选择算法中加入缺失值数据的影响来适应

7)在处理真实分类边界比较复杂的学习任务时,我们可以使用属性的线性组合来对数据进行划分

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

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,819评论 0 25
  • 目录: 1.决策树简介 2.决策树生成 a) 选择标准——熵 b) 信息增益——ID3算法 c) 信息增益率——C...
    最会设计的科研狗阅读 5,729评论 1 4
  • 本文仅作网络笔记用,不定时完善。 决策树根据输出的不同,分为回归树和分类树,但两种树的学习过程并无特别大的不同,都...
    JSong1122阅读 594评论 0 0
  • 一. 背景 1. 适合决策树应用的三个条件 训练数据记录形式是attr-value pairs 数据质量: 数据可...
    陈码工阅读 1,869评论 0 5
  • 这十年来做过的事 能令你无悔 骄傲吗 那时候你所相信的事 没有被动摇吧 对象和缘分已出现 成就还算不赖吗 旅途上你...
    爱听故事的依米阅读 183评论 0 1