机器学习之集成学习(一)

详细参考:https://www.cnblogs.com/pinard/p/6131423.html

首先明确集成学习它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。

集成学习有两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。对于个体学习器第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。

集成策略有投票法,平均法,学习法等等。

1.bagging

bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略(一般对于分类问题集成策略选用投票法,对于回归问题集成策略选择平均法)来得到最终的强学习器(具有代表性的bagging思想的集成学习模型是随机森林(RF))。

随机采样一般采用的是自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

2.boosting

Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器(具有代表性的采用boosting思想的模型有Adaboost以及GBDT和XGBoost)。

3.stacking(模型融合)

详细解析可以参考:

https://zhuanlan.zhihu.com/p/26890738

https://www.zhihu.com/question/24598447/answer/232954415

https://zhuanlan.zhihu.com/p/33589222

如何做

假设弱学习器为(A1,A2,A3)强学习器为B,对训练数据进行五折交叉,以弱学习器A1为例(对应上图上面部分的Model1),五折交叉对应五次的Model1,每次通过上图蓝色的4份learn训练模型,通过训练出的模型预测橙色的Predict验证集部分,得到结果Predictions(维度记为[v1,1]),对五次交叉获得的Predictions进行连接组成新的数据(维度记为[v1*5,1]),同时数据集整体记为P1.同时没个fold训练出模型之后还需要对上图绿色的测试集进行预测得到的结果(维度记为[t1,1])五折则结果的维度为[t1*5,1],然后对数据取平均得到的数据维度记为[at1,1],数据整体记住T1.

对于弱学习器A2,A3同样如此,A2能够获得的数据维度记为[v2*5,1]),同时数据集整体记为P2,以及[at2,1],数据整体记住T2,A3能够获得的数据维度记为[v3*5,1]),同时数据集整体记为P3,以及[at3,1],数据整体记住T3.对P1,P2,P3组合获得数据维度[V,3]作为强学习器B的训练数据,T1,T2,T3组合获得数据维度[AT,3]作为强学习器的验证数据。

一般来说,一个好的融合的子模型应该符合以下两个假设:

1)准确性(accuracy):大部分子模型要能对最终输出有所帮助,而不是帮倒忙,应该至少比随机猜测更准确。

2)多样性(diversity):子模型间需要有所不同,长处和短处各异,(高度相关的)同质化的子模型无法互补。

于是我们想要同时提高“准确性”和“多样性”,但很快就发现它们是此消彼长、互相制约的关系。

先不考虑准确性问题,仅对多样性这方面进行考虑,可以通过如下这些方法提高多样性:

1)选用不同类型的分类器,在整个X上进行训练。此时的模型的多样性取决于子模型对于数据不同的表达能力

2) 选用同类型的分类器,但使用不同的参数此时模型的多样性取决于“不同超参数在同一模型上的差异”所决定

3) 选用相同的分类器,但在不同的训练集上进行训练此时的差异性来源于数据的差异性

4) 使用相同的分类器,但在不同特征上进行训练同理,此时的多样性来源于数据的差异性

我们因此发现,构造子模型就已经非常复杂了,融合模型有无数种组合方式,没有唯一正确的方法。融合的底线就是尽量保持“准确性”和“多样性”间的平衡因此我们特别注意,手动融合模型时一般很少构造大量的弱分类器,而是精挑细选少量的强模型进行融合。手动构造融合模型时,建议优先考虑准确性,再考虑多样性

对于模型融合而言,子模型的选择尤为重要,选择子模型时应以准确度为首要,以多样性为次要。同时需要注意的是,子模型的输出不一定在同一个取值范围内,为了更好的进行融合,应该把各个模型的取值控制在相同的范围之内。

4.Stacking的输出层为什么一般用Logistic回归的效果比较好?

