随机森林对特征的取值范围敏感皮肤的特征吗

利用随机森林做特征选择 - CSDN博客
利用随机森林做特征选择
& & & & 随机森林具有准确率高、鲁棒性好、易于使用等优点,这使得它成为了目前最流行的机器学习算法之一。随机森林提供了两种特征选择的方法:mean decrease impurity和mean
decrease accuracy。
平均不纯度减少----mean decrease impurity
& & & & 随机森林由多个决策树构成。决策树中的每一个节点都是关于某个特征的条件,为的是将数据集按照不同的响应变量一分为二。利用不纯度可以确定节点(最优条件),对于分类问题,通常采用或者,对于回归问题,通常采用的是或者最小二乘拟合。当训练决策树的时候,可以计算出每个特征减少了多少树的不纯度。对于一个决策树森林来说,可以算出每个特征平均减少了多少不纯度,并把它平均减少的不纯度作为特征选择的值。
& & & & 使用基于不纯度的方法的时候,要记住:1、这种方法存在,对具有更多类别的变量会更有利(ID3);2、对于存在关联的多个特征,其中任意一个都可以作为指示器(优秀的特征),并且一旦某个特征被选择之后,其他特征的重要度就会急剧下降,因为不纯度已经被选中的那个特征降下来了,其他的特征就很难再降低那么多不纯度了,这样一来,只有先被选中的那个特征重要度很高,其他的关联特征重要度往往较低。在理解数据时,这就会造成误解,导致错误的认为先被选中的特征是很重要的,而其余的特征是不重要的,但实际上这些特征对响应变量的作用确实非常接近的(这跟Lasso是很像的)。
& & & &&方法稍微缓解了这个问题,但总的来说并没有完全解决。
平均精确率减少----Mean decrease accuracy
& & & & 另一种常用的特征选择方法就是直接度量每个特征对模型精确率的影响。主要思路是打乱每个特征的特征值顺序,并且度量顺序变动对模型的精确率的影响。很明显,对于不重要的变量来说,打乱顺序对模型的精确率影响不会太大,但是对于重要的变量来说,打乱顺序就会降低模型的精确率。
& & & & 尽管我们在所有特征上进行了训练得到了模型,然后才得到了每个特征的重要性测试,这并不意味着我们扔掉某个或者某些重要特征后模型的性能就一定会下降很多,因为即便某个特征删掉之后,其关联特征一样可以发挥作用,让模型性能基本上不变。
本文已收录于以下专栏:
相关文章推荐
一、特征选择
        在我们做特征工程时,当我们提取完特征后,可能存在并不是所有的特征都能分类起到作用的问题,这个时候就需要使用特征选择的方法选出相对重要的特征用于构建分类器。此外,使用特征...
