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 ...
随机推荐
- typedefine 用法
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 用法: 变量别名 例如: 单个变量: t ...
- python实战项目 — 使用bs4 爬取猫眼电影热榜(存入本地txt、以及存储数据库列表)
案例一: 重点: 1. 使用bs4 爬取 2. 数据写入本地 txt from bs4 import BeautifulSoup import requests url = "http:// ...
- max_prepared_stmt_count参数
MySQL报错[mysqld-5.5.17-log]Can't create more than max_prepared_stmt_count statements (current value: ...
- js将文字填充与canvas画布再转为图片
需求:封装consul服务的webUI: 原因:展示consul的服务信息时,需要嵌套动画,由于其没有内置的icon,所以将服务name放于图片位: 分析:展示信息时采用了卡片式的服务布局,缩放式的服 ...
- 【CF1095F】 Make It Connected(最小生成树)
题目链接 如果没有特殊边的话显然答案就是权值最小的点向其他所有点连边. 所以把特殊边和权值最小的点向其他点连的边丢一起跑最小生成树就行了. #include <cstdio> #inclu ...
- 【转载】C#中List集合SingleOrDefault和FirstOrDefault方法有何不同
在C#的List集合类的操作过程中,有时候我们会使用到List集合的SingleOrDefault方法和FirstOrDefault等方法,这2个方法都是System.Linq.Enumerable类 ...
- 微信小程序组件通信入门及组件生命周期函数
组件生命周期函数链接地址:https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.h ...
- C# NPOI Excel 合并单元格和取消单元格
1.合并单元操作 //合并单元格 /** 第一个参数:从第几行开始合并 第二个参数:到第几行结束合并 第三个参数:从第几列开始合并 第四个参数:到第几列结束合并 **/ CellRangeAddres ...
- 使用企业证书给iOS应用重签
来源:https://github.com/sailtsao/iReSign 这里有个开源的签名工具,已经修改为支持dylib frameworks等的签名了,使用这个签名不会出现任何问题 iReSi ...
- live555的使用(转载)
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP.RTSP.SIP等的支持.Live555实现 了对多种音视频编码格式的音视频数据的流 ...