machine-learning-notes
  • 封面
  • 目录
  • 前言
  • 个人前言
  • 机器学习前言
    • 什么是机器学习和模式识别
    • 机器学习的应用
    • 机器学习的流程
    • 不同的机器学习算法对相同数据预测效果不同
    • 快速入门机器学习
    • 机器学习需要参考哪些书
    • 机器学习的学习路径
    • 深度学习的学习路径
    • 互联网机器学习特定岗位所需技能
  • 机器学习面试
  • 数学基础
  • 微积分
    • 泰勒展开
    • e的直观认识
    • 傅里叶变换
    • 希尔伯特空间
  • 线性代数
    • 范数
    • 矩阵求导
    • 特征值
    • 奇异值分解
  • 概率与信息论
    • 综述概率论基本定义
    • 概率论与贝叶斯先验
    • 正态分布
    • 贝叶斯概率
    • 概率符号说明
    • 共轭先验
    • 信息论
  • 数值计算与优化
    • 最小二乘法
    • 等式约束的拉格朗日乘子法
    • 凸优化
      • 凸集和凸函数
      • 凸优化问题
  • 梯度下降算法
    • 随机梯度下降SGD
    • 动量法Momentum
    • 牛顿动量Nesterov
    • AdaGrad
    • RMSprop
    • Adadelta
    • Adam
    • Nadam
    • AMSGrad
    • AdasMax
  • 概率图模型
    • 概率图模型概论
    • 概率图简介
  • 编程基础
  • linux
    • linux常用命令
    • shell
      • 输入输出重定向
  • python
    • python简介
    • python语法
      • 基础语法
      • 数据结构
      • 过程控制
      • 函数
      • 类和对象
      • 文件操作
      • 正则表达式
    • python库
      • numpy
      • pandas
      • scipy
      • matplotlib
      • scikit-learn
    • python应用
      • 排序算法
  • 数据结构与算法
    • 数据结构
    • 算法思想
      • 排序
        • 堆排序
        • 归并排序
        • 快速排序
      • 递归
    • 剑指offer
      • 链表
      • 二叉树
      • 数组
      • 字符串
      • 栈和队列
      • 递归
      • 动态规划
      • 其他
    • leetcode
    • 编程语言
      • c++
  • Hadoop
    • Hadoop简介
    • MapReduce
  • Hive
  • Spark
  • TensorFlow
    • TensorFlow1.0
      • TensorFlow基础
      • TensorFlow基础概念解析
      • TensorFlow机器学习基础
      • Tensorflow分布式架构
    • TensorFlow2.0
  • PyTorch
  • 机器学习
  • 机器学习概论
  • 特征工程
  • 感知机
  • k近邻
  • 朴素贝叶斯
  • 线性模型
    • 最大熵模型
    • 指数族分布与广义线性模型
    • 线性回归
      • Ridge回归(岭回归)
      • Lasso回归
    • Logistic回归-对数几率回归
  • 决策树
  • 支持向量机
    • 线性可分支持向量机与硬间隔最大化
    • 线性支持向量机与软间隔最大化
    • 非线性支持向量机与核函数
    • 序列最小最优化算法SMO
    • SVM总结
  • 集成学习
    • Bagging
      • 随机森林
    • Boosting
      • AdaBoost
      • GradientBoosting
        • GBDT
        • XGBoost
          • XGBoost理论
          • XGBoost实践
    • Stacking
  • 降维
    • PCA主成分分析
    • 流形学习
  • EM算法
  • HMM隐马尔科夫模型
  • CRF条件随机场
  • 聚类
    • k均值聚类
    • 高斯混合模型
  • 主题模型
    • LDA隐狄利克雷分布
  • 知识点
    • 损失函数
    • 负采样
  • 机器学习算法总结
  • 深度学习
  • 深度学习概论
  • ANN人工神经网络
  • 知识点
    • Batch Normalization
  • CNN卷积神经网络
  • 深度学习优化算法
  • RNN循环神经网络
  • LSTM长短期记忆网络
  • GRU门控循环单元
  • GNN图神经网络
    • GNN图神经网络综述
    • GCN图卷积网络
      • GCN图卷积网络初步理解
      • GCN图卷积网络的numpy简单实现
      • GCN图卷积网络本质理解
      • GCN图卷积网络全面理解
      • SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS ICLR2017
  • 神经网络架构搜索
    • Weight-Agnostic-Neural-Networks Google2019
  • 强化学习
  • 强化学习概论
  • 马尔科夫决策过程
  • 动态规划
  • 无模型方法一:蒙特卡洛
  • 无模型方法二:时间差分
  • 无模型方法三:多步自举
  • 函数近似和深度网络
  • 策略梯度算法
  • 深度强化学习
  • 基于模型的强化学习
  • 强化学习前景
  • 自然语言处理
  • 自然语言处理概论
  • 自然语言
  • 语言模型和中文分词
  • word2vec
    • word2vec概述
    • word2vec算法原理
    • word2vec源码分析
    • word2vec实践
  • Seq2Seq模型和Attention机制
  • Self-Attention和Transformer
  • 知识图谱
  • 推荐系统
  • 推荐系统概论
  • 基础知识
  • 进阶知识
    • 机器学习
      • Factorization Machines ICDM2010
    • embedding
      • Network Embedding
        • LINE: Large-scale Information Network Embedding
    • 深度学习
      • DeepFM: A Factorization-Machine based Neural Network for CTR Prediction 2017
      • DSSM: Learning Deep Structured Semantic Models for Web Search using Clickthrough Data CIKM2013
    • 图卷积网络
      • Graph Convolutional Neural Networks for Web-Scale Recommender Systems KDD2018
    • 强化学习
      • DRN基于深度强化学习的新闻推荐模型
  • 业界应用
    • YouTube
      • Deep Neural Networks for YouTube Recommendations RecSys2016
    • Alibaba
      • Learning Tree-based Deep Model for Recommender Systems KDD2018
      • Deep Interest Network for Click-Through Rate Prediction KDD2018
      • DSIN:Deep Session Interest Network for Click-Through Rate Prediction IJCAI2019