原文地址:/content/13/080.shtml
摘要:在随机森林介绍中提到了随机森林一个重要特征...
首先,介绍下背景,我使用的系统是CentOS7.1。
Apache Benchmark简称AB,安装有两种方式:
1.使用sudo yum install httpd-tools 命令安装(比较简...
http://xuebao./gxb/article/97-44-1-137.html
图像处理、信息检索以及生物信息学等技术...
随机森林(Random Forest)入门与实战前言集成学习(ensemble learning)是通过构建并结合多个学习器来完成学习任务,主要包含两类,一是个体学习器间存在强依赖关系、必须串行生成的...
算法性能的好坏跟数据是密不可分的,因此找到一组更具代表性的特征子集显得更加重要。在实际项目中,因为有的特征对模型而言是冗余的,它对算法的性能会产生负面影响,此时就需要做特征选择。特征选择的目的就是从一...
刚看到一篇介绍特征筛选的文章,里面介绍基于模型的特征排名,附加了一个随机森林的python程序,感觉挺好,赶紧mark下来。
程序使用了skliearn机器学习库,数据集为boston房屋价格数据,...
特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、算法都有着重要作用。
特征选择主要有两个功能...
GBDT和随机森林的相同点:
1、都是由多棵树组成
2、最终的结果都是由多棵树一起决定
GBDT和随机森林的不同点:
1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成
Sklearn是python的机器学习算法的包,在整个机器学习过程中具有非常好的口碑。我把最近看的一些东西加上自己做实验的理解做了一份总结。
1.      随机森林介绍
随机森林是一种统计学习理论,...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)随机森林和GBDT的几个核心问题 - CSDN博客
随机森林和GBDT的几个核心问题
GBDT和随机森林的相同点:
1、都是由多棵树组成
2、最终的结果都是由多棵树一起决定
GBDT和随机森林的不同点:
1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成
2、组成随机森林的树可以并行生成;而GBDT只能是串行生成
3、对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来
PS:本人暂时只能想到这些,如果还有其他,欢迎大家补充!
随机森林random forest的pro和con是什么?
优势是accuracy高,但缺点是速度会降低,并且解释性interpretability会差很多,也会有overfitting的现象。
为什么要最大化information gain?
从root到leaf,使得各class distribution的Entropy不断减低。如果相反的话,就会增加预测的不确定性。
熵entrophy的意义是什么?
首先信息量的大小和可能情况的对数函数取值有关系。变量的不确定情况越大,熵越大。
如何避免在随机森林中出现overfitting?
对树的深度的控制也即对模型复杂度的控制,可以在一定程度上避免overfitting,简言之就是shallow tree。此外就是prune,把模型训练比较复杂,看合并节点后的subtree能否降低generation error。随机选择训练集的subset,也可以实现避免overfitting。
Bagging的代价是什么?
Bagging的代价是不用单次决策树来做预测,具体哪个变量起到重要作用变得未知,所以bagging改进了预测准确率但损失了解释性。
Random forest和bagged tree的区别是什么?
随机森林的构建过程中,当考虑每个split时,都只从所有p个样本中选取随机的m个样本,作为split candidate。特别的m大概会取p的平方差。其核心目的是decorrelate不同的树。bagged tree和random forest的核心区别在于选择subset的大小。
什么是GBDT?
通过boosting的方法迭代性的构建week decision tree的ensemble。其优势是不需要feature normalization,feature selection可以在学习过程中自动的体现。并且可以指定不同的loss function。但是boosting是一个sequential
process,并非并行化的。计算非常intensive,对高维稀疏数据的feature vector表现相当poor。
GBDT训练的步骤是什么?
使用information gain来获得最好的split。然后根据best split来partition数据。低于cut的数据分至left node,高于cut的数据分至right node。接下来进行boosting,梯度函数可以有多种形式,Gradient是下一棵树的目标。
MapReduce如何实现GBDT呢?
每一个mapper得到&feature value& 以及&residual weight&。reducer积累cuts并且sort。Split数据依据cut,并且输出到DFS。
Classification tree和Regression tree的区别是什么?
回归树的output label是continnuous,而分类树的output label是离散的。因此目标函数也要做相应的调整。特别的regression tree所给出的是probabilistic, non-linear regression,regression
tree可以associate未知的独立的测试数据和dependent,continuous的预测。
本文已收录于以下专栏:
相关文章推荐
提升树GBDT 详解
For Xgboost:在前几篇笔记中以及详细介绍了决策树及提升方法的相关原理知识,本文是提升树与梯度提升方法的学习笔记,同时阅读了网络上的一些关于GBDT的博文,加强理解。为了...
简单的说:
首先,GBDT和RF都是集成方法中的经典模型,我们需要弄清楚下面几个问题: 
1、GBDT是采用boosing方法,RF采用的是baggging方法 
2、bias和va...
之前写的程序中,有些API在Spark SQLContext没有,我计算的结果先保存在rdd中,最后在使用RDD转换成dataframe进行保存,话不多说下面是代码.//一个StruceFields你...
现在在做kaggle上面的比赛,数据集过大,而且我又是本地模式运行spark,遇到了很多问题,在网上找到了一个比较好的博客内容,介绍了spark的调优,在这里分享给大家。
随着Spa...
Spark在YARN中有yarn-cluster和yarn-client两种运行模式:
I. Yarn Cluster
Spark Driver首先作为一个ApplicationMaster在...
1.JAVA多线程实现方式
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。...
本文介绍了自然语言处理中CNN模型几种常见的Max Pooling操作:Max-Pooling Over TK-Max PChunk-Max Pooling。
参考DT大数据梦工厂场景文件/home/pengyucheng/java/rdd2dfram.txt中有如下4条记录:1,hadoop,11
4,ivy,27编...
这几天在使用微博的数据来做一些分析,我用Spark Graphx来进行微博转发网络的建立。新手哦刚开始学习Spark Graphx时,可能不会使用Spark Graphx来进行关系网络的建立。下面根据...
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)随机森林回归应用中遇到的问题 - CSDN博客
随机森林回归应用中遇到的问题
随机森林算法的应用
本人在做kaggle的house prices题目时用到了随机森林回归的算法,遇到了一些问题,现在记录下来。
随机森立对于线性相关的特征是否有影响?
特征简化后效果会变好,为什么?
随机森林算法原理见。
一、线性相关性
随机森林对多元共线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用(Breiman 2001b),被誉为当前最好的算法之一(Iverson et al. 2008)。
在做实验室的时候会发现当有线性相关的特征时,选其中一个特征和同时选择两个特征的效果是一样的,即随机森林对多元共线不敏感。
在回归分析中,当自变量之间出现多重共线性现象时,常会严重影响到参数估计,扩大模型误差,并破坏模型的稳健性,因此消除多重共线性成为回归分析中参数估计的一个重要环节。现在常用的解决多元线性回归中多重共线性的回归模型有岭回归(Ridge Regression)、主成分回归(Principal
Regression简记为PCR)和偏最小二乘回归(Partial Least Square Regression简记为PLS)。
逻辑斯蒂回归对自变量的多元共线性非常敏感,要求自变量之间相互独立。随机森林则完全不需要这个前提条件。
原因分析:随机森林为什么对多元共线不敏感?
个人猜想:因为随机森林算法对特征进行了采样,可能线性相关的特征并没有在同一棵树中。
二、某个特征的取值减少后,效果会变好??
例如:feature1 原始的取值为1-10的10个取值,现在把feature1 特征简化为(1,2,3) 3个取值;则应用feature2的效果要更好一些。应用feature1和feature2一起,则和只应用feature2的效果一样(这是因为随机森林对多元共线不敏感)。
原因分析:
没有找到合理的解释,可能只是在这个数据集中有了这样的结果。不过特征简化后,可以达到减少计算量的效果。
三、随机森林总结
1.随机森林的优点是:
它的学习过程很快。在处理很大的数据时,它依旧非常高效。
随机森林可以处理大量的多达几千个的自变量(Breiman,2001)。
现有的随机森林算法评估所有变量的重要性,而不需要顾虑一般回归问题面临的多元共线性的问题。
它包含估计缺失值的算法,如果有一部分的资料遗失,仍可以维持一定的准确度。
随机森林中分类树的算法自然地包括了变量的交互作用(interaction)(Cutler, et
al.,2007),即X1的变化导致X2对Y的作用发生改变。交互作用在其他模型中(如逻辑斯蒂回归)因其复杂性经常被忽略。
随机森林对离群值不敏感,在随机干扰较多的情况下表现稳健。
随机森林不易产生对数据的过度拟合(overfit)(Breiman,2001),然而这点尚有争议(Elith and
Graham,2009)。
随机森林通过袋外误差(out-of-bag error)估计模型的误差。对于分类问题,误差是分类的错误率;对于回归问题,误差是残差的方差。随机森林的每棵分类树,都是对原始记录进行有放回的重抽样后生成的。每次重抽样大约1/3的记录没有被抽取(Liaw,2012)。没有被抽取的自然形成一个对照数据集。所以随机森林不需要另外预留部分数据做交叉验证,其本身的算法类似交叉验证,而且袋外误差是对预测误差的无偏估计(Breiman,2001)。
2.随机森林的缺点:
随机森林在解决回归问题时并没有像它在分类中表现的那么好,这是因为它并不能给出一个连续型的输出。当进行回归时,随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。
对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。
是它的算法倾向于观测值较多的类别(如果昆虫B的记录较多,而且昆虫A、B和C间的差距不大,预测值会倾向于B)。
另外,**随机森林中水平较多的分类属性的自变量(如土地利用类型 &
20个类别)比水平较少的分类属性的自变量(气候区类型&10个类别)对模型的影响大**(Deng et
al.,2011)。总之,随机森林功能强大而又简单易用,相信它会对各行各业的数据分析产生积极的推动作用。
以上仅是个人的一些总结,如果大家有更好的想法的话可以讨论交流下~~
本文已收录于以下专栏:
相关文章推荐
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判...
from sklearn.datasets import load_boston
boston = load_boston()
from sklearn.cross_validation impo...
这几天一直在看随机森林。可以说遇到任何一个有关预测的问题。都可以首先随机森林来进行预测,同时得到的结果也不会太差。在这篇文章里我首先会向大家推荐几篇写的比较好的博客。接着会将我觉得比较好的例子使用py...
前一段时间,导师要求我去使用随机森林帮他做一个分类,他给的样本是两个mat文件,应该是一个正样本,一个负样本,然后就开始了使用R做随机森林的探索之旅。
其中遇到的问题也是多种多样,包括数据处理...
简化理解,随机森林RF(Random Forest)是Bagging算法和决策树DT分类器的一种结合,能够执行分类和回归任务。除此之外,模型组合+决策器还有一种比较基本的形式是梯度提升决策树GBDT(...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)集成学习也就是说拟合训练集数据的分数还不错。当然分数高并不一定好,因为可能过拟合。现在我们将最大弱分离器个数从200增加到300。再来看看拟合分数。此时的输出为:Score: 0.
这印证了我们前面讲的,弱分离器个数越多,则拟合程度越好,当然也越容易过拟合。现在我们降低步长,将步长从上面的0.8减少到0.5,再来看看拟合分数。此时的输出为:Score: 0.
可见在同样的弱分类器的个数情况下,如果减少步长,拟合效果会下降。最后我们看看当弱分类器个数为700,步长为0.7时候的情况:此时的输出为:Score: 0.
此时的拟合分数和我们最初的300弱分类器,0.8步长的拟合程度相当。也就是说,在我们这个例子中,如果步长从0.8降到0.7,则弱分类器个数要从300增加到700才能达到类似的拟合效果。以上就是scikit-learn Adaboost类库使用的一个总结.4 Bagging与随机森林算法原理集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。4.1 bagging的原理给Bagging画了下面一张原理图。从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。什么是随机采样?随机采样(bootsrap)就是从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于我们的Bagging算法,一般会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。注意到这和GBDT的子采样是不同的。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。对于这部分大约36.8%的没有被采样到的数据,我们常常称之为袋外数据(Out Of Bag, 简称OOB)。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。4.2 bagging算法流程这里对bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。4.3 随机森林算法理解了bagging算法,随机森林(Random Forest,以下简称RF)就好理解了。它是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进。现在就来看看RF算法改进了什么。   首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提升树GBDT。第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为
,然后在这些随机选择的
个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。 如果
,则此时RF的CART决策树和普通的CART决策树没有区别。
越小,则模型越健壮,当然此时对于训练集的拟合程度会变差。也就是说
越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的
的值。除了上面两点,RF和普通的bagging算法没有什么不同, 下面简单总结下RF的算法。4.4 随机森林的推广由于RF在实际应用中的良好特性,基于RF,有很多变种算法,应用也很广泛,不光可以用于分类回归,还可以用于特征转换,异常点检测等。下面对于这些RF家族的算法中有代表性的做一个总结。4.4.1 extra treesextra trees是RF的一个变种, 原理几乎和RF一模一样,仅有区别有:1) 对于每个决策树的训练集,RF采用的是随机采样bootstrap来选择采样集作为每个决策树的训练集,而extra trees一般不采用随机采样,即每个决策树采用原始训练集。2) 在选定了划分特征后,RF的决策树会基于信息增益,基尼系数,均方差之类的原则,选择一个最优的特征值划分点,这和传统的决策树相同。但是extra trees比较的激进,他会随机的选择一个特征值来划分决策树。从第二点可以看出,由于随机选择了特征值的划分点位,而不是最优点位,这样会导致生成的决策树的规模一般会大于RF所生成的决策树。也就是说,模型的方差相对于RF进一步减少,但是偏倚相对于RF进一步增大。在某些时候,extra trees的泛化能力比RF更好。4.4.2 Totally Random Trees EmbeddingTotally Random Trees Embedding(以下简称 TRTE)是一种非监督学习的数据转化方法。它将低维的数据集映射到高维,从而让映射到高维的数据更好的运用于分类回归模型。我们知道,在支持向量机中运用了核方法来将低维的数据集映射到高维,此处TRTE提供了另外一种方法。TRTE在数据转化的过程也使用了类似于RF的方法,建立T个决策树来拟合数据。当决策树建立完毕以后,数据集里的每个数据在T个决策树中叶子节点的位置也定下来了。比如我们有3颗决策树,每个决策树有5个叶子节点,某个数据特征x划分到第一个决策树的第2个叶子节点,第二个决策树的第3个叶子节点,第三个决策树的第5个叶子节点。则x映射后的特征编码为(0,1,0,0,0,
0,0,1,0,0,
0,0,0,0,1), 有15维的高维特征。这里特征维度之间加上空格是为了强调三颗决策树各自的子编码。映射到高维特征后,可以继续使用监督学习的各种分类回归算法了。4.4.3 Isolation ForestIsolation Forest(以下简称IForest)是一种异常点检测的方法。它也使用了类似于RF的方法来检测异常点。对于在T个决策树的样本集,IForest也会对训练集进行随机采样,但是采样个数不需要和RF一样,对于RF,需要采样到采样集样本个数等于训练集个数。但是IForest不需要采样这么多,一般来说,采样个数要远远小于训练集个数?为什么呢?因为我们的目的是异常点检测,只需要部分的样本我们一般就可以将异常点区别出来了。对于每一个决策树的建立, IForest采用随机选择一个划分特征,对划分特征随机选择一个划分阈值。这点也和RF不同。另外,IForest一般会选择一个比较小的最大决策树深度max_depth,原因同样本采集,用少量的异常点检测一般不需要这么大规模的决策树。对于异常点的判断,则是将测试样本点x拟合到T颗决策树。计算在每颗决策树上该样本的叶子节点的深度
,从而可以计算出平均高度h(x)。此时我们用下面的公式计算样本点x的异常概率:s(x,m)的取值范围是[0,1],取值越接近于1,则是异常点的概率也越大。4.5 随机森林小结作为一个可以高度并行化的算法,RF在大数据时候大有可为。这里也对常规的随机森林算法的优缺点做一个总结。RF的主要优点有:1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。这是的最主要的优点。2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。3) 在训练后,可以给出各个特征对于输出的重要性。4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。6) 对部分特征缺失不敏感。RF的主要缺点有:1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。5 scikit-learn随机森林调参小结本文就从实践的角度对RF做一个总结。重点讲述scikit-learn中RF的调参注意事项,以及和GBDT调参的异同点。5.1 scikit-learn随机森林类库概述在scikit-learn中,RF的分类是RandomForestClassifier,回归类是RandomForestRegressor。当然RF的变种Extra Trees也有, 分类类ExtraTreesClassifier,回归类ExtraTreesRegressor。由于RF和Extra Trees的区别较小,调参方法基本相同,本文只关注于RF的调参。和GBDT的调参类似,RF需要调参的参数也包括两部分,第一部分是Bagging框架的参数,第二部分是CART决策树的参数。下面就对这些参数做一个介绍。5.2 RF框架参数首先关注于RF的Bagging框架的参数。这里可以和GBDT对比来学习。GBDT的框架参数比较多,重要的有最大迭代器个数,步长和子采样比例,调参起来比较费力。但是RF则比较简单,这是因为bagging框架里的各个弱学习器之间是没有依赖关系的,这减小的调参的难度。换句话说,达到同样的调参效果,RF调参时间要比GBDT少一些。下面我来看看RF重要的Bagging框架的参数,由于RandomForestClassifier和RandomForestRegressor参数绝大部分相同,这里会将它们一起讲,不同点会指出。1) n_estimators: 也就是弱学习器的最大迭代次数,或者说最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,n_estimators太大,计算量会太大,并且n_estimators到一定的数量后,再增大n_estimators获得的模型提升会很小,所以一般选择一个适中的数值。默认是100。在实际调参的过程中,我们常常将n_estimators和learning_rate一起考虑。2) oob_score :即是否采用袋外样本来评估模型的好坏。默认识False。个人推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。3) criterion: 即CART树做划分时对特征的评价标准。分类模型和回归模型的损失函数是不一样的。分类RF对应的CART分类树默认是基尼系数gini,另一个可选择的标准是信息增益。回归RF对应的CART回归树默认是均方差mse,另一个可以选择的标准是绝对值差mae。一般来说选择默认的标准就已经很好的。从上面可以看出, RF重要的框架参数比较少,主要需要关注的是 n_estimators,即RF最大的决策树个数。5.3 RF决策树参数下面我们再来看RF的决策树参数,它要调参的参数基本和GBDT相同,如下:1) RF划分时考虑的最大特征数max_features: 可以使用很多种类型的值,默认是"None",意味着划分时考虑所有的特征数;如果是"log2"意味着划分时最多考虑
个特征;如果是"sqrt"或者"auto"意味着划分时最多考虑
个特征。如果是整数,代表考虑的特征绝对数。如果是浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数。其中N为样本总特征数。一般来说,如果样本特征数不多,比如小于50,我们用默认的"None"就可以了,如果特征数非常多,我们可以灵活使用刚才描述的其他取值来控制划分时考虑的最大特征数,以控制决策树的生成时间。2) 决策树最大深度max_depth: 默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。3) 内部节点再划分所需最小样本数min_samples_split: 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。4) 叶子节点最少样本数min_samples_leaf: 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。5)叶子节点最小的样本权重和min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。6) 最大叶子节点数max_leaf_nodes: 通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。7) 节点划分最小不纯度min_impurity_split:
这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。即为叶子节点 。一般不推荐改动默认值1e-7。上面决策树参数中最重要的包括最大特征数max_features, 最大深度max_depth, 内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf。5.4 RF调参实例这里仍然使用GBDT调参时同样的数据集来做RF调参的实例,本例我们采用袋外分数来评估我们模型的好坏。首先,载入需要的类库:接着,我们把解压的数据用下面的代码载入,顺便看看数据的类别分布。可以看到类别输出如下,也就是类别0的占大多数。0
Name: Disbursed, dtype: int64
接着我们选择好样本特征和类别输出。不管任何参数,都用默认的,我们拟合下数据看看:输出如下,可见袋外分数已经很高,而且AUC分数也很高。相对于GBDT的默认参数输出,RF的默认参数拟合效果对本例要好一些。0.98005
AUC Score (Train): 0.999833
我们首先对n_estimators进行网格搜索:输出结果如下:([mean: 0.80681, std: 0.02236, params: {'n_estimators': 10},
mean: 0.81600, std: 0.03275, params: {'n_estimators': 20},
mean: 0.81818, std: 0.03136, params: {'n_estimators': 30},
mean: 0.81838, std: 0.03118, params: {'n_estimators': 40},
mean: 0.82034, std: 0.03001, params: {'n_estimators': 50},
mean: 0.82113, std: 0.02966, params: {'n_estimators': 60},
mean: 0.81992, std: 0.02836, params: {'n_estimators': 70}],
{'n_estimators': 60},
这样我们得到了最佳的弱学习器迭代次数,接着我们对决策树最大深度max_depth和内部节点再划分所需最小样本数min_samples_split进行网格搜索。输出如下:([mean: 0.79379, std: 0.02347, params: {'min_samples_split': 50, 'max_depth': 3},
mean: 0.79339, std: 0.02410, params: {'min_samples_split': 70, 'max_depth': 3},
mean: 0.79350, std: 0.02462, params: {'min_samples_split': 90, 'max_depth': 3},
mean: 0.79367, std: 0.02493, params: {'min_samples_split': 110, 'max_depth': 3},
mean: 0.79387, std: 0.02521, params: {'min_samples_split': 130, 'max_depth': 3},
mean: 0.79373, std: 0.02524, params: {'min_samples_split': 150, 'max_depth': 3},
mean: 0.79378, std: 0.02532, params: {'min_samples_split': 170, 'max_depth': 3},
看看现在模型的袋外分数:输出结果为:0.984
可见此时我们的袋外分数有一定的提高。也就是时候模型的泛化能力增强了。对于内部节点再划分所需最小样本数min_samples_split,我们暂时不能一起定下来,因为这个还和决策树其他的参数存在关联。下面我们再对内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf一起调参。输出如下:([mean: 0.82093, std: 0.02287, params: {'min_samples_split': 80, 'min_samples_leaf': 10},
mean: 0.81913, std: 0.02141, params: {'min_samples_split': 100, 'min_samples_leaf': 10},
mean: 0.82048, std: 0.02328, params: {'min_samples_split': 120, 'min_samples_leaf': 10},
最后我们再对最大特征数max_features做调参:输出如下:([mean: 0.81981, std: 0.02586, params: {'max_features': 3},
mean: 0.81639, std: 0.02533, params: {'max_features': 5},
mean: 0.82487, std: 0.02110, params: {'max_features': 7},
mean: 0.81704, std: 0.02209, params: {'max_features': 9}],
{'max_features': 7},
用搜索到的最佳参数,我们再看看最终的模型拟合:此时的输出为:0.984
可见此时模型的袋外分数基本没有提高,主要原因是0.984已经是一个很高的袋外分数了,如果想进一步需要提高模型的泛化能力,我们需要更多的数据。以上就是RF调参的一个总结。0收藏分享举报{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[],&title&:&集成学习&,&author&:&man-man-cheng-chang-19&,&content&:&\u003Cp\u003E\u003Cb\u003E以下内容来自\u003Ca href=\&http:\u002F\\u002F?target=http%3A\\u002Fpinard\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E刘建平\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003EPinard-博客园的学习笔记,总结如下:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E1 集成学习原理\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E集成学习(ensemble learning),它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本节就对集成学习的原理做一个总结。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.1 集成学习概述\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E从下图,可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-f04a9362aab_b.jpg\& data-caption=\&\& data-rawwidth=\&488\& data-rawheight=\&386\& class=\&origin_image zh-lightbox-thumb\& width=\&488\& data-original=\&https:\u002F\\u002Fv2-f04a9362aab_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='488'%20height='386'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&488\& data-rawheight=\&386\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&488\& data-original=\&https:\u002F\\u002Fv2-f04a9362aab_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-f04a9362aab_b.jpg\&\u003E\u003Cp\u003E也就是说,集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.2 集成学习之个体学习器\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。\u003C\u002Fp\u003E\u003Cp\u003E第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。\u003C\u002Fp\u003E\u003Cp\u003E第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。\u003C\u002Fp\u003E\u003Cp\u003E目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。\u003C\u002Fp\u003E\u003Cp\u003E而同质个体学习器使用最多的模型是\u003Cb\u003ECART决策树和神经网络\u003C\u002Fb\u003E。\u003C\u002Fp\u003E\u003Cp\u003E同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。\u003C\u002Fp\u003E\u003Cp\u003E下面就分别对这两类算法做一个概括总结。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.3\u003C\u002Fb\u003E \u003Cb\u003E集成学习之boosting\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003Eboosting的算法原理可以用一张图做一个概括如下:\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-1f688a9ae63_b.jpg\& data-caption=\&\& data-rawwidth=\&672\& data-rawheight=\&390\& class=\&origin_image zh-lightbox-thumb\& width=\&672\& data-original=\&https:\u002F\\u002Fv2-1f688a9ae63_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='672'%20height='390'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&672\& data-rawheight=\&390\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&672\& data-original=\&https:\u002F\\u002Fv2-1f688a9ae63_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-1f688a9ae63_b.jpg\&\u003E\u003Cp\u003E从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。\u003C\u002Fp\u003E\u003Cp\u003EBoosting系列算法里最著名算法主要有\u003Cb\u003EAdaBoost算法和提升树(boosting tree)\u003C\u002Fb\u003E系列算法。\u003C\u002Fp\u003E\u003Cp\u003E提升树系列算法里面应用最广泛的是\u003Cb\u003E梯度提升树\u003C\u002Fb\u003E(Gradient Boosting Tree)。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.4\u003C\u002Fb\u003E \u003Cb\u003E集成学习之bagging\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003EBagging的算法原理和 boosting不同,它的弱学习器之间没有依赖关系,可以并行生成,我们可以用一张图做一个概括如下:\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-7d8dd5bb5d817afbe26cd4_b.jpg\& data-caption=\&\& data-rawwidth=\&671\& data-rawheight=\&331\& class=\&origin_image zh-lightbox-thumb\& width=\&671\& data-original=\&https:\u002F\\u002Fv2-7d8dd5bb5d817afbe26cd4_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='671'%20height='331'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&671\& data-rawheight=\&331\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&671\& data-original=\&https:\u002F\\u002Fv2-7d8dd5bb5d817afbe26cd4_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-7d8dd5bb5d817afbe26cd4_b.jpg\&\u003E\u003Cp\u003E从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。\u003C\u002Fp\u003E\u003Cp\u003E对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法(Bootstap sampling),即对于m个样本的原始训练集,每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。\u003C\u002Fp\u003E\u003Cp\u003E随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.5 集成学习之结合策略\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E本节对集成学习之结合策略做一个总结。假定得到的T个弱学习器是 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Cleft%5C%7B+h_%7B1%7D%2Ch_%7B2%7D%2C...%2Ch_%7BT%7D+%5Cright%5C%7D\& alt=\&\\left\\{ h_{1},h_{2},...,h_{T} \\right\\}\& eeimg=\&1\&\u003E \u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.5.1 平均法\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。\u003C\u002Fp\u003E\u003Cp\u003E最简单的平均是算术平均,也就是说最终预测是\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-dedcc2d52e74e3da612e87_b.jpg\& data-caption=\&\& data-rawwidth=\&459\& data-rawheight=\&75\& class=\&origin_image zh-lightbox-thumb\& width=\&459\& data-original=\&https:\u002F\\u002Fv2-dedcc2d52e74e3da612e87_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='459'%20height='75'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&459\& data-rawheight=\&75\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&459\& data-original=\&https:\u002F\\u002Fv2-dedcc2d52e74e3da612e87_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-dedcc2d52e74e3da612e87_b.jpg\&\u003E\u003Cp\u003E如果每个个体学习器有一个权重w,则最终预测是\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-789dadff44e51e_b.jpg\& data-caption=\&\& data-rawwidth=\&404\& data-rawheight=\&58\& class=\&content_image\& width=\&404\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='404'%20height='58'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&404\& data-rawheight=\&58\& class=\&content_image lazy\& width=\&404\& data-actualsrc=\&https:\u002F\\u002Fv2-789dadff44e51e_b.jpg\&\u003E\u003Cp\u003E其中 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=w_%7Bi%7D\& alt=\&w_{i}\& eeimg=\&1\&\u003E 是个体学习器 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=h_%7Bi%7D\& alt=\&h_{i}\& eeimg=\&1\&\u003E 的权重,通常有\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-e9b77a27b74aa6947ead4b_b.jpg\& data-caption=\&\& data-rawwidth=\&463\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb\& width=\&463\& data-original=\&https:\u002F\\u002Fv2-e9b77a27b74aa6947ead4b_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='463'%20height='70'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&463\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&463\& data-original=\&https:\u002F\\u002Fv2-e9b77a27b74aa6947ead4b_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-e9b77a27b74aa6947ead4b_b.jpg\&\u003E\u003Cp\u003E\u003Cb\u003E1.5.2 投票法\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E对于分类问题的预测,我们通常使用的是投票法。假设预测类别是 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Cleft%5C%7B+c_%7B1%7D%2Cc_%7B2%7D%2C...%2Cc_%7BK%7D+%5Cright%5C%7D\& alt=\&\\left\\{ c_{1},c_{2},...,c_{K} \\right\\}\& eeimg=\&1\&\u003E ,对于任意一个预测样本 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=x\& alt=\&x\& eeimg=\&1\&\u003E ,我们的 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=T\& alt=\&T\& eeimg=\&1\&\u003E 个弱学习器的预测结果分别是 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Cleft%28+h_%7B1%7D%28x%29%2Ch_%7B2%7D%28x%29%2C...%2Ch_%7BT%7D%28x%29+%5Cright%29\& alt=\&\\left( h_{1}(x),h_{2}(x),...,h_{T}(x) \\right)\& eeimg=\&1\&\u003E 。\u003C\u002Fp\u003E\u003Cp\u003E最简单的投票法是\u003Cb\u003E相对多数投票法\u003C\u002Fb\u003E,也就是我们常说的少数服从多数,也就是 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=T\& alt=\&T\& eeimg=\&1\&\u003E 个弱学习器的对样本 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=x\& alt=\&x\& eeimg=\&1\&\u003E 的预测结果中,数量最多的类别 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=c_%7Bi%7D\& alt=\&c_{i}\& eeimg=\&1\&\u003E 为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。\u003C\u002Fp\u003E\u003Cp\u003E稍微复杂的投票法是\u003Cb\u003E绝对多数投票法\u003C\u002Fb\u003E,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。\u003C\u002Fp\u003E\u003Cp\u003E更加复杂的是\u003Cb\u003E加权投票法\u003C\u002Fb\u003E,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1.5.3 学习法\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E上两节的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是\u003Cb\u003Estacking\u003C\u002Fb\u003E,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。\u003C\u002Fp\u003E\u003Cp\u003E在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。\u003C\u002Fp\u003E\u003Cp\u003E以上就是集成学习原理的一个总结.\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E2 集成学习之Adaboost算法原理\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cp\u003E集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系。\u003C\u002Fp\u003E\u003Cp\u003E前者的代表算法就是是boosting系列算法。在boosting系列算法中, Adaboost是最著名的算法之一。Adaboost既可以用作分类,也可以用作回归。本节对Adaboost算法做一个总结。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E2.1\u003C\u002Fb\u003E \u003Cb\u003E回顾boosting算法的基本原理\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003Eboosting算法系列的基本思想,如下图:\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-7fdab92fad3f_b.jpg\& data-caption=\&\& data-rawwidth=\&674\& data-rawheight=\&605\& class=\&origin_image zh-lightbox-thumb\& width=\&674\& data-original=\&https:\u002F\\u002Fv2-7fdab92fad3f_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='674'%20height='605'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&674\& data-rawheight=\&605\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&674\& data-original=\&https:\u002F\\u002Fv2-7fdab92fad3f_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-7fdab92fad3f_b.jpg\&\u003E\u003Cp\u003E从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。  \u003C\u002Fp\u003E\u003Cp\u003E有几个具体的问题Boosting算法没有详细说明。\u003C\u002Fp\u003E\u003Cp\u003E1)如何计算学习误差率e?\u003C\u002Fp\u003E\u003Cp\u003E2) 如何得到弱学习器权重系数α?\u003C\u002Fp\u003E\u003Cp\u003E3)如何更新样本权重D?\u003C\u002Fp\u003E\u003Cp\u003E4) 使用何种结合策略?\u003C\u002Fp\u003E\u003Cp\u003E只要是boosting大家族的算法,都要解决这4个问题。\u003C\u002Fp\u003E\u003Cp\u003EAdaboost是怎么解决的呢?\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E2.2 Adaboost算法的基本思路\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E这里讲解Adaboost是如何解决上一节这4个问题的。\u003C\u002Fp\u003E\u003Cp\u003E假设我们的训练集样本是 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=T%3D%5Cleft%5C%7B+%5Cleft%28+x_%7B1%7D%2Cy_%7B1%7D+%5Cright%29%2C%5Cleft%28+x_%7B2%7D%2Cy_%7B2%7D+%5Cright%29%2C...%2C%5Cleft%28+x_%7Bm%7D%2Cy_%7Bm%7D+%5Cright%29+%5Cright%5C%7D\& alt=\&T=\\left\\{ \\left( x_{1},y_{1} \\right),\\left( x_{2},y_{2} \\right),...,\\left( x_{m},y_{m} \\right) \\right\\}\& eeimg=\&1\&\u003E \u003C\u002Fp\u003E\u003Cp\u003E训练集在第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱学习器的输出权重为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-834be5695ffbfd3f0deb7f263f51cbef_b.jpg\& data-caption=\&\& data-rawwidth=\&510\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb\& width=\&510\& data-original=\&https:\u002F\\u002Fv2-834be5695ffbfd3f0deb7f263f51cbef_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='510'%20height='66'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&510\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&510\& data-original=\&https:\u002F\\u002Fv2-834be5695ffbfd3f0deb7f263f51cbef_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-834be5695ffbfd3f0deb7f263f51cbef_b.jpg\&\u003E\u003Cp\u003E首先看看Adaboost的分类问题。\u003C\u002Fp\u003E\u003Cp\u003E分类问题的误差率很好理解和计算。由于多元分类是二元分类的推广,这里假设是二元分类问题,输出为 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Cleft%5C%7B+-1%2C1+%5Cright%5C%7D\& alt=\&\\left\\{ -1,1 \\right\\}\& eeimg=\&1\&\u003E ,则第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱分类器 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=G_%7Bk%7D%28x%29\& alt=\&G_{k}(x)\& eeimg=\&1\&\u003E 在训练集上的加权误差率为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-2fcf5a50ac51d31a234aa96ac75c05ff_b.jpg\& data-caption=\&\& data-rawwidth=\&511\& data-rawheight=\&61\& class=\&origin_image zh-lightbox-thumb\& width=\&511\& data-original=\&https:\u002F\\u002Fv2-2fcf5a50ac51d31a234aa96ac75c05ff_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='511'%20height='61'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&511\& data-rawheight=\&61\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&511\& data-original=\&https:\u002F\\u002Fv2-2fcf5a50ac51d31a234aa96ac75c05ff_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-2fcf5a50ac51d31a234aa96ac75c05ff_b.jpg\&\u003E\u003Cp\u003E接着我们看弱学习器权重系数,对于二元分类问题,第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱分类器 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=G_%7Bk%7D%28x%29\& alt=\&G_{k}(x)\& eeimg=\&1\&\u003E 的权重系数为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-aaeb21e9aafe9_b.jpg\& data-caption=\&\& data-rawwidth=\&482\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb\& width=\&482\& data-original=\&https:\u002F\\u002Fv2-aaeb21e9aafe9_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='482'%20height='66'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&482\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&482\& data-original=\&https:\u002F\\u002Fv2-aaeb21e9aafe9_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-aaeb21e9aafe9_b.jpg\&\u003E\u003Cp\u003E为什么这样计算弱学习器权重系数?\u003C\u002Fp\u003E\u003Cp\u003E从上式可以看出,如果分类误差率 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=e_%7Bk%7D\& alt=\&e_{k}\& eeimg=\&1\&\u003E 越大,则对应的弱分类器权重系数 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Calpha_%7Bk%7D\& alt=\&\\alpha_{k}\& eeimg=\&1\&\u003E 越小。也就是说,误差率小的弱分类器权重系数越大。\u003C\u002Fp\u003E\u003Cp\u003E第三个问题,更新样本权重 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=D\& alt=\&D\& eeimg=\&1\&\u003E 。假设第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱分类器的样本集权重系数为 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=D%28k%29%3D%5Cleft%28+w_%7Bk1%7D%2Cw_%7Bk2%7D%2C...%2Cw_%7Bkm%7D+%5Cright%29\& alt=\&D(k)=\\left( w_{k1},w_{k2},...,w_{km} \\right)\& eeimg=\&1\&\u003E ,则对应的第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k%2B1\& alt=\&k+1\& eeimg=\&1\&\u003E 个弱分类器的样本集权重系数为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-d82cbff3f43c729dc6d7cefa_b.jpg\& data-caption=\&\& data-rawwidth=\&462\& data-rawheight=\&64\& class=\&origin_image zh-lightbox-thumb\& width=\&462\& data-original=\&https:\u002F\\u002Fv2-d82cbff3f43c729dc6d7cefa_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='462'%20height='64'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&462\& data-rawheight=\&64\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&462\& data-original=\&https:\u002F\\u002Fv2-d82cbff3f43c729dc6d7cefa_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-d82cbff3f43c729dc6d7cefa_b.jpg\&\u003E\u003Cp\u003E这里 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=Z_%7Bk%7D\& alt=\&Z_{k}\& eeimg=\&1\&\u003E 是规范化因子\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-06daf2dfa155f039a634f2bc1c0507ff_b.jpg\& data-caption=\&\& data-rawwidth=\&482\& data-rawheight=\&63\& class=\&origin_image zh-lightbox-thumb\& width=\&482\& data-original=\&https:\u002F\\u002Fv2-06daf2dfa155f039a634f2bc1c0507ff_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='482'%20height='63'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&482\& data-rawheight=\&63\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&482\& data-original=\&https:\u002F\\u002Fv2-06daf2dfa155f039a634f2bc1c0507ff_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-06daf2dfa155f039a634f2bc1c0507ff_b.jpg\&\u003E\u003Cp\u003E从 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=w_%7Bk%2B1%2Ci%7D\& alt=\&w_{k+1,i}\& eeimg=\&1\&\u003E 计算公式可以看出,如果第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=i\& alt=\&i\& eeimg=\&1\&\u003E 个样本分类错误,则 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=y_%7Bi%7DG_%7Bk%7D%28x_%7Bi%7D%29%3C0\& alt=\&y_{i}G_{k}(x_{i})&0\& eeimg=\&1\&\u003E ,导致样本的权重在第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k%2B1\& alt=\&k+1\& eeimg=\&1\&\u003E 个弱分类器中增大,如果分类正确,则权重在第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k%2B1\& alt=\&k+1\& eeimg=\&1\&\u003E 个弱分类器中减少.\u003C\u002Fp\u003E\u003Cp\u003E最后一个问题是集合策略。Adaboost分类采用的是加权平均法,最终的强分类器为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-c99f9dadc9f_b.jpg\& data-caption=\&\& data-rawwidth=\&455\& data-rawheight=\&73\& class=\&origin_image zh-lightbox-thumb\& width=\&455\& data-original=\&https:\u002F\\u002Fv2-c99f9dadc9f_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='455'%20height='73'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&455\& data-rawheight=\&73\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&455\& data-original=\&https:\u002F\\u002Fv2-c99f9dadc9f_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-c99f9dadc9f_b.jpg\&\u003E\u003Cp\u003E接着看看Adaboost的回归问题。\u003C\u002Fp\u003E\u003Cp\u003E由于Adaboost的回归问题有很多变种,这里我们以Adaboost R2算法为准。\u003C\u002Fp\u003E\u003Cp\u003E先看看回归问题的误差率的问题,对于第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱学习器,计算他在训练集上的最大误差\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-40cde1a83d1f0cb2afd07cce5e051e2e_b.jpg\& data-caption=\&\& data-rawwidth=\&420\& data-rawheight=\&55\& class=\&content_image\& width=\&420\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='420'%20height='55'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&420\& data-rawheight=\&55\& class=\&content_image lazy\& width=\&420\& data-actualsrc=\&https:\u002F\\u002Fv2-40cde1a83d1f0cb2afd07cce5e051e2e_b.jpg\&\u003E\u003Cp\u003E然后计算每个样本的相对误差\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-c6efe2e60e91ca29f2dc97b_b.jpg\& data-caption=\&\& data-rawwidth=\&416\& data-rawheight=\&70\& class=\&content_image\& width=\&416\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='416'%20height='70'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&416\& data-rawheight=\&70\& class=\&content_image lazy\& width=\&416\& data-actualsrc=\&https:\u002F\\u002Fv2-c6efe2e60e91ca29f2dc97b_b.jpg\&\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-3e8ca4c68f5bc54b71caf3_b.jpg\& data-caption=\&\& data-rawwidth=\&635\& data-rawheight=\&84\& class=\&origin_image zh-lightbox-thumb\& width=\&635\& data-original=\&https:\u002F\\u002Fv2-3e8ca4c68f5bc54b71caf3_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='635'%20height='84'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&635\& data-rawheight=\&84\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&635\& data-original=\&https:\u002F\\u002Fv2-3e8ca4c68f5bc54b71caf3_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-3e8ca4c68f5bc54b71caf3_b.jpg\&\u003E\u003Cp\u003E最终得到第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 个弱学习器的误差率\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-2e50aa9bab726ea783aea7b06150bd61_b.jpg\& data-caption=\&\& data-rawwidth=\&421\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb\& width=\&421\& data-original=\&https:\u002F\\u002Fv2-2e50aa9bab726ea783aea7b06150bd61_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='421'%20height='66'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&421\& data-rawheight=\&66\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&421\& data-original=\&https:\u002F\\u002Fv2-2e50aa9bab726ea783aea7b06150bd61_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-2e50aa9bab726ea783aea7b06150bd61_b.jpg\&\u003E\u003Cp\u003E再来看看如何得到弱学习器权重系数α。这里有:\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-debcbbdcd585c_b.jpg\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&59\& class=\&origin_image zh-lightbox-thumb\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-debcbbdcd585c_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='447'%20height='59'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&59\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-debcbbdcd585c_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-debcbbdcd585c_b.jpg\&\u003E\u003Cp\u003E对于更新样本权重 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=D\& alt=\&D\& eeimg=\&1\&\u003E ,第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k%2B1\& alt=\&k+1\& eeimg=\&1\&\u003E 个弱学习器的样本集权重系数为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-9d42f41eaeb650f6c98a_b.jpg\& data-caption=\&\& data-rawwidth=\&432\& data-rawheight=\&58\& class=\&origin_image zh-lightbox-thumb\& width=\&432\& data-original=\&https:\u002F\\u002Fv2-9d42f41eaeb650f6c98a_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='432'%20height='58'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&432\& data-rawheight=\&58\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&432\& data-original=\&https:\u002F\\u002Fv2-9d42f41eaeb650f6c98a_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-9d42f41eaeb650f6c98a_b.jpg\&\u003E\u003Cp\u003E这里 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=Z_%7Bk%7D\& alt=\&Z_{k}\& eeimg=\&1\&\u003E 是规范化因子\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-f7a3facb85467dac5741e_b.jpg\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&71\& class=\&origin_image zh-lightbox-thumb\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-f7a3facb85467dac5741e_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='447'%20height='71'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&71\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-f7a3facb85467dac5741e_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-f7a3facb85467dac5741e_b.jpg\&\u003E\u003Cp\u003E最后是结合策略,和分类问题一样,采用的也是加权平均法,最终的强回归器为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-349b637bf38a8ff1bb2fb_b.jpg\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&60\& class=\&origin_image zh-lightbox-thumb\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-349b637bf38a8ff1bb2fb_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='447'%20height='60'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&447\& data-rawheight=\&60\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&447\& data-original=\&https:\u002F\\u002Fv2-349b637bf38a8ff1bb2fb_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-349b637bf38a8ff1bb2fb_b.jpg\&\u003E\u003Cp\u003E\u003Cb\u003E2.3\u003C\u002Fb\u003E \u003Cb\u003EAdaBoost分类问题的损失函数优化\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E上一节我们讲到了分类Adaboost的弱学习器权重系数公式和样本权重更新公式。但是没有解释选择这个公式的原因,让人觉得是魔法公式一样。其实它可以从Adaboost的损失函数推导出来。\u003C\u002Fp\u003E\u003Cp\u003E从另一个角度讲,Adaboost是模型为加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题。\u003C\u002Fp\u003E\u003Cp\u003E模型为加法模型好理解,我们的最终的强分类器是若干个弱分类器加权平均而得到的。\u003C\u002Fp\u003E\u003Cp\u003E前向分步学习算法也好理解,我们的算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。也就是说,第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k-1\& alt=\&k-1\& eeimg=\&1\&\u003E 轮的强学习器为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-ecb9ddecdf5519adb6c3_b.jpg\& data-caption=\&\& data-rawwidth=\&430\& data-rawheight=\&67\& class=\&origin_image zh-lightbox-thumb\& width=\&430\& data-original=\&https:\u002F\\u002Fv2-ecb9ddecdf5519adb6c3_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='430'%20height='67'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&430\& data-rawheight=\&67\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&430\& data-original=\&https:\u002F\\u002Fv2-ecb9ddecdf5519adb6c3_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-ecb9ddecdf5519adb6c3_b.jpg\&\u003E\u003Cp\u003E而第 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 轮的强学习器为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-eebbf3bdf9dd2dffdeea02_b.jpg\& data-caption=\&\& data-rawwidth=\&394\& data-rawheight=\&60\& class=\&content_image\& width=\&394\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='394'%20height='60'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&394\& data-rawheight=\&60\& class=\&content_image lazy\& width=\&394\& data-actualsrc=\&https:\u002F\\u002Fv2-eebbf3bdf9dd2dffdeea02_b.jpg\&\u003E\u003Cp\u003E上两式一比较可以得到\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-80d3fd91eb691ab97afca_b.jpg\& data-caption=\&\& data-rawwidth=\&361\& data-rawheight=\&46\& class=\&content_image\& width=\&361\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='361'%20height='46'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&361\& data-rawheight=\&46\& class=\&content_image lazy\& width=\&361\& data-actualsrc=\&https:\u002F\\u002Fv2-80d3fd91eb691ab97afca_b.jpg\&\u003E\u003Cp\u003E可见强学习器的确是通过前向分步学习算法一步步而得到的。\u003C\u002Fp\u003E\u003Cp\u003EAdaboost损失函数为指数函数,即定义损失函数为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-0acbf692d84aca7a93f492d_b.jpg\& data-caption=\&\& data-rawwidth=\&435\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb\& width=\&435\& data-original=\&https:\u002F\\u002Fv2-0acbf692d84aca7a93f492d_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='435'%20height='70'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&435\& data-rawheight=\&70\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&435\& data-original=\&https:\u002F\\u002Fv2-0acbf692d84aca7a93f492d_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-0acbf692d84aca7a93f492d_b.jpg\&\u003E\u003Cp\u003E利用前向分步学习算法的关系可以得到损失函数为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-8eeb89dcfb06_b.jpg\& data-caption=\&\& data-rawwidth=\&621\& data-rawheight=\&138\& class=\&origin_image zh-lightbox-thumb\& width=\&621\& data-original=\&https:\u002F\\u002Fv2-8eeb89dcfb06_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='621'%20height='138'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&621\& data-rawheight=\&138\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&621\& data-original=\&https:\u002F\\u002Fv2-8eeb89dcfb06_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-8eeb89dcfb06_b.jpg\&\u003E\u003Cp\u003E将这个式子带入损失函数,损失函数转化为\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-cbdb037ff6e36ff6b738_b.jpg\& data-caption=\&\& data-rawwidth=\&493\& data-rawheight=\&80\& class=\&origin_image zh-lightbox-thumb\& width=\&493\& data-original=\&https:\u002F\\u002Fv2-cbdb037ff6e36ff6b738_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='493'%20height='80'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&493\& data-rawheight=\&80\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&493\& data-original=\&https:\u002F\\u002Fv2-cbdb037ff6e36ff6b738_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-cbdb037ff6e36ff6b738_b.jpg\&\u003E\u003Cp\u003E首先,求 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=G_%7Bk%7D%28x%29\& alt=\&G_{k}(x)\& eeimg=\&1\&\u003E ,可以得到\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-16d16f9fda13b8c50f1c6_b.jpg\& data-caption=\&\& data-rawwidth=\&515\& data-rawheight=\&80\& class=\&origin_image zh-lightbox-thumb\& width=\&515\& data-original=\&https:\u002F\\u002Fv2-16d16f9fda13b8c50f1c6_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='515'%20height='80'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&515\& data-rawheight=\&80\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&515\& data-original=\&https:\u002F\\u002Fv2-16d16f9fda13b8c50f1c6_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-16d16f9fda13b8c50f1c6_b.jpg\&\u003E\u003Cp\u003E将 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=G_%7Bk%7D%28x%29\& alt=\&G_{k}(x)\& eeimg=\&1\&\u003E 带入损失函数,并对 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Calpha\& alt=\&\\alpha\& eeimg=\&1\&\u003E 求导,使其等于0,可以得到\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-39ebba8bb9dbbd0166b6fdfa_b.jpg\& data-caption=\&\& data-rawwidth=\&425\& data-rawheight=\&62\& class=\&origin_image zh-lightbox-thumb\& width=\&425\& data-original=\&https:\u002F\\u002Fv2-39ebba8bb9dbbd0166b6fdfa_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='425'%20height='62'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&425\& data-rawheight=\&62\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&425\& data-original=\&https:\u002F\\u002Fv2-39ebba8bb9dbbd0166b6fdfa_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-39ebba8bb9dbbd0166b6fdfa_b.jpg\&\u003E\u003Cp\u003E其中, \u003Cimg src=\&http:\u002F\\u002Fequation?tex=e_%7Bk%7D\& alt=\&e_{k}\& eeimg=\&1\&\u003E 为分类误差率。\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-bc216dcbe1ba88e099183a_b.jpg\& data-caption=\&\& data-rawwidth=\&606\& data-rawheight=\&217\& class=\&origin_image zh-lightbox-thumb\& width=\&606\& data-original=\&https:\u002F\\u002Fv2-bc216dcbe1ba88e099183a_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='606'%20height='217'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&606\& data-rawheight=\&217\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&606\& data-original=\&https:\u002F\\u002Fv2-bc216dcbe1ba88e099183a_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-bc216dcbe1ba88e099183a_b.jpg\&\u003E\u003Cp\u003E这样就得到了样本权重更新公式。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E2.4\u003C\u002Fb\u003E \u003Cb\u003EAdaBoost二元分类问题算法流程\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E这里对AdaBoost二元分类问题算法流程做一个总结。\u003C\u002Fp\u003E\u003Cp\u003E输入为样本集 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=T%3D%5Cleft%5C%7B+%5Cleft%28+x_%7B1%7D%2Cy_%7B1%7D+%5Cright%29%2C%5Cleft%28+x_%7B2%7D%2Cy_%7B2%7D+%5Cright%29%2C...%2C%5Cleft%28+x_%7Bm%7D%2Cy_%7Bm%7D+%5Cright%29+%5Cright%5C%7D\& alt=\&T=\\left\\{ \\left( x_{1},y_{1} \\right),\\left( x_{2},y_{2} \\right),...,\\left( x_{m},y_{m} \\right) \\right\\}\& eeimg=\&1\&\u003E ,输出为 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=%5Cleft%5C%7B+-1%2C%2B1+%5Cright%5C%7D\& alt=\&\\left\\{ -1,+1 \\right\\}\& eeimg=\&1\&\u003E ,弱分类器算法,弱分类器迭代次数 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=k\& alt=\&k\& eeimg=\&1\&\u003E 。\u003C\u002Fp\u003E\u003Cp\u003E输出为最终的强分类器 \u003Cimg src=\&http:\u002F\\u002Fequation?tex=f%28x%29\& alt=\&f(x)\& eeimg=\&1\&\u003E \u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-dce07efdd42f07a25c1da_b.jpg\& data-caption=\&\& data-rawwidth=\&770\& data-rawheight=\&573\& class=\&origin_image zh-lightbox-thumb\& width=\&770\& data-original=\&https:\u002F\\u002Fv2-dce07efdd42f07a25c1da_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='770'%20height='573'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&770\& data-rawheight=\&573\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&770\& data-original=\&https:\u002F\\u002Fv2-dce07efdd42f07a25c1da_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-dce07efdd42f07a25c1da_b.jpg\&\u003E\u003Cp\u003E对于Adaboost多元分类算法,其实原理和二元分类类似,最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fv2-90db87db727bc96119c82_b.jpg\& data-caption=\&\& data-rawwidth=\&450\& data-rawheight=\&59\& class=\&origin_image zh-lightbox-thumb\& width=\&450\& data-original=\&https:\u002F\\u002Fv2-90db87db727bc96119c82_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='450'%20height='59'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&450\& data-rawheight=\&59\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&450\& data-original=\&https:\u002F\\u002Fv2-90db87db727bc96119c82_r.jpg\& data-actualsrc=\&https:\u002F\\u002Fv2-90db87db727bc96119c82_b.jpg\&\u003E\u003Cp\u003E其中R为类别数。从上式可以看出,如果是二元分类,R=2,则上式和二元分类算法中的弱分类器的系数一致。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E2.5\u003C\u002Fb\u003E \u003Cb\u003EAdaboost回归问题的算法流程\}

我要回帖

更多关于 内心敏感的人的特征 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信