集成学习:

集成学习Ensemble learning)是指通过构建并合并多个学习器(模型)来完成学习任务。它一般先产生一组个体学习器,再用某种策略将它们结合起来,常常可以获得比单一学习器显著优越的泛化性能(结合策略包括平均法、投票法和学习法等,具体可以参考周志华老师的西瓜书,这里就不详细讨论)。
根据个体学习器的生成方式,目前集成学习方法大致可以分两大类:

  • Boosting(个体学习器间存在强依赖关系,必须串行生成的序列化方法,即下个分类器是基于上个分类器),它主要以降低偏差为目标,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显,代表算法为AdaBoost (Freund and Schapire, 1997)、GBDT(Friedman, 2001)以及较为流行的XGBoost(Tianqi Chen, 2016)和LightGBM(Guolin Ke et al., 2017)等。
  • Bagging(个体学习器间不存在强依赖关系,可同时生成的并行化方法,即所有分类器之间没有任何关系),它主要以降低方差为目标,因此 Bagging 能基于泛化性能相当弱的学习器构建出很强的集成,代表算法就是随机森林(Breiman, 2001)。

决策树:

决策树Decision tree)是一种可以用来做分类和回归的监督学习方法,其目的是创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。它的基本流程遵循简单且直观的“分而治之”的策略,即一颗决策树从根结点开始,根据某种划分准则,生成另外的子结点,再由这些子结点一直递归到生成若干个叶结点。

决策树学习通常包括3个步骤:特征选择、决策树的生成和决策树的剪枝。决策树算法最著名的代表是ID3(Quinlan, 1986)、C4.5(Quinlan, 1993)和CART树 (classification and regression tree)(Breiman, 1984)。其中,ID3和C4.5的计算和信息熵(information entropy)有关,ID3是选择信息增益最大的来划分离散的属性,C4.5算法在选择分割属性的时候选择信息增益率最大的属性,它们都不能对连续数据直接进行处理,只能通过二分法对连续数据离散化再处理,且他们生成的不一定是二叉树;CART树则用的是基尼指数(Gini index)或MSE,可以直接处理连续数据,且生成的一定是二叉树。

CART树是在集成学习中经常被用来作为基学习器,因此这里主要讨论CART树(其他的也类似)。

1. 特征选择和树的生成

一颗好的决策树希望将每个叶结点的纯度提升,在衡量每个结点的纯度时,有信息熵、信息增益(information gain)、增益率(gain ratio)和基尼指数等度量样本集合纯度的指标。特征选择是决定用哪个特征来划分空间,一般说来,对分类树使用基尼指数最小化准则,对回归树使用MSE最小化准则。

1.1 CART分类树

在分类问题中,对于给定的样本D\mathcal{D}D,假设有KKK个类别,第kkk个类别的概率为pkp_kpk​,则基尼指数定义为
Gini(p)=∑k=1Kpk(1−pk)\begin{aligned} Gini(p)=\sum_{k=1}^Kp_k(1-p_k) \end{aligned} Gini(p)=k=1∑K​pk​(1−pk​)​基尼指数反映了从样本D\mathcal{D}D中随机抽取两个样本,其类别标记不一致的概率,故基尼指数越小,数据集的纯度越高。

同样的,对于给定的样本D\mathcal{D}D,假设有KKK个类别,第kkk个类别的数量为CkC_kCk​,则样本D\mathcal{D}D的基尼指数为:
Gini(D)=∑k=1K∣Ck∣∣D∣(1−∣Ck∣∣D∣)=∑k=1K∣Ck∣∣D∣−∑k=1K(∣Ck∣∣D∣)2=1−∑k=1K(∣Ck∣∣D∣)2\begin{aligned} Gini(\mathcal{D})&=\sum_{k=1}^K {|C_k|\over |\mathcal{D}|} (1-{|C_k|\over |\mathcal{D}|} )\\ &= \sum_{k=1}^K {|C_k|\over |\mathcal{D}|} -\sum_{k=1}^K({|C_k|\over |\mathcal{D}|} )^2\\ &= 1-\sum_{k=1}^K( {|C_k|\over |\mathcal{D}|})^2 \end{aligned} Gini(D)​=k=1∑K​∣D∣∣Ck​∣​(1−∣D∣∣Ck​∣​)=k=1∑K​∣D∣∣Ck​∣​−k=1∑K​(∣D∣∣Ck​∣​)2=1−k=1∑K​(∣D∣∣Ck​∣​)2​其中∣D∣|\mathcal{D}|∣D∣表示样本D\mathcal{D}D中的元素个数。

