首页 > 编程语言 >简单易学的机器学习算法——集成方法(Ensemble Method)

简单易学的机器学习算法——集成方法(Ensemble Method)

时间:2023-06-14 21:03:27浏览次数:37  
标签:Bagging 训练 模型 Ensemble 学习 算法 Method 方法 易学


一、集成学习方法的思想

       前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体智慧”使得问题被很容易解决,那么问题来了,在机器学习问题中,对于一个复杂的任务来说,能否将很多的机器学习算法组合在一起,这样计算出来的结果会不会比使用单一的算法性能更好?这样的思路就是集成学习方法。

       集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型,主要有以下几种不同的方法:

  1. 在验证数据集上上找到表现最好的模型作为最终的预测模型;
  2. 对多个模型的预测结果进行投票或者取平均值;
  3. 对多个模型的预测结果做加权平均。

以上的几种思路就对应了集成学习中的几种主要的学习框架。

二、集成学习的主要方法

1、强可学习和弱可学习


       在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习 (strongly learnable) ”和“弱可学习 (weakly learnable) ”的概念。


       在概率近似正确 (probably approximately correct, PAC) 学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。 Schapire 指出在 PAC 学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。


2、在验证集上找表现最好的模型


       这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。


3、多个模型投票或者取平均值


       对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是 Bagging 方法. Bagging 即 Boostrap Aggregating ,其中, Boostrap 是一种有放回的抽样方法,其抽样策略是简单的随机抽样。


       在

Bagging 方法中,让学习算法训练多次,每次的训练集由初始的训练集中随机取出的

简单易学的机器学习算法——集成方法(Ensemble Method)_Ensemble Method

个训练样本组成,初始的训练样本在某次的训练集中可能出现多次或者根本不出现。最终训练出

简单易学的机器学习算法——集成方法(Ensemble Method)_权重_02

个预测函数

简单易学的机器学习算法——集成方法(Ensemble Method)_Ensemble Method_03

,最终的预测函数为

简单易学的机器学习算法——集成方法(Ensemble Method)_权重_04

,对于分类和回归问题可采用如下的两种方法:

  1. 分类问题:采用投票的方法,得票最多的类别为最终的类别
  2. 回归问题:采用简单的平均方法


简单易学的机器学习算法——集成方法(Ensemble Method)_权重_05


(图片来自参考文章2)


随机森林算法就是基于 Bagging 思想的学习算法。


4、对多个模型的预测结果做加权平均


       在上述的 Bagging 方法中,其特点在于随机化抽样,通过反复的抽样训练新的模型,最终在这些模型的基础上取平均。而在对多个模型的预测结果做加权平均则是将多个弱学习模型提升为强学习模型,这就是 Boosting 的核心思想。


       在 Boosting 算法中,初始化时对每个训练样本赋予相等的权重,如

简单易学的机器学习算法——集成方法(Ensemble Method)_集成学习_06

,然后用该学习算法对训练集训练

简单易学的机器学习算法——集成方法(Ensemble Method)_机器学习_07

轮,每次训练后,对训练失败的训练样本赋予更大的权重,也就是让学习算法在后续的学习中几种对比较难学的训练样本进行学习,从而得到一个预测函数序列

简单易学的机器学习算法——集成方法(Ensemble Method)_权重_08

,其中每个

简单易学的机器学习算法——集成方法(Ensemble Method)_集成学习_09

都有一个权重,预测效果好的预测函数的权重较大。最终的预测函数为

简单易学的机器学习算法——集成方法(Ensemble Method)_集成方法_10

对于分类和回归问题可采用如下的两种方法:

  1. 分类问题:有权重的投票方式
  2. 回归问题:加权平均


简单易学的机器学习算法——集成方法(Ensemble Method)_机器学习_11




AdaBoost 和 GBDT(Gradient Boosting Decision Tree) 是基于 Boosting 思想的两个最著名的算法。



参考文章

1、《统计学习方法》

2、统计学习方法——CART, Bagging, Random Forest, Boosting

标签:Bagging,训练,模型,Ensemble,学习,算法,Method,方法,易学
From: https://blog.51cto.com/u_16161414/6481068

相关文章

  • 简单易学的机器学习算法——K-近邻算法
    一、近邻算法(NearestNeighbors)1、近邻算法的概念近邻算法(NearestNeighbors)是一种典型的非参模型,与生成方法(generalizingmethod)不同的是,在近邻算法中,通过以实例的形式存储所有的训练样本,假设有m个训练样本:此时需要存储这m个训练样本,因此,近邻算法也称为基于实例的模型......
  • 简单易学的机器学习算法——朴素贝叶斯
    一、贝叶斯定理  1、条件概率B发生的情况下,事件A发生的概率,用表示。  2、全概率公式     含义是:如果和构成样本空间的一个划分,那么事件B的概率,就等于和的概率分别乘以B对这两个事件的条件概率之和。  3、贝叶斯推断        其中称为先验概率,即......
  • 简单易学的机器学习算法——极限学习机(ELM)
    一、极限学习机的概念    极限学习机(ExtremeLearningMachine)ELM,是由黄广斌提出来的求解单隐层神经网络的算法。    ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网络(SLFNs),在保证学习精度的前提下比传统的学习算法速度更快。二、极限学习机的原理EL......
  • 简单易学的机器学习算法——Logistic回归
    一、Logistic回归的概述  Logistic回归是一种简单的分类算法,提到“回归”,很多人可能觉得与分类没什么关系,Logistic回归通过对数据分类边界的拟合来实现分类。而“回归”也就意味着最佳拟合。要进行最佳拟合,则需要寻找到最佳的拟合参数,一些最优化方法就可以用于最佳回归系数的确......
  • 简单易学的机器学习算法——因子分解机(Factorization Machine)
    一、因子分解机FM的模型    因子分解机(FactorizationMachine,FM)是由SteffenRendle提出的一种基于矩阵分解的机器学习算法。1、因子分解机FM的优势    对于因子分解机FM来说,最大的特点是对于稀疏的数据具有很好的学习能力。现实中稀疏的数据很多,例......
  • 简单易学的机器学习算法——K-Means算法
    一、聚类算法的简介  聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。聚类算法与分类算法最大的区别是:聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。  在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似......
  • 简单易学的机器学习算法——K-Means++算法
    一、K-Means算法存在的问题由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指定,这一点对于一些未知数据存在很大的局限性。其次,在利用K-Means算法进行聚类之前,需要初始化k个聚类中心,在上述的......
  • beego: panic: 'detail' method doesn't exist in the controller StudentController
    beego使用报错panic:'detail'methoddoesn'texistinthecontrollerStudentControllergoroutine1[running]:github.com/astaxie/beego.(*ControllerRegister).addWithMethodParams(0xc0000d8d10,0x164d100,0x7,0x1736900,0xc0000c37a0,0x0,0x0,0x......
  • Method
    4PreLiminariesLet\(D^k=\left\{d_i^k\right\}_{i=1}^{N_k}\)denoteasetofdialogsbetweentheseeker\(s_k\)\(\left(0\leqk<\mathbb{N}_s\right)\)andtherecommender,where\(N_k\)isthenumberofdialogsbytheseeker\(s_k\),......
  • 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
    对象的属性其实就是数据,存放在堆中;而对象的行为(方法),就是运行逻辑,放在栈中堆区:专门用来保存对象的实例(new创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中)1.存储的全部是对象,每个对象都包含一个与......