stacking的有效性主要来自于特征抽取,第一层已经通过不同的模型进行了特征的抽取,把这些抽取的特征作为新的输入,即为已经使用了复杂的非线性变换,因此在输出层不需要复杂的分类器。同时这也是在stacking中第二层数据中的特征中不该包括原始特征的原因,都是为了避免过拟合现象的发生。因此,stacking的输出层不需要过分复杂的函数,用逻辑回归还有额外的好处:

1)配合正则化还可以进一步防止过拟合

2)逻辑回归的输出结果还可被理解为概率

5.Stacking和神经网络

具体参考:https://zhuanlan.zhihu.com/p/32896968(非常赞的分析,多思考)

Stacking一般来说,就是训练一个多层(一般是两层)的学习器结构,第一层(也叫学习层)用n个异质分类器或者n个同质分类器(这时要保证特征不同或者训练数据不同)将得到预测结果合并为新的特征集,并作为下一层分类器的输入。

Stacking不需要多层一般两层就好,因为层数过多会带来更严重的过拟合问题,那为什么 在stacking中堆多几层,效果提升不明显,或由于过拟合而效果下降呢?专栏的博主认为原因是,stacking中的表示,不是分布表示。而深度起作用的前提是分布表示,所以堆多层不好。第一层分类器的数量对于特征学习应该有所帮助,经验角度看越多的基分类器越好。即使有所重复和高依赖性,我们依然可以通过特征选择来处理,问题不大。

在stacking中,通过第一层的多个学习器后,有效的特征被学习出来了。从这个角度来看,stacking的第一层就是特征抽取的过程。

Stacking的缺点也非常明显,stacking往往面临很大的运算开销,在预测时需要运行多个模型。

别的非常赞的想法:

Stacking和神经网络都属于表示学习(表示学习指的是模型从原始数据中自动抽取有效特征的过程)

Stacking中的第一层可以等价于神经网络中的前 n-1层,而stacking中的最终分类层可以类比于神经网络中最后的输出层。不同点在于,stacking中不同的分类器通过异质来体现对于不同特征的表示,神经网络是从同质到异质的过程且有分布式表示的特点(distributed representation)。Stacking中应该也有分布式的特点,主要表现在多个分类器的结果并非完全不同,而有很大程度的相同之处。

stacking的第一层与神经网络的所有隐藏层都是一个高度复杂的非线性特征转换器,样本的表示经过这个变换后,得到了新的表示更好的表示,即线性可分。这样stacking的第二层与神经网络的输出层使用简单模型就足够了。

不同之处:

stacking需要宽度,深度学习不需要

深度学习需要深度,而stacking不需要

我觉得stacking和深度学习有个区别,深度学习层与层之间梯度是能传回去的,所以所有层之间会“彼此协调”,stacking每层之间并没有之间的关联,训练后面的一层不会改变前面一层的权重值。

神经网络相比于Stacking的优势,神经网络能够通过迁移学习应用到先验知识。

原文地址:https://www.cnblogs.com/dyl222/p/11086565.html

时间: 2024-11-08 18:18:02

机器学习之集成学习(一)的相关文章

机器学习算法--集成学习

1. 个体和集成 集成学习通过构建并结合多个"个体学习器"来完成学习任务.个体学习器通常由一个现有的学习算法从训练数据产生,若集成中只包含同种类型的个体学习器,称为同质集成:若包含不同类型的个体学习器,为异质集成.同质集成中的个体学习器也成为"基学习器". 如何产生并结合"好而不同"的个体学习器,恰是集成学习研究的核心. 根据个体学习器的生成方式,目前的集成学习方法大致分为两大类: (1)个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表

机器学习之集成学习

1. 概念梳理: AdaBoost: 运行过程:训练数据中的每一个样本,并赋一个权重,这些权重值构成向量D,已开始这些权重值一样. 第一次训练完,得到一个弱分类器,计算该分类器的错误率,然后调整每个样本的权重值,对同一个训练数据进行第二次训练得到第二个分类器.(第一次分对的样本权重减小,分错的权重提高.)并且AdaBoost为每个分类器都分配了一个权重值alpha. 这样,样本权重D和alpha不断训练和调整,知道错误率为0或者分类器的数目达到要求为止. bagging:从原始数据集选择S次后得

