经典提升算法——Adaboost
2016-05-05 10:56
239 查看
提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(决策树),并加权累加到总模型中;如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升。
梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。这种在函数域的梯度提升观点对机器学习的很多领域有深刻影响。
提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。
Adaboost算法是经典的提升算法,该算法是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的学习方法。Adaboost的训练误差是以指数速率下降的,它具有自适应性,它能自适应弱分类器的训练误差率。另外, Adaboost算法是稳健的,具有robost,调参数没有这么麻烦。但是,Adaboost算法容易出现过拟合现象。
Adaboost算法的计算步骤如下:
(1).设训练数据集
,初始化训练数据的权值分布
Adaboost:对于m=1,2,...M
(2).使用具有权值分布Dm的训练数据集学习,得到基本分类器
(3).计算Gm(x)在训练数据集上的分类误差率
(4)计算Gm(x)的系数
(5)更新训练数据集的权值分布
这里,Zm是规范化因子,确保为1
,从而使得
成为一个概率分布。
(6)构建基本分类器的线性组合
(7)得到最终分类器
注意:Adaboost不可能出现越分越差情况。如果分类器分错了某个样本,则
,
因为
,(其中误差率e一般是小于0.5,否则基本分类器就没有意义)。这就说明了对于分类分错的样本,权值提升,分类器会更加注重该样本,对于分对的样本,
,样本权值减少了。
梯度提升算法首先给定一个目标损失函数,它的定义域是所有可行的弱函数集合(基函数);提升算法通过迭代的选择一个负梯度方向上的基函数来逐渐逼近局部极小值。这种在函数域的梯度提升观点对机器学习的很多领域有深刻影响。
提升的理论意义:如果一个问题存在弱分类器,则可以通过提升的办法得到强分类器。
Adaboost算法是经典的提升算法,该算法是模型为加法模型,损失函数为指数函数,学习算法为前向分步算法时的学习方法。Adaboost的训练误差是以指数速率下降的,它具有自适应性,它能自适应弱分类器的训练误差率。另外, Adaboost算法是稳健的,具有robost,调参数没有这么麻烦。但是,Adaboost算法容易出现过拟合现象。
Adaboost算法的计算步骤如下:
(1).设训练数据集
,初始化训练数据的权值分布
Adaboost:对于m=1,2,...M
(2).使用具有权值分布Dm的训练数据集学习,得到基本分类器
(3).计算Gm(x)在训练数据集上的分类误差率
(4)计算Gm(x)的系数
(5)更新训练数据集的权值分布
这里,Zm是规范化因子,确保为1
,从而使得
成为一个概率分布。
(6)构建基本分类器的线性组合
(7)得到最终分类器
注意:Adaboost不可能出现越分越差情况。如果分类器分错了某个样本,则
,
因为
,(其中误差率e一般是小于0.5,否则基本分类器就没有意义)。这就说明了对于分类分错的样本,权值提升,分类器会更加注重该样本,对于分对的样本,
,样本权值减少了。
相关文章推荐
- 使用keepalived实现mysql主从复制的自动切换
- <软件体系结构>实验框架选择及其说明
- cocos-creator之setPosition坑
- Let there be Color!: Automatic Image Colorization with Simultaneous Classification - sig - 2016
- Android 通过Socket 和服务器通讯
- lucene学习笔记
- Pip安装
- log4j.properties配置详解
- ThinkPHP 项目目录结构
- java 数组之间的转换
- iOS 后端云服务
- linux 命令行wget直接安装jdk8
- ItemTouchHelper实现滑动删除和长按拖拽功能
- 网站HTTPS 实践(一): HTTPS协议和原理
- 剑指offer5,从尾到头打印链表
- 浅析html中的自定义列表
- Swift-控制流
- Eclipse安装插件安装方式(以SVN插件安装为例)
- Windows 64位 连接Access数据库"未发现数据源名称并且未指定默认驱动程序"的解决办法
- CentOS6.5修改时间