十大算法---Adaboost
当我们有针对同一数据集有多个不同的分类器模型时,怎样组合它们使预测分类的结果更加准确,
针对这种情况,机器学习通常两种策略。
1 一种是bagging,一种是boosting
- bagging:随机对样本重采样,采得N个数据集(数据集可能有交叉),对每个数据集进行训练,可以使用相同分类器也可以使用不同分类器,
这样我们就得到N个分类器,当对新样本进行预测时,这N个分类器同时预测,对同一样本得到N个预测结果,进行投票表决(实际应用中,每个
分类器可以有不同的权重,可以人为设定也可以根据训练结果)。代表是随机森林算法。
特点:各个分类器独立训练,是并行的结果。
- boosting:与bagging不同,boosting是串行的,各个分类器的训练是迭代进行,第k-1次的迭代会对第k次训练优化目标造成影响,具体来
讲,每次迭代调整的是样本的权重,而每次预测结果的评价指标决定了该分类器的权重。最后通过各个分类器的加权和表决。下面详细介绍最流
行的一个版本AdaBoost.
2详解AdaBoost
2.1在理解AdaBoost之前需要准备好如下三个东西:
- 第一个:弱分类器模型
输入:X,Y,样本初始权重矩阵(均值填充1/m)(m个样本)D0
输出:判断指标(错误率),预测结果Xp0
- 第二个:分类器的权重计算。
分类器的权重与我们侧重的指标有关即在训练分类器时的评价指标有关。评价指标越好分类器权重越大。
其计算公式如下:
其中指的错误率,通常大于0.5(样本比例平均,比随机预测强)α是一个大于0.5的值,越小,权重越大。
- 第三个:样本权重调整策略和意义。
样本权重的迭代原则:上一次样本的错分样本的权重增加。具体办法,样本权重的调整与分类器的权重有关。
样本权重的迭代策略:
正分样本的权重调整,变小了。
错分样本的权重调整,变大了
样本权重调整影响的是下一次迭代训练模型的从而影响下一次的训练,具体来说对于错误率的计算:
不再是累加错分样本/总样本,而是每个错分样本乘以权重/总样本
2.2AdaBoost训练过程
输入:迭代次数,累计错误率终止条件
输出:弱分类器数组,每一项是,弱分类器训练参数,弱分类器的权重
算法流程
设置分类器数组weekClassArr(存储每次迭代的弱分类器参数)
for 每次迭代i:
- 训练一次弱分类器Modeli,得到分类器的错误率和预测结果。
- 根据上述公式,计算弱分类器的权重。
- 计算累计错误率而不是单次的错误率,如果累计错误率小于设定值即结束循环。
解释累计错误率:
将第i次的预测结果和前i-1次的预测结果加权,并利用sign()函数将结果化为-1和1,将这个作为adaboost的错误率
- 根据预测结果和分类器权重,利用上面提到的样本权重公式,计算新Di+1。
注:sign函数:由于加权累加结果是浮点数,sign()会将加权结果变为离散-1和1.
2.3使用Adaboost:
利用弱分类器数组中的每个分类器分别预测,将预测结果按照分类器对应的权重加权即可
最新文章
- iOS-提高iOS开发效率的方法和工具
- iOS开发中的错误整理,再一次整理通过通知中心来处理键盘,一定记得最后关闭通知中心
- [Tool] WireShark基本使用
- 通过 XML HTTP 加载 XML 文件
- 【leetcode】Contains Duplicate &; Rectangle Area(easy)
- (《数论及应用1.3》NEFU 116 两仪剑法(最小公倍数&;&;最大公约数))
- 发现一个很好的android开发笔记库
- STC89C52RC片内资源介绍
- 动态绑定ReportViewer控件之经验总结
- [js高手之路]html5 canvas动画教程 - 重力、摩擦力、加速、抛物线运动
- Java-ServletRequestEvent-ServletRequestAttributeEvent
- es6学习笔记-proxy对象
- nginx 出现504 Gateway Time-out的解决方法
- idea2018.1.5激活教程
- [20190225]删除tab$记录的恢复5.txt
- BZOJ.3227.[SDOI2008]红黑树tree(树形DP 思路)
- Java | 原来 serialVersionUID 的用处在这里
- vim 多行添加注释,取消注释
- AuthenticationManager、ProviderManager
- ROS知识(20)----SLAM资源集合