Boosting:AdaBoost分模块python实现

来源:互联网 发布:织梦cms源码分析 编辑:程序博客网 时间:2024/06/05 00:11

Adaboost的理论知识请参考文章:

Boosting:AdaBoost理论知识

  AdaBoosting(adaptive boosting自适应boosting的缩写)中“不足”是指被前一个弱学习器误分类的点,在下一次分类中被赋予更大的权重。与其他的Boosting实现不同的是这种算法可以适应各弱分类模型各自的训练误差。

其运行过程如下:

    训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D,这些权重初始值都相等。

    首先在训练集上训练出一个弱分类器,并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器,

    在分类器二次训练中,将会重新调整每个样本的权重,其中,第一次分对的样本的权重将会降低,而第一次分错的权重将会提高。

    为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权重值alpha,这些alpha值是基于每个弱分类器的错误率进行计算的。

Adaboost几个重要公式:


程序实现:

1、数据导入案例1:

2、建立简单判断逻辑,通过给定阈值,来判断分类

3、找到最低错误率的决策树

程序逻辑:

  • 将最小错误率min_error设为正无穷大

  • (第一层循环)对于数据集中的每一个特征x

    • (第二层循环)对于每个步长(等值分组)

      • (第三层循环)对于每个不等号(小于等于或者大于)

        • 建议一个单层决策树并利用加权数据集对它进行测试

        • 如果错误率低于min_error,则将当前单层决策树设为最佳单层决策树

  • 返回最佳决策树

案例运行结果:

....


4、AdaBoost的训练出一系列的弱分类器

程序逻辑:

  • 对于每次迭代

  • 利用build_tree()函数找到最佳的单层决策树

  • 将最佳单层决策树加入到但层决策树数组

  • 计算alpha值

  • 计算新的权重向量D

  • 更新累计类别估计值

  • 如果错误率等于0.0,则退出循环

程序运行案例:

5、利用训练出来的弱分类器模型对新数据进行分类

程序执行结果:

案例数据2:

程序实现情况:

程序及数据源:

数据链接:https://pan.baidu.com/s/1eRIFoXG 密码:y4s2

程序链接:https://pan.baidu.com/s/1slkJkBF 密码:hes9

参考书:机器学习实战,在参考案例的基础上,改进使用python3



原创粉丝点击