特别地,如果样本D\mathcal{D}D中根据特征AAA的某个值aaa,把D\mathcal{D}D分成D1\mathcal{D}_1D1​和D2\mathcal{D}_2D2​两部分,则在特征AAA的条件下,D\mathcal{D}D的基尼指数为
Gini(D,A)=∣D1∣∣D∣Gini(D1)+∣D2∣∣D∣Gini(D2)\begin{aligned} Gini(\mathcal{D},A)&= {|\mathcal{D}_1|\over |\mathcal{D}|} Gini(\mathcal{D}_1)+{|\mathcal{D}_2|\over |\mathcal{D}|} Gini(\mathcal{D}_2) \end{aligned} Gini(D,A)​=∣D∣∣D1​∣​Gini(D1​)+∣D∣∣D2​∣​Gini(D2​)​对于特征AAA,利用上式,选择那个使得划分后基尼指数最小的值作为特征AAA的最优二分方案,最后选择当前所有特征中基尼指数最小的那个特征的特征值作为最优二分方案,即
a∗=arg⁡min⁡a∈A,A∈DGini(D,A)a^*=\arg\min_{a\in A,A\in \mathcal{D}}Gini(\mathcal{D},A) a∗=arga∈A,A∈Dmin​Gini(D,A)接着重复上述划分过程,直到结点中的样本个数小于约定阈值,或者样本集的基尼指数小于预定阈值,或者没有更多特征为止,这样就生成了一颗回归树。

1.2 CART回归树

与分类树不同的是,CART回归树在处理连续型特征时,是选用MSE最小化准则。对于给定的数据D\mathcal{D}D,一个回归树对应着特征空间的一个划分以及在划分的单元上的输出值,假设已将特征空间划分为MMM个单元R1,R2⋯,RMR_1,R_2\cdots,R_MR1​,R2​⋯,RM​,并且在每个单元RmR_mRm​上有一个固定的输出值cmc_mcm​,于是回归树模型可以表示为:
f(x)=∑m=1McmI(x∈Rm)f(x)=\sum_{m=1}^Mc_m I(x\in R_m) f(x)=m=1∑M​cm​I(x∈Rm​)

当特征空间的划分确定时,可以用均方误差∑xi∈Rm(yi−f(xi))2\sum_{x_i\in R_m}(y_i-f(x_i))^2xi​∈Rm​∑​(yi​−f(xi​))2来表示回归树对于训练数据的预测误差。CART回归树就是用MSE最小的准则来求解每个单元上的最优输出值。

在任意单元RmR_mRm​中,MSE=∑xi∈Rm(yi−cm)2\mathrm{MSE}=\sum_{x_i\in R_m}(y_i-c_m)^2MSE=xi​∈Rm​∑​(yi​−cm​)2令它对cmc_mcm​求导为零,可知最优的cm^\hat{c_m}cm​^​是RmR_mRm​上所有特征xix_ixi​对应的目标变量yiy_iyi​的均值,即cm^=ave(yi∣xi∈Rm)\hat{c_m}=ave(y_i| x_i\in R_m)cm​^​=ave(yi​∣xi​∈Rm​)