机器学习(十三) 集成学习和随机森林(上)

一.什么是集成学习 二.Soft Voting Classifier 更合理的投票,应该有的权值 三.Bagging 和 Pasting 四.oob (Out-of-Bag) 和关于Bagging的更多讨论 原文地址:https://www.cnblogs.com/zhangtaotqy/p/9581237.html

机器学习之集成学习和随机森林

一.集成学习 集成学习就是合并多个分类器的预测.一般会在一个项目快结束的时候使用集成算法,一旦建立了一些好的分类器,就可以使用集成把它们合并成一个更好的分类器.著名的集成方法:投票分类.bogging.pasting.boosting.stacking.和一些其它算法. 1.1 投票分类(少数服从多数) 令人惊奇的是这种投票分类器得出的结果经常会比集成中最好的一个分类器结果更好.事实上,即使每一个分类器都是一个弱学习器(意味着它们也就比瞎猜好点),集成后仍然是一个强学习器(高准确率),只要有足够

机器学习(十三) 集成学习和随机森林(下)

五.随机森林和 Extra-Trees 六.Ada Boosting 和 Gradient Boosting 七.Stacking 八.学习scikit-learn文档, 官方学习文档: http://scikit-learn.org http://scikit-learn.org/stable/user_guide.html 今年,Kaggle刚刚上线了Kaggle Learn模块,使用Kaggle的数据,来一点点进行机器学习实战.可以参考:https://www.kaggle.com/lea

机器学习之集成学习(二)

1.随机森林(RF) RF是对bagging的进化版,首先都是有放回的进行采样,获得n个训练集从而训练n个弱分类器,但是RF在随机选取的训练集的基础上对于特征的选择也是随机的,随机的选取一部分的特征进行弱分类器的构建,同时在划分建树的过程中也是从这些随机选取的部分特征中选择最优的特征.(使用的为同质个体学习器树模型,对于分类问题的集成策略为投票表决法,对于回归问题的集成策略为平均法) 2.Adaboost Adaboost是先为训练数据赋予相等的一个权重,然后基于训练数据训练出一个弱分类器,随后

集成学习

本篇博客主要是对周志华"机器学习"中集成学习这一章的摘抄,总结,以及自己使用过程中的一点经验. 1.集成学习的基本概念.条件及意义 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system).基于委员会学习(committee-base learning)等. 弱学习器:泛化性能略优于随机猜测的学习器:例如在二分类问题上精度略高于50%的分类器. 基学习器:集成中只包含同种类型的个体学

大白话5分钟带你走进人工智能-第二十八节集成学习之随机森林概念介绍(1)

                                                      第二十八节集成学习之随机森林概念介绍(1) 从本系列开始,我们讲解一个新的算法系列集成学习.集成学习其实是怎么样去应用决策树解决一些问题. 在机器学习领域集成学习是一种非常简单直接的提升分类器回归器预测效果的一种思路.决策树有一个困境,当层数太深的时候会有过拟合问题,当我不想过拟合,就通过预剪枝给它砍掉一部分深度,此时损失又容易太大了,导致在训练集上预测的又不怎么准.所以对于决策树很难去找

Python机器学习:7.1 集成学习

集成学习背后的思想是将不同的分类器进行组合得到一个元分类器,这个元分类器相对于单个分类器拥有更好的泛化性能.比如,假设我们从10位专家那里分别得到了对于某个事件的预测结果,集成学习能够对这10个预测结果进行组合,得到一个更准确的预测结果. 后面我们会学到,有不同的方法来创建集成模型,这一节我们先解决一个基本的问题:为什么要用集成学习?她为什么就比单个模型效果要好呢? 本书是为初学者打造的,所以集成学习这里我们也只关注最基本的集成方法:投票法(majority voting).投票法意味着我们在得