AdaBoost 算法:回归问题
前言
在《统计学习方法》这本书中介绍了基于分类问题的AdaBoost方法,其中更新样本权重采用的是yi!=G(xi)y_i != G(x_i)yi!=G(xi),其实当时就思考这样一个问题:如果用于回归任务,那么这个更新样本权重该如何计算?本文基于此问题展开讨论。对此问题有疑问的请参考博客提升方法(boosting)和AdaBoost详解
。
AdaBoost 回归算法
我们都知道回归预测得到的结果是数值,比如 房子价格,每一个房产样本都有一个房产价格,这个价格是一个数值,不同的房产价格可能是不一样的,且价格繁多,不像分类问题,类别较固定,所以使用AdaBoost算法做回归问题时不能单单的用分类问题的AdaBoost 算法,其重点在于如何更新样本权重及分类器权重,参考资料有如下一种思路:
- 首先聊聊误差率问题,对于第m个若学习器,计算它在训练集上的最大误差:
Em=max∣yi−Gm(xi)∣E_m=max|y_i - G_m(x_i)| Em=max∣yi−Gm(xi)∣
为什么不取全体样本误差总值? - 计算每个样本的相对误差:
emi=∣yi−Gm(xI)∣Eme_{mi}=\frac{|y_i - G_m(x_I)|}{E_m} emi=Em∣yi−Gm(xI)∣
也可以用平方误差:
emi=∣yi−Gm(xI)∣2Em2e_{mi}=\frac{|y_i - G_m(x_I)|^2}{E_m^2} emi=Em2∣yi−Gm(xI)∣2 - 得到最终得到第m个弱分类器的误差率:
em=∑i=1Nwmiemie_m = \sum_{i=1}^{N}w_{mi}e_{mi} em=i=1∑Nwmiemi - 由此得到弱学习器权重系数:
am=em1−ema_m = \frac{e_m}{1-e_m} am=1−emem
这里有一个问题,eme_{m}em一定小于1嘛。
- 样本权重更新公式为:
wm+1,i=wmiZmam1−emiw_{m+1,i}=\frac{w_{mi}}{Z_m}a_{m}^{1-e_{mi}} wm+1,i=Zmwmiam1−emi
其中ZmZ_mZm是一个规范化因子:
Zm=∑i=1Nwmiam1−emiZ_m=\sum_{i=1}^{N}w_{mi}a_{m}^{1-e_{mi}} Zm=i=1∑Nwmiam1−emi
这有点像样本误差除以所有误差,计算当个样本误差占比,这个用来作为样本权重。 - 最后是结合策略,和分类问题稍有不同,采用的是对加权的弱学习器取中位数的方法,最终的强回归器为:
f(x)=∑m=1M(ln(1am))g(x)=[∑m=1M(ln(1am))]g(x)\begin{aligned} f(x)&=\sum_{m=1}^{M}(ln(\frac{1}{a_m}))g(x) \\ &= \bigg[\sum_{m=1}^{M}(ln(\frac{1}{a_m}))\bigg]g(x) \end{aligned} f(x)=m=1∑M(ln(am1))g(x)=[m=1∑M(ln(am1))]g(x)
其中,g(x)g(x)g(x)是所有amGm(x),m=1,2,...,Ma_mG_m(x),m=1,2,...,MamGm(x),m=1,2,...,M的中位数,这样分析,那么在上述公式中对于mmm的不同取值g(x)g(x)g(x)都是相同的分类器,只不多是前面的权重不同而已。感觉取中位数的依据是什么呢?取中位数的时候分类器是不是先排序?难道是按照训练分类器的先后顺序?其他分类器的权重相加也有点看不懂依据?继续参考其他博客 - 当然有些博客采用分类问题的加权平均法:
f(x)=∑m=1M(ln1am)Gm(x)f(x)=\sum_{m=1}^{M}(ln\frac{1}{a_m})G_m(x) f(x)=m=1∑M(lnam1)Gm(x)
加权平均法比较好理解,这里你也可以定义自己的组合策略
参考博客
adaboost做回归预测的时候,是怎么调整样本权重的?
机器学习校招笔记3:集成学习之Adaboost
AdaBoost 算法:回归问题相关推荐
- 统计学习方法第八章作业:分类问题AdaBoost算法、回归问题提升树算法 代码实现
分类问题AdaBoost算法 import math import numpy as npclass Adaboost_tree:def __init__(self,X,Y,feature_type= ...
- EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略
EL之AdaBoost:集成学习之AdaBoost算法的简介.应用.经典案例之详细攻略 目录 AdaBoost算法的简介 1.理解AdaBoost算法 1.1.从前向逐步递增角度来看理解AdaBoos ...
- AdaBoost算法特性
Boosting算法 提升算法是一种常见的统计学习方法,其作用为将弱的学习算法提升为强学习算法.其理论基础为:强可学习器与弱可学习器是等价的.即在在学习中发现了'弱学习算法',则可以通过某些方法将它特 ...
- 【白话机器学习】算法理论+实战之AdaBoost算法
1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...
- adaboost算法java_Adaboost 算法实例解析
Adaboost 算法实例解析 1 Adaboost的原理 1.1 Adaboost基本介绍 AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由 ...
- adaboost mh matlab,Adaboost算法的前世今生
Adaboost算法的前世今生 引言 众所周知,模式识别的方法可以按照参与识别特征的属性来区分,可以分为两大类:一.使用定量特征(可度量)如物体长度.宽度等,来描述的各种模式,这一类主要是指决策理论, ...
- 机器学习-集成之AdaBoost算法原理及实战
Boosting和AdaBoost 简介 Bagging采用的是一种多个分类器简单评分的方式.而Boosting是和Bagging对应的一种将弱分类器组合成为强分类器的算法框架,它根据分类器学习误差率 ...
- Adaboost算法和提升树算法
AdaBoost,是英文"Adaptive Boosting"(自适应增强),它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器. ...
- 提升方法之AdaBoost算法
提升方法之AdaBoost算法 作为非数学专业出身看到密密麻麻的数学公式刚开始真的是非常头疼.算法的物理逻辑的时候尚能理解,但是涉及到具体的数学公式实现就开始懵逼了:为什么要用这个公式,这个公式是怎么 ...
最新文章
- 一次奇怪的AP注册异常问题处理
- matlab上机实验报告,MATLAB上机实验
- 稍微成型点的用WEBSOCKET实现的实时日志LOG输出
- 算法笔记_202:第三届蓝桥杯软件类决赛真题(Java高职)
- python训练手势分类器_python-Keras分类器的准确性在训练过程中稳定...
- MATLAB2017深度学习工具箱总结
- EntityFramework 4.1 如何加入项目
- php excel列增加_PHP 高性能 Excel 扩展 1.2.7 发布
- --设备丢失故障表.
- 毕设题目:Matlab风电功率预测
- 温度冲击试验箱军标GJB 150与GB 2423区别
- “先进”的飞书为何搞不定钉钉?
- 笔记本链接不上wifi怎么办
- 该网站服务器出错了怎么回事,该网站服务器出错了是什么意思(图文)
- 数据结构算法实现及例题
- MapReduce经典案例总结
- 各种注释-注释多行与取消多行注释快捷键
- 移动硬盘无法读取怎么修复?这一招好用
- 如何下载唐山市卫星地图高清版大图
- hdl代码注释01:hdl_graph_slam节点文件功能总览