Powered by GitBook
On this page
  • 集成学习
  • 集成学习概述
  • Bagging
  • Boosting
  • Boosting概述
  • Stacking
  • 参考资料

Was this helpful?

集成学习

PreviousSVM总结NextBagging

Last updated 5 years ago

Was this helpful?

集成学习

集成学习概述

俗话说:三个臭皮匠,顶个诸葛亮。集成学习就是几个臭皮匠集成起来比诸葛亮还牛逼。

建议阅读:《沈学华, 周志华, 吴建鑫, 等. Boosting和Bagging综述》

Bagging

Bagging就是“Bootstrap aggregating(有放回采样的集成)”的缩写。Bagging是集成学习的一种,可提高用于统计分类回归的机器学习算法的稳定性和精度,也可以减小方差,有助于防止过拟合。虽然Bagging常使用决策树(即随机森林),但是也可用于任何方法,如朴素贝叶斯等。Bagging是模型平均方法(model averaging approach)的特例。

Bagging能防止噪声影响,是因为它的样本是有放回采样,这样子一些特例就很可能不会被采集到,即使采集到,也因为投票而被否决。这样就从样本上防止了过拟合。

Bagging样本的权值是一样的,各分类器的权值也都相等(即一人一票)。

Boosting

提升方法是一种常用的统计学习方法,应用广泛且有效。在分类问题中,它通过改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能。

Boosting概述

提升的含义就是将容易找到的识别率不高的弱分类算法提升为识别率很高的强分类算法。

Boosting是一种提高任意给定学习算法(弱分类算法)准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。

