SIGAI机器学习第二十集 AdaBoost算法1
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用
AdaBoost算法将用三节课来讲,ANN、SVM、AdaBoost这三种算法都是用三节课来讲,因为这三种算法都非常重要,都有一些成功的应用。AdaBoost和SVM一样整个理论的根基是非常完善的,而且他们都是从1995年左右开始出现,在出现的十几年里边他们都得到了成功的应用。
随即森林它是一种称为Bagging集成学习算法的具体的一种实现,而AdaBoost它是Boosting算法的一种具体的实现。
大纲:
再论集成学习算法
Boosting算法简介
AdaBoost算法简介
训练算法
训练算法的解释
与随机森林的比较
训练误差分析
再论集成学习算法:
集成学习它是整个机器学习里边的一种思想,而不是某一种具体的算法,它有很多种不同的实现,比如说随机森林、AdaBoost,都是集成学习算法具体的实现。
集成学习的精髓:是一种思想,而不是一种具体的算法,有多种不同的实现方案。预测时,依靠多个弱学习器进行预测,投票,加权。训练时,要用原始的训练集构造每个弱学习器的训练集,采样,加权。
典型实现:Bagging与Boosting。
把一些不靠谱精度不是很高的模型,组合起来,能形成一个精度大有提升的一个模型,这是集成学习一个最根本的思想。
Boosting算法简介:
Boosting算法采用了随机采样。
训练算法:每次训练一个弱分类器时,有一部分样本是被上一个弱分类器错分的,这样使得后面的弱分类器重点关注难分的样本。
预测算法:和随机森林是一样的,最后的预测结果是各个弱分类器的预测结果投票。
AdaBoost算法简介:
全称是Adaptive Boosting,自适应提升算法,是一种二分类算法,只能用于分类问题,是Boosting算法的一种实现。
用弱分类器的线性组合来构造强分类器,预测的时候根据强分类器来预测。
弱分类器不用太精确,只要保证准确率大于0.5即可,即比随机猜测要强。
弱分类器的准确率是可以保证的,对于二分类问题,如果准确率低于0.5,只要将预测结果反转即可。
样本标签值为+1和-1。
强分类器:其中,at是一个加权系数,at、ft(x)都是通过训练算法来确定的,T通过实验、人为的经验或其他判断条件来确定的。
最后用一个符号函数来做分类 :sgn(F(x)),符号函数,大于0为+1,小于0为-1。
训练算法:
要解决的核心问题:弱分类器,弱分类器权重。
给定l个训练样本(xi,yi),其中Xi是特征向量,yi为类别标签,其值为+1或-1。初始化样本权重值,所有样本的初始权重(弱分类器是有权重a的,训练样本也是有权重的,这是AdaBoost算法的一个显著特征)相等:wi0=1/l, i=1,...,l,其中0表示迭代次数下标,i表示第i个样本。
循环,对t=1,...,T依次训练每个弱分类器:
即第t个弱分类器更加注重对被第t-1个弱分类器错分的样本(对应的样本权重大),而且如果第t个弱分类器分类效果好即分类误差小则该分类器对应的权重就大。
T次循环完之后就得到整个输出的模型(T个弱分类器的组合):
整个算法分两个阶段:
1、初始化阶段
2、核心阶段,又分为三小步
训练算法的解释:
根据弱分类器的条件et<0.5,可以保证:(1-et)/et>1,从而保证弱分类器的权重是正数。
对于正确分类的样本的相对权重会降低,对于错误分类的样本的权重会升高。
在不考虑归一化因子Zt的情况下,被正确分类的样本乘的是一个小于1的数,而被错误分类的样本乘的是一个大于1的数。
被上一个弱分类器错误分类的样本权重会增大,正确分类的样本权重减小,训练下一个弱分类器时算法会关注在上一轮中被错分的样本。
形象的比喻:在每次考试之后会调整学习的重点,本次考试做对的题目下次不再重点学习;而对于做错的题目下次要重点学习这些知识点。
给样本加权重是有必要的,如果样本没有权重,每个弱分类器的训练样本是相同的(因为训练的时候没有采用随机抽样),训练出来的弱分类器也是一样的,这样训练多个弱分类器没有意义,这也是整个AdaBoost算法一个比较高明的地方。
AdaBoost算法的精髓:
关注之前被错分的样本,准确率高的弱分类器有更大的权重
问题:弱分类器是什么样的?
一般用决策树做弱分类器,但是作为弱分类器有两个原则:计算简单(因此准确率不用太高);非线性(因为强分类器是所有弱分类器的线性线性求和,如果每个弱分类器都是线性函数,那么不管怎么加权最终还是一个线性函数,因此它的建模能力有限,所以我们的弱分类器一定要是非线性的。)
与随机森林的比较:
二者都是集成学习算法,而且AdaBoost一般是用决策树做弱分类器,一般来说他们都是树的集成,这是他们比较像的地方。
根本区别:AdaBoost算法给样本加权(没有做随机采样,每个弱分类器权重是不一样的),随机森林从样本集随机采样(所有弱分类器的权重是一样的)。
随机森林要求树的深度要比较大,把每个弱学习器当作一个决策树对待;AdaBoost算法要求深度比较小,如深度为1的决策树,最后加权之后,效果照样非常好。
标准的AdaBoost算法是二分类算法。
训练误差分析:
随着迭代的进行(随着弱分类器的增多),强分类器的训练误差(在整个样本集上)会以指数级下降。即训练出来的弱分类器越多我们的强分类器越准,而且错误率是呈指数级下降的。
整个证明过程比较复杂,分两个阶段来证明:
①证明随着迭代进行,强分类器的误差下降。
强分类器在训练样本集上的错误率上界小于每一轮调整样本权重时权重归一化因子的乘积:
其中perror是强分类器F(xi)在整个样本集上的错误率,[[]]表示里边的条件成立则输出1否则输出0。F(xi)输出是一个实数值不是整数值。
由于Zt<1,所以只要①式成立,则可以说明随着迭代进行,强分类器的误差下降。①式怎么证明成立呢?
分为两步:
首先证明下面的不等式成立:
证明过程:
然后再证明:
②证明随着迭代进行,强分类器的误差呈指数下降。
怎么证明呢?只需证明perror小于一个指数函数即可。
证明过程:
SIGAI机器学习第二十集 AdaBoost算法1的更多相关文章
- SIGAI机器学习第二十一集 AdaBoost算法2
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. 大纲: ...
- SIGAI机器学习第二十二集 AdaBoost算法3
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. AdaB ...
- SIGAI机器学习第二十四集 聚类算法1
讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...
- SIGAI机器学习第二十三集 高斯混合模型与EM算法
讲授高斯混合模型的基本概念,训练算法面临的问题,EM算法的核心思想,算法的实现,实际应用. 大纲: 高斯混合模型简介实际例子训练算法面临的困难EM算法应用-视频背景建模总结 高斯混合模型简写GMM,期 ...
- SIGAI机器学习第十集 线性判别分析
讲授LDA基本思想,寻找最佳投影矩阵,PCA与LDA的比较,LDA的实际应用 前边讲的数据降维算法PCA.流行学习都是无监督学习,计算过程中没有利用样本的标签值.对于分类问题,我们要达到的目标是提取或 ...
- SIGAI机器学习第十九集 随机森林
讲授集成学习的概念,Bootstrap抽样,Bagging算法,随机森林的原理,训练算法,包外误差,计算变量的重要性,实际应用 大纲: 集成学习简介 Boostrap抽样 Bagging算法 随机森林 ...
- SIGAI机器学习第四集 基本概念
大纲: 算法分类有监督学习与无监督学习分类问题与回归问题生成模型与判别模型强化学习评价指标准确率与回归误差ROC曲线交叉验证模型选择过拟合与欠拟合偏差与方差正则化 半监督学习归类到有监督学习中去. 有 ...
- 【机器学习笔记之四】Adaboost 算法
本文结构: 什么是集成学习? 为什么集成的效果就会好于单个学习器? 如何生成个体学习器? 什么是 Boosting? Adaboost 算法? 什么是集成学习 集成学习就是将多个弱的学习器结合起来组成 ...
- 机器学习--boosting家族之Adaboost算法
最近在系统研究集成学习,到Adaboost算法这块,一直不能理解,直到看到一篇博文,才有种豁然开朗的感觉,真的讲得特别好,原文地址是(http://blog.csdn.net/guyuealian/a ...
随机推荐
- c++ 基础学习(二)—— IO 对象
1. IO 类 c++ 语言不能直接处理输入输出,而是通过一族定义在标准库中的类型来处理 IO,这些类型支持设备读取数据,向设备写入数据的 IO 的数据操作. istream 输入流类型,提供输入操作 ...
- Json 文件读写以及和IniFile 转换
JSON 文件是越来越受欢迎了,以前程序配置文件用Ini,Ini 简练,简单.方便,但是也有不少缺点,比如,没有 JSON 直观,无法存储复杂点的数据类型. 于是乎,我封装了一个TJsonFile 的 ...
- String和Irreducible Polynomial(2019牛客暑期多校训练营(第七场))
示例: 输入: 4000010010111011110 输出: 00001001 0111 01111 0 题意:给出一个只含有0和1的字符串,找出一种分割方法,使得每个分割出的字符串都是在该字符串自 ...
- SVN:修改文件后提示感叹号消失了处理办法
使用SVN发现文件修改后,默认的修改标记红色感叹号不见了 重新显示设置方法: [右键]——[TortoiseSVN]——[Setting] 在[Icon Overlays]中选择[Default]即可 ...
- vim实用操作指南
一.查看文件编码 :set fileencoding :set fileencoding=utf-8 通过该命令可直接将文件修改为UTF-8编码 强制以指定编码打开,vim中 :e ++enc=utf ...
- PB连接ORALCE数据库方法
本地必须配置连接服务
- Java基础系列7——集合系列(1)框架概述
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 集合框架概述 Jav ...
- 如何用navicat导入数据?
介绍了如何使用navicat导入数据到数据库 0背景介绍 这里用的软件版本号是11.2.7 1选择要导入的数据库,右击选择导入向导 2 选择导入数据文件的类型 根据要导入数据文件的类型,选择对应的导入 ...
- resnet的理解-- 面试笔记
上周参加了XX大学研究生推免的面试,面试老爷问到了resnet主要解决了什么问题,我下意识的回答到解决了当网络加深的时候会出现的vanishing/exploding gradients,然后面试老爷 ...
- Java的集合整理
1.List和Set都是接口,他们都继承于接口Collection,List是一个有序的可重复的集合,而Set的无序的不可重复的集合.Collection是集合的顶层接口,Collections是一个 ...