adaboost算法_学习笔记:AdaBoost算法实现

v2-5d9d88acce034124841a419db566011c_1440w.jpg?source=172ae18b
AdaBoost算法比较简单,本文重点放在算法实现上。

算法描述

输入:训练集

,其中

输出:最终加权组合起来的分类器

算法:

  1. 初始化权重
    ,其中
  2. 训练
    个基分类器
    1. 用带权重
      的训练集组训练出一个基分类器
    2. 计算这个基分类器的错误率(带权重):
    3. 计算分类器权重:
    4. 计算规范化因子:
    5. 更新权重:
      ,其中
  3. 组合得到最终分类器:

算法实现

参考代码:https://github.com/fengdu78/lihang-code/blob/master/第08章%20提升方法/8.Boost.ipynb

AdaBoost构建框架如下

class 

接下来详细解释几个重要函数。

首先是初始化函数,涉及到贯穿整个算法的一些参数,包括

  • 基分类器数量
  • 数据集(包括特征值、类别、样本数量、特征数量)
  • 数据权重集合
  • 基分类器参数集合
  • 基分类器权重集合
def 

接下来是计算分类器权重、规范化因子和数据权重更新的函数,可以按照前文中的公式计算

  • 计算分类器权重时需要的参数:当前分类器的错误率
  • 计算规范化因子时需要的参数:当前分类器权重、当前分类器的分类结果
  • 计算新一轮权重时需要的参数:当前分类器权重、当前分类器的分类结果、规范化因子
def 

接下来是样本预测函数,也就是组合得到的最终的分类器,加权求和后使用符号函数。

def 

最重要就是AdaBoost算法训练过程,其中基分类器用的是单层决策树,循环嵌套结构如下

  • 迭代训练每个基分类器
  • 训练一个基分类器时,由于是单层决策树,要尝试使用每一个特征来分类,选一个最好的
  • 用一个特征分类时,要尝试每个分类边界值,找到一个最好的(这一步体现在基分类器训练中)
def 

单层决策树分类器不是AdaBoost算法的重点,代码也不再详细说明了,可以使用sklearn库中的决策树模型,将参数max_depth设置为1,这样也是一个基分类器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值