对于如何划分特征空间,方法和分类树一致,即选择第jjj个变量x(j)x^{(j)}x(j)和它取的值sss,作为切分变量和切分点,定义两个区域:R1(j,s)={x∣x(j)≤s}R_1(j,s)=\{x|x^{(j)}\le s\}R1​(j,s)={x∣x(j)≤s}和R2(j,s)={x∣x(j)>s}R_2(j,s)=\{x|x^{(j)}> s\}R2​(j,s)={x∣x(j)>s},然后根据MSE准则寻找最优切分变量和切分点,即求解
min⁡j,s[min⁡c1∑xi∈R1(j,s)(yi−c1)2+min⁡c2∑xi∈R2(j,s)(yi−c2)2]\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] j,smin​[c1​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2]

对固定的特征jjj可以找到最优切分点sss
c1^=ave(yi∣xi∈R1(j,s))c2^=ave(yi∣xi∈R2(j,s))\hat{c_1}=ave(y_i| x_i\in R_1(j,s)) \ \ \ \ \ \ \hat{c_2}=ave(y_i| x_i\in R_2(j,s)) c1​^​=ave(yi​∣xi​∈R1​(j,s))      c2​^​=ave(yi​∣xi​∈R2​(j,s))

遍历所有特征,找到最优的切分变量jjj以及最优切分点sss。依此将特征空间划分为两个区域,接着对每个区域重复上述划分过程,直到满足停止条件为止,这样就生成了一颗回归树。

回归树的输出也与分类树有差别,它的输出不是类别,它采用的是用最终叶子的均值或者中位数来预测输出结果。这样的回归树通常称为最小二乘回归树(least squares regression tree)。

1.3 总结

不管分类或者回归,CART算法从根结点开始,用训练集递归建立CART树。

  1. 对于当前结点的数据集为D\mathcal{D}D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前结点停止递归;
  2. 计算样本集D\mathcal{D}D的基尼指数或MSE,如果它小于阈值,则返回决策树子树,当前结点停止递归;
  3. 计算当前结点现有的各个特征的各个特征值对数据集D\mathcal{D}D的基尼指数或MSE;
  4. 在计算出来的各个特征的各个特征值对数据集D\mathcal{D}D的基尼指数或MSE中,选择基尼指数或MSE来得到最优的特征AAA和对应的特征值aaa或者最优的切分变量jjj以及最优切分点sss;
  5. 对左右的子结点递归调用1-4步,生成决策树。

2. 树的剪枝

剪枝(pruning)是对决策树防止过拟合的主要手段。因为在决策树的生长过程中,为了尽可能的正确分类训练样本,结点的划分过程将不断重复,有时甚至会将某种意外的样本作为单独的一个分类,导致决策树分支过多,因此,可以去掉一些分支来降低过拟合的风险。

决策树剪枝的基本策略主要有:

  • 预剪枝:在决策树的生长过程中,对每个结点在划分前进行估计,若当前结点的划分不能带来泛化能力的提升,则停止划分并将当前结点标记为叶结点;
  • 后剪枝:在生成了一颗完整的决策树之后,自下而上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能提升泛化能力,则将该子树替换为叶结点。

关于泛化能力的考察,主要是基于验证集或者测试集来计算决策树整体的损失函数或者代价函数,一般包括但不限于MSE、精度、错误率、查全率、查准率等等。按照上述两种方法,分别计算剪枝前后的性能度量,最后得到一个泛化性能较好的决策树。

参考资料

机器学习,周志华
统计学习方法,李航

