首页 > 其他分享 >Boosting之Adaboost原理

Boosting之Adaboost原理

时间:2023-01-01 17:34:52浏览次数:39  
标签:权重 样本 分类器 算法 Adaboost Boosting 原理


Boosting之Adaboost原理

1 Boosting框架

  Boosting可以看成多个不同的基分类器的线性加权和的形式,那么自然需要知道每个基分类器及其对应的权重,具体的算法逻辑见下图。

Boosting之Adaboost原理_迭代

  如上图所示,在boosting算法中每一个基分类器都依赖于前面已经生成的基分类器,所以Boosting是一种迭代的算法。根据基分类器迭代方式和权重的不同,Boosting可以分为Adaboost、GBDT、XGBoost三种方式。本文就Adaboost做原理部分的介绍,主要侧重于直观上的理解,比如权重计算的合理性等等。
Boosting算法需要解决下面两个问题:
1. 样本权重或概率分布D D 的计算
2. 基分类器权重αα的计算

2 Adaboost算法逻辑

  以二分类为例,介绍Adaboost算法

2.1 符号标记

  • 训练集样本: T={(x1,y1),(x2,y2),...,(xn,yn)}

Boosting之Adaboost原理_权值_02

Boosting之Adaboost原理_迭代_03

  • (1)样本权重更新的在分类器中的应用
  •  之前提到每一次迭代都要更新样本权重,那么样本权重怎么影响基分类器呢?有两种方式:
  • 1. 通过修改基本分类器源码,对于树模型修改信息增益或者基尼系数的公式引入权值,这里有点像代价敏感学习
  • 2. 对训练样本进行bootstrao抽样,抽样概率等于样本权值
  • 上述解释来自知乎高票答主萧瑟的回答
  • 在Sklearn中是通过resample实现的,源码[见此]1010行(https://github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/ensemble/weight_boosting.py#L297)
  • (2)样本权重更新的计算逻辑  

Boosting之Adaboost原理_权值_04

Boosting之Adaboost原理_迭代_05

3 Adaboost算法的解释

  都说Boosting更关注偏差,前面Adaboost的流程只能从直观上讲,怎么从损失函数的角度思考这一问题呢?

  Adaboost算法可以看成加法模型,损失函数为指数函数、学习算法为前向分布算法。下面围绕这三个方面谈一谈。

3.1 加法模型

  给出加法模型的形式定义:

  至此,所有证明结束,从损失函数角度理解Adaboost算法逻辑性更强。

Boosting之Adaboost原理_迭代_06

Boosting之Adaboost原理_权重_07

Boosting之Adaboost原理_权重_08

Boosting之Adaboost原理_迭代_09

Boosting之Adaboost原理_权值_10

Boosting之Adaboost原理_权值_11

Boosting之Adaboost原理_迭代_12

Boosting之Adaboost原理_权值_13

Boosting之Adaboost原理_权值_14


也许步长和迭代次数是两个比较重要的参数,下次去看sklearn的文档再回来补。

5 Summary

  周一看到周四,磨磨蹭蹭,写了两篇笔记,对Adaboost的逻辑还算比较清楚。后面争取写下GBDT和XGBoost以及python调参。对这篇笔记做一点总结。
1. Adaboost损失函数—指数损失函数
2. 为什么可以减少偏差—更关注错分的样本,并且体现在目标函数中
3. 样本权重和基分类器权重如何影响算法—样本权重影响损失函数,分类器权重影响最终投票权重
还有一些问题不太清楚:
1. Adaboost是否存在过拟合问题,怎么处理
2. Adaboost的基分类器是否可以用其他的分类器,强弱分类器做基分类器有什么不同

6 Ref

[1] 李航《统计学习方法》
​[2] 刘建平Pinard博客​​

                2018-04-26 于杭州


标签:权重,样本,分类器,算法,Adaboost,Boosting,原理
From: https://blog.51cto.com/u_15575753/5983164

相关文章

  • 51单片机教程(从原理开始基于汇编)
    【发现了关于单片机的一系列不错的文章】很多电子爱好者,都想学习单片机这门技术。下面的这一系列教程是www.51hei.com专门为初学者入门而准备的,从底层硬件入手基于汇编和c......
  • GitChat活动:MyBatis 通用 Mapper 实现原理及相关内容
    MyBatis通用Mapper是一个可以让开发人员更方便使用MyBatis的扩展,通过简单的配置,可以方便的直接获取单表的常见操作,提供如select,selectAll,selectCount,delete,up......
  • Python面向对象原理分析-元类MetaClass
    metaclass元类1.前戏对象是类实例化的结果classFoo(object):pass#第1步:调用Foo的__new__方法创建空对象。#第2步:调用Foo的__init__方法对对象进行初始化。o......
  • 华为智能基座实验【计算机组成原理】
    华为智能基座实验【计算机组成原理】​​前言​​​​推荐​​​​华为智能基座实验【计算机组成原理】​​​​1课程介绍​​​​1.1简介​​​​1.2内容描述​​​​1.......
  • Linux 多线程原理深剖
    目录​​传统艺能......
  • 【单元测试】SpringRunner执行原理
     https://zhuanlan.zhihu.com/p/571520010  SpringRunner实现Junit暴露的BlockJUnit4ClassRunner  SpringJUnit4ClassRunner实现了BlockJUnit4ClassRunner,它......
  • DHCP原理与配置
    一、了解DHCP服务DHCP(动态主机配置协议)通常被应用在大型的居于网络环境中,主要作用是集中的管理、分配IP地址,是网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器......
  • 数据挖掘原理与应用期末考试复习
    1绪论数据挖掘定义数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。数据挖掘......
  • 浅谈C语言编译原理
    C语言我们在学习计算机学科时,往往最先接触到的编程语言是C,它是所有语言中,最接近底层的高级语言之一,因而它具有执行速度快的优点。但它又具有开发周期长和对于经验不足......
  • 值得看!!!---大白话5分钟带你走进人工智能-第32节集成学习之最通俗理解XGBoost原理和
    目录如下:本节讲解XGBoost的原理~目录​​1、回顾:​​​​1.1有监督学习中的相关概念​​​​1.2回归树概念​​​​1.3树的优点​​​​2、怎么训练模型:​​​​2.1案例......