机器学习系列7:CART树和剪枝

一、剪枝

1. 为什么要剪枝

在决策树生成的时候,更多考虑的是训练数据,而不是未知数据,这会导致过拟合,使树过于复杂,对于未知的样本不准确。

2. 剪枝的依据——通过极小化决策树的损失函数

定义:
设树T的叶节点个数为|T|
t 是树T的叶节点,该叶节点有N_t个样本,
其中属于k类的样本点有N_{tk}个,k = 1,2,....,K
H_t(T)是叶节点的经验熵
\alpha \ge 0是超参数

损失函数的定义为:C_\alpha(T)=\sum_{t=1}^{|T|}N_tH_t(T)+\alpha|T|
经验熵为:H_t(T)=-\sum_k\frac{N_{tk}}{N_t}log \frac{N_{tk}}{N_t}
代入简化:
令:C(T)=\sum_{t=1}^{|T|}N_tH_t(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^{K}N_{tk}log\frac{N_{tk}}{N_t}
则:C_\alpha(T)=C(T)+\alpha|T|

\alpha的作用:

  • 控制着预测误差和树复杂度之间的平衡
  • \alpha大,促使选择更为简单的树
  • \alpha小,选择更为复杂的树
  • \alpha = 0, 只考虑模型与训练数据的拟合程度,不考虑复杂度

3. 剪枝算法

  • 输入:未剪枝的决策树T,超参数\alpha
  • 输出: 修剪好的树T_\alpha
    (1)计算每个叶节点的经验熵。
    (2)递归的从树的叶节点向上回溯。 设一组叶节点回溯到其父节点之前和之后的整体树分别为T_BT_A,若他们的损失函数:C_\alpha(T_A)\le C_\alpha (T_B)即若修剪后的子树的损失函数比原来更小,则进行剪枝,将父节点作为新的叶节点。
    (3)返回(2),知道不能继续进行,得到损失函数最小的子树T_\alpha

二、基尼指数

分类过程中,假设有K个类,样本点属于第k个类的概率为Pk,则概率分布的基尼指数定义为:\operatorname{Gini}(p)=\sum_{k=1}^{m} p_{k}\left(1-p_{k}\right)=1-\sum_{k=1}^{K} p_{k}^{2}
对于二分类的问题,若k=1时,概率是p,k=2时,概率是(1-p),则:Gini(p)=p(1-p)+(1-p)p=2p-2p^2
对于给定的样本集合D,其基尼指数为:\operatorname{Gini}(D)=1-\sum_{k=1}^{K}\left(\frac{\left|C_{k}\right|}{|D|}\right)^{2}

三、CART树

CART树全称是 classification and regression tree,既可以分类(离散数据),也可以用于回归(连续数据)。

3.1 分类树

如果数据集D根据特征A在某一取值a上进行分割,得到D1,D2两部分后,那么在特征A下集合D的基尼系数如下所示。\operatorname{Gini}(D, A)=\frac{|D 1|}{|D|} \operatorname{Gini}\left(D_{1}\right)+\frac{|D 2|}{|D|} \operatorname{Gini}\left(D_{2}\right)
其中基尼系数Gini(D)表示集合D的不确定性,基尼系数Gini(D,A)表示A=a分割后集合D的不确定性。基尼指数越大,样本集合的不确定性越大。这一点与熵相似。

对于属性A,分别计算任意属性值将数据集划分为两部分之后的Gini,选取其中的最小值,作为属性A得到的最优二分方案。然后对于训练集S,计算所有属性的最优二分方案,选取其中的最小值,作为样本及S的最优二分方案。\begin{array}{c}{\min _{i \in A}\left( \operatorname{Gini}(D, A)\right)} \\ {\min _{A \in \text {Atribute}}\left(\min _{i \in A}\left( \operatorname{Gini}(D, A)\right)\right)}\end{array}

实例详解


针对上述离散型数据,按照体温为恒温和非恒温进行划分。其中恒温时包括哺乳类5个、鸟类2个,非恒温时包括爬行类3个、鱼类3个、两栖类2个,如下所示我们计算D1,D2的基尼指数。然后计算得到特征体温下数据集的Gini指数,最后我们选择Gini最小的特征和相应的划分。

3.2 回归树

CART回归树预测回归连续型数据,假设X与Y分别是输入和输出变量,并且Y是连续变量。在训练数据集所在的输入空间中,递归的将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树。D=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right),\left(x_{3}, y_{3}\right), \ldots\left(x_{n}, y_{n}\right)\right\}选择最优切分变量j与切分点s:遍历变量j,对规定的切分变量j扫描切分点s,选择使下式得到最小值时的(j,s)对。其中Rm是被划分的输入空间,cm是空间Rm对应的固定输出值。
\min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{i}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{i}(j, s)}\left(y_{i}-c_{1}\right)^{2}\right]用选定的(j,s)对,划分区域并决定相应的输出值\begin{array}{c}{R_{1}(j, s)=\left\{x | x^{(j)} \leq s\right\}, R_{2}(j, s)=\left\{x | x^{(j)}>s\right\}} \\ {\hat{c}_{m}=\frac{1}{N_{m}} \sum_{x_{i} \in R_{m}(j, s)} y_{i}} \\ {x \in R_{m}, m=1,2}\end{array}
继续对两个子区域调用上述步骤,将输入空间划分为M个区域R1,R2,…,Rm,生成决策树。f(x)=\sum_{m=1}^{M} \hat{c}_{m} I\left(x \epsilon R_{m}\right)
当输入空间划分确定时,可以用平方误差来表示回归树对于训练数据的预测方法,用平方误差最小的准则求解每个单元上的最优输出值。\sum_{x_{i} \in R_{m}}\left(y_{i}-f\left(x_{i}\right)\right)^{2}