集成学习—决策树(CART)相关推荐

  1. 集成学习—GBDT原理理解

    GBDT,全称为梯度提升决策树,即Gradient Boosting Decision Tree.上一篇博客:集成学习-GBDT(论文研读)中已经对GBDT原始论文--Jerome H. Friedm ...

  2. A01_机器学习_3.集成学习

    从三种基本决策树到集成学习 决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型. 本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5. ...

  3. 风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)

    原文地址:https://zhuanlan.zhihu.com/p/56175215 编辑于2019-02-12,持续更新中,有风控建模工作经验的,或者想转行风控建模的小伙伴可以互相交流下... 一. ...

  4. 秦曾昌人工智能课程---7、决策树集成学习Tree Ensembles

    秦曾昌人工智能课程---7.决策树集成学习Tree Ensembles 一.总结 一句话总结: 其实机器模型减少variance的比较好的方式就是 多个模型取平均值 1.CART是什么? classi ...

  5. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  6. 机器学习的几种方法(knn,逻辑回归,SVM,决策树,随机森林,极限随机树,集成学习,Adaboost,GBDT)

     一.判别模式与生成模型基础知识 举例:要确定一个瓜是好瓜还是坏瓜,用判别模型的方法是从历史数据中学习到模型,然后通过提取这个瓜的特征来预测出这只瓜是好瓜的概率,是坏瓜的概率. 举例:利用生成模型是根 ...

  7. 脑电信号(EEG)处理中的机器学习方法总结——回归模型,SVM、K近邻、人工神经网络、朴素贝叶斯、决策树和随机森林、集成学习、模糊逻辑、LDA线性判别分析、K-means聚类、强化学习、迁移学习

    本文归纳总结了机器学习在脑电分析中的应用,并详细介绍回归模型,SVM.K近邻.人工神经网络.朴素贝叶斯.决策树和随机森林.集成学习.模糊逻辑.LDA线性判别分析.K-means聚类.强化学习.迁移学习 ...

  8. python神经网络算法pdf_Python与机器学习实战 决策树、集成学习、支持向量机与神经网络算法详解及编程实现.pdf...

    作 者 :何宇健 出版发行 : 北京:电子工业出版社 , 2017.06 ISBN号 :978-7-121-31720-0 页 数 : 315 原书定价 : 69.00 主题词 : 软件工具-程序设计 ...

  9. 树模型集成学习(Tree Embedding)

    树模型集成学习 集成学习主要有两个思想,分别是bagging和boosting.树模型的集成模型都是使用树作为基模型,最常用的cart树,常见的集成模型有RandomForest.GBDT.Xgboo ...

最新文章

  1. HDU1978 记忆化搜索
  2. gitlab重置root的密码
  3. linux(ubuntu)给vmware中的windows虚拟机共享磁盘
  4. 中国联通:已率先开通国内40个城市的5G试验网络
  5. mysql数据库增加模块_使用bind-mysql模块增加对mysql数据库的支持
  6. vue中使用富文本编辑器wangEditor及踩坑
  7. 2011-10-13
  8. 容器技术Docker K8s 19 容器服务ACK基础与进阶-容器网络管理
  9. 用Visual Studio调试asp程序
  10. 全国计算机office二级考试内容,2017年国家计算机二级office考试内容
  11. 深入浅出hibernate_夏昕_hibernate别名完成ResultSet和实体的映射
  12. firefox硬件加速 linux,全面启用 Firefox Youtube视频硬件加速
  13. CRC循环冗余校验码
  14. 架设iis网页服务器,如何用IIS架设web服务器
  15. 数据分析 | 全距和四分位距分别是什么
  16. 计算机重启事件查看,事件查看器检查上一次电脑关机时间
  17. MATLAB进行非线性拟合
  18. 网络技术实践—单臂路由器
  19. 进程调度 优先级c语言,按优先级调度算法实现进程调度的程序
  20. 推荐一款离线MarkDown编辑工具Haroopad

热门文章

  1. 【技术翻译】SIFT算子原理及其实现 (一)介绍
  2. 15-TypeScript策略模式
  3. canvas转盘抽奖的实现(二)
  4. 【读书笔记】CSS代码规范
  5. NHibernate+WCF项目实战(四)使用WAS对Webservices接口进行压力测试
  6. 大数据分析-excel常用技巧
  7. python json.dumps()函数输出json格式,使用ensure_ascii参数对中文输入的支持
  8. Oracle SQL存储过程结构、异常处理示例
  9. 洛谷2149 Elaxia的路线(dp+最短路)
  10. python3全栈开发-并发编程,多进程的基本操作