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