实例详解

image.png

考虑如上所示的连续性变量,根据给定的数据点,考虑1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5切分点。对各切分点依次求出R1,R2,c1,c2及m(s),例如当切分点s=1.5时,得到R1={1},R2={2,3,4,5,6,7,8,9,10},其中c1,c2,m(s)如下所示。c_{1}=\frac{1}{N_{m}} \sum_{x_{i} \in R_{m}(j, s)} y_{i}=\frac{1}{1} \sum_{x_{i} \in R_{1}(1,1.5)} 5.56=5.56 c_{2}=\frac{1}{N_{m}} \sum_{x_{i} \in R_{m}(j, s)} y_{i}=\frac{1}{9} \sum_{x_{i} \in R_{2}(1,1,5)}(5.70+5.91+\ldots+9.05)=7.50 m(s)=\min _{j, s}\left[\min _{c_{1}} \sum_{x_{i} \in R_{i}(j, s)}\left(y_{i}-c_{1}\right)^{2}+\min _{c_{2}} \sum_{x_{i} \in R_{i}(j, s)}\left(y_{i}-c_{1}\right)^{2}\right]=0+15.72=15.72
依次改变(j,s)对,可以得到s及m(s)的计算结果,如下表所示。

当x=6.5时,此时R1={1,2,3,4,5,6},R2={7,8,9,10},c1=6.24,c2=8.9。回归树T1(x)为 当输入空间的划分确定时,可以用平方误差来表示回归树对于训练数据的误差。
我们利用f1(x)拟合训练数据的残差(将原始训练数据减去f1(X)),如下表所示:

接下来继续对两个子区域重复调用上述步骤,直到平方差满足要求为止。
最后,将输入空间分为M个子区域R1...Rm,生成决策树:

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

推荐阅读更多精彩内容

  • 一.朴素贝叶斯 1.分类理论 朴素贝叶斯是一种基于贝叶斯定理和特征条件独立性假设的多分类的机器学习方法,所...
    wlj1107阅读 3,088评论 0 5
  • Decision Trees (DTs) 是一种用来classification和regression的无参监督学...
    婉妃阅读 6,116评论 0 8
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,519评论 0 6
  • 一. 决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树。在分类问题中,表...
    YCzhao阅读 2,136评论 0 2
  • 在内核编译时经常出现各种错误。下图是内核编译常见问题之一: "mkimage" command not found...
    Vecko阅读 2,086评论 1 4