• adaBoost


    算法概述

    初始化权重,一般初始化是均分布,构造弱分类器,进行分类,然后给这个分类器一个权重。

    改变数据集的权值分布,将分类错误的数据集分更大的权重,分类正确的数据分较小的权重,使用弱分类器进行分类,给这个训练好的弱分类器一个权重。

    重复执行上述过程,预测时,根据训练好的多个弱分类器及其权值,决定要预测测试样本的标签。

    算法原理

    adaboost是一种加法模型,先讲下加法模型的损失函数:

     

    这里的Ft-1(xi)是前面训练好的提升分类器,h(xi)是新添加的若分类器,αt是弱分类器的权值,也叫学习的步长。E就是经过弱分类器h(xi)提升的强分类器在数据集上的错误率,即损失函数。

    接着我们开始介绍adaboost算法:

    假设经过m-1次迭代已经得到m-1个弱分类器的线性组合:

     

    我们想通过下次迭代产生一个弱分类器,将其原分类器扩展为更好的提升分类器:

     

    定义损失函数如下:

     

    我们假定yi取-1和+1,那么当分类正确时:

     

    因此对损失函数改写为:

     

     

    将损失函数对αm求导,并使等式为0,可以求解αm

     

    定义加权误差率:

     

    所以:

     

    设训练数据集T={(x1,y1), (x2,y2)…(xN,yN)}

    初始化训练数据的权值分布:

     

    使用具有权值分布Dm的训练数据集学习,得到基本分类器

     

    计算Gm(x)在训练数据集上的分类误差率

     

    计算Gm(x)的系数(该分类器的权值)

     

    更新训练数据集的权值分布

     

    这里,Zm是规范化因子, 它的目的仅仅是使Dm+1成为一个概率分布

     

    构建基本分类器的线性组合

     

    得到最终分类器

     

    调参

    from sklearn.ensemble import AdaBoostClassifier

    AdaBoostClassifier(base_estimator=None,  n_estimators=50,  learning_rate=1.0,  algorithm='SAMME.R',  random_state=None)

    1)弱学习器的数量由参数 n_estimators 来控制。 learning_rate 参数用来控制每个弱学习器对 最终的结果的贡献程度(其实应该就是控制每个弱学习器的权重修改速率,这里不太记得了,不确定)。

     

    2) 弱学习器默认使用决策树。不同的弱学习器可以通过参数 base_estimator 来指定。 获取一个好的预测结果主要需要调整的参数是 n_estimators 和 base_estimator的复杂度 (例如:对于弱学习器为决策树的情况,树的深度 max_depth 或叶子节点的最小样本数 min_samples_leaf 等都是控制树的复杂度的参数)

     

  • 相关阅读:
    MS SQL Server迁移至Azure SQL
    Aras Innovator 11 sp2 firefox客户端设置
    Aras Innovator 11 sp2 IE客户端设置
    Aras Innovator 11 sp2安装
    JDK Windows安装
    mocha测试es6问题
    jQuery中animate与scrollTop、offset().top实例
    AI下载步骤
    Visual Studio Code必备插件
    Visual Studio code快捷键
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10039020.html
Copyright © 2020-2023  润新知