算法描述
1.上文随机森林中介绍了Bootstraping(构造多个子数据集,每个数据集不一样),本篇AdaBoost则是使用同一个数据集(每个数据有权重)通过串行训练多个弱分类器。在训练过程中,当前弱分类器中数据的权重会根据上一个弱分类器的错误率进行调节,最终集合所有弱分类器的结果进行表决,得到一个强分类的结果。[2]中提供一个更生动的描述,推荐阅读。
知识储备
举个栗子
1.先用伪代码讲解:
初始化D
/第一个循环定义构建多少个弱分类器,若当前分类器错误率为零则不再构建其他分类器/
for 弱分类器:
更新下一个弱分类器的数据权重
/第二个循环遍历数据集的每一维特征并计算该维特征的步长/
for 特征维度:
步长=(最大值-最小值) / 步长参数
stepSize = (rangeMax - rangeMin) / numSteps
/第三个循环遍历阈值索引/
for 阈值索引:
/第四个循环寻找找当前阈值的最佳分类方式(sign),lt代表小于阈值则赋值为-1
,反之则赋值1,gt则与lt相反/
for 分类方式:
阈值= 最小值 + 索引*步长
threshVal = (rangeMin + float(j) * stepSize)
根据阈值计算错误率
实现代码
1.debug实现版本。[1]
算法分析
1.当数据中有噪声点,AdaBoost会提高噪声点的权重,即对噪音敏感。
资料引用
[1]GitHub:https://github.com/wzy6642/Machine-Learning-in-Action-Python3/tree/master/AdaBoost_Project1
[2]CSDN:https://blog.csdn.net/lzx159951/article/details/106809994
[3]书籍:《统计学习方法》-作者:李航
此算法笔记会在CSDN、知乎、b站及公众号同步更新,账号名为一枚嘉应子。转载注明出处,侵权必究。