它是一种框架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子集上训练生成一系列的基分类器。他可以用来提高其他弱分类算法的识别率,也就是将其他的弱分类算法作为基分类算法放于Boosting框架中,通过Boosting框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成基分类器;每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,这样在给定训练轮数n后,就可产生n个基分类器,然后Boosting框架算法将这n个基分类器进行加权融合,产生一个最后的结果分类器,在这n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。在产生单个的基分类器时可用相同的分类算法,也可用不同的分类算法,这些算法一般是不稳定的弱分类算法,如朴素贝叶斯,决策树(C4.5),神经网络(BP)等。

Boosting算法起源

Boosting的思想起源于Valiant提出的PAC ( Probably Approximately Correct: 概率近似正确)学习模型。

Valiant和 Kearns提出了弱学习和强学习的概念:一个概念(一个类)若存在

  • 识别错误率小于1/2,也即准确率仅比随机猜测略高的学习算法,称为弱学习算法;

同时,Valiant和Kearns首次提出了PAC学习模型中弱学习算法和强学习算法的等价性问题,Schapire后来证明了强可学习和弱可学习是等价的,也就是说,在PCA学习的框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。

这样一来,问题便成为,在学习中,如果已经发现了“弱学习算法”,那么能否将其提升为“强学习算法”?即任意给定仅比随机猜测略好的弱学习算法,是否可以将其提升为强学习算法?大家知道,发现弱学习算法通常要比发现抢强学习算法容易的多。那么具体如何实施提升,就成为开发提升发放时索要解决的问题。

关于提升方法的研究很多,有很多提升算法被提出,最具代表性的是AdaBoost算法。

  • 1990年,Schapire最先构造出一种多项式级的算法,对该问题做了肯定的证明,这就是最初的Boosting算法。

  • 一年后,即1991年,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确的下限。

  • 1995年,Freund和Schapire改进了Boosting算法,提出了AdaBoost(Adaptive Boosting)算法,该算法效率和Freund于1991年提出的Boosting算法几乎相同,但不需要任何关于弱学习器的先验知识,因而更容易应用到实际问题当中。

  • 之后,Freund和Schapire进一步提出了改变Boosting投票权重的AdaBoost.M1、AdaBoost.M2等算法,在机器学习领域受到了极大的关注。

Boosting方法的基本思路

对于分类问题,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易的多。提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),然后组合这些弱分类器,后成一个强分类器。大多数的提升方法都是改变训练数据的概率分布(训练数据的权值分布),针对不同的训练数据分布,调用弱学习算法,学习一系列弱分类器。

这样,对提升方法来说,有两个问题需要回答:

  • 每一轮如何改变训练数据的权值或概率分布

  • 如何将弱分类器组合成一个强分类器

关于第一个问题,AdaBoost的做法是,提高那些被前一轮弱分类器错误分类的样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大,而受到后一轮的弱分类器的更大关注。于是,分类问题被一系列的弱分类器“分而治之”。

至于第二个问题,即弱分类器的组合,AdaBoost采取加权多数表决的方法。具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大作用减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

通俗的说,AdaBoost的做法是:数据有权重,分类器也有权重。给数据分权重了,分错的话,权重会增加,该数据就越重要;同样也给臭皮匠(分类器)分等级了,有不同的地位,分类器准确率越高,权值就越大。

AdaBoost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。

Stacking

训练一个模型来组合其他各个模型。首先先训练多个不同的模型,然后再以之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。使用过stacking之后,发现其实stacking很像神经网络,通过很多模型的输出,构建中间层,最后用逻辑回归讲中间层训练得到最后的结果。

参考资料

“Boosting概述”一节参考此文章。

"Stacking"部分参考此博客。

===

识别准确率很高,并能在内完成的学习算法,称为强学习算法。

多项式时间
百度百科:Boosting
用python参加Kaggle的些许经验总结
带答案面经分享-面试中最常考的树模型!
集成学习(ensemble learning )该如何入门?
《机器学习》笔记-集成学习(8)
如何评价周志华深度森林模型
返回顶层目录
随机森林
AdaBoost
GBDT
XgBoost
集成学习概述
Bagging
Boosting
Boosting概述
GradientBoosting
Stacking