机器学习-分类器-Adaboost原理

时间:2023-02-21 14:57:24

Adaboost原理

Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器,然后把这些弱分类器集合起来,构成强分类器。adaboost算法训练的过程中,初始化所有训练样例的具有相同的权值重,在此样本分布下训练出一个弱分类器,针对错分样本加大对其对应的权值,分类正确的样本降低其权值,使前一步被错分的样本得到突显,获得新的样本分布,在新的样本分布下,再次对样本进行训练,又得到一个分类器。依次循环,得到T个分类器,将这些分类器按照一定的权值组合,得到最终的强分类器。训练的关键是针对比较难分的训练样本,在联合弱分类器时,使用加权投票,这样分类效果好的弱分类器得到较大的权重,分类效果差的则权值较小。Adaboost方法是经过调整的boosting算法,能够对弱学习得到的弱分类器的错误率进行适应性调整, 相对boosting算法,Adaboost方法使用加权后选取的训练数据代替随机选取的训练样本,训练的焦点集中在比较难分的训练数据样本上;在联合弱分类器联合时,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。

Adaboost算法的具体过程

1.初始化所有训练样例的权重为1 / N,其中N是样例数

2.for m=1,……M:

a).训练弱分类器ym(),使其最小化权重误差函数(weighted error function):

b)接下来计算该弱分类器的话语权α:

c)更新权重:

其中Zm:

是规范化因子,使所有w的和为1。(这里公式稍微有点乱)

3.得到最后的分类器:

Adaboos的过程可以用如下结构表示:

最后的分类器YM是由数个弱分类器(weak classifier)组合而成的,相当于最后m个弱分类器来投票决定分类,而且每个而且每个弱分类器的“话语权”α不一样。

  上述迭代算法中,每一次循环根据当前的权重分布对样本x定一个分布P,然后对这个分布下的样本使用弱学习算法得到弱分类器,而这个错误率的上限并不需要事先知道。每 一次迭代,都要对权重进行更新。更新的规则是:减小弱分类器分类效果较好的数据的概率,增大弱分类器分类效果较差的数据的概率。最终的分类器是个弱分类器的加权平均。

 adaboost在目标检测中的应用

        在实际应用中,adaboost基本上可以训练任何想要检测的目标比如车辆、人脸、字符、商标、建筑物等等,收集正负样本,正样本为所训练的目标,比如下图中车辆、字符、人脸等目标已经切分好的目标。

机器学习-分类器-Adaboost原理

负样本可以为图像中未包含正样本的任意图像。分类器训练方法可以按照http://www.cnblogs.com/whowhoha/p/5623483.html 的方法训练分类器,训练完成后,导入分类器(openCv中为xml文件)参数对图像进行扫描检测,将扫描的多个候选框合并即可得到最终的目标位置。

另外:训练分类器参数设置示例及训练过程中的参数设置方法说明

训练级联Adaboost参数如下:

numPos: 9000

numNeg: 28000

numStages: 18

precalcValBufSize[Mb] : 1000

precalcIdxBufSize[Mb] : 1000

stageType: BOOST

featureType: HARR

sampleWidth: 24

sampleHeight: 24

boostType: DAB

minHitRate: 0.95

maxFalseAlarmRate: 0.65

weightTrimRate: 0.97

maxDepth: 1

maxWeakCount: 100

1 正负样本比例问题:比例大约1:3的样子比较好,1:3或者1:4训练出来的分类器要优于1:1或者1:9,原因是正负样本比例接近时,对负样本的命中程度低(实际中负样本肯定远远多于正样本),正负样本比例较大(比如1:9)时,重视负样本的统计特性而忽略了正样本的统计特性,造成正样本权重总和小,当权重小于一定程度的时候可能很大一部分正样本都不参与训练了(在weightTrimRate=0.95时)。

2 minHitRate:分类器的每一级希望得到的最小检测率。总的检测率大约为minHitRate ^ numStages。影响每个强分类器阈值,当设置为0.95时如果正训练样本个数为12000个,那么其中的600个就很可能被判别为负样本,第二次选择的时候必须多选择后面的600个,按照这种规律我们为后面的每级多增加numPos*minHitRate个正样本,根据训练的级数可以得到如下公式

numPos+(numStages-1)*numPos*(1-minHitRate),即需要准备的训练正样本个数

3 maxFalseAlarm:分类器的每一级希望得到的最大误检率。总的误检率大约为maxFalseAlarm ^ numStages,.影响每个强分类器中弱分类器的个数,设置较大,每级可以滤除负样本的比例就较小,这样在测试过程中虚警率就较高;设置较小,每级强分类器中弱分类器的个数就较多,检测时间就会相对要长,在可以接受的检测时间下尽量降低maxFalseAlarm是我们要追求的目标

关于负样本的选择,因为每级剩下的负样本个数低于numNeg*maxFalseAlarm,在第二轮选择的时候从之前选择的负样本后面继续选择,而不是重头开始将选择过的负样本也包含进来,只有当遍历完一遍负样本列表后才重头在扫描一遍

4 weightTrimRate:影响参与训练的样本(不管是正样本还是负样本),当更新完样本权重之后,将样本权重按照从小到大的顺序排列,从后面开始累加样本权重大于weightTrimRate时,前面的样本就不参与后面的训练了

5 maxWeakCount:决定每级强分类器中弱分类器的最大个数,当FA降不到指定的maxFalseAlarm时可以通过指定最大弱分类器个数停止单个强分类器。

6 boost参数(maxDepth、bt):影响决策树构建的法则以及权重更新策略

本文来源:http://www.cnblogs.com/whowhoha/p/5623977.html

机器学习-分类器-Adaboost原理的更多相关文章

  1. 机器学习之AdaBoost原理与代码实现

    AdaBoost原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9642899.html 基本思路 ...

  2. 集成学习之Boosting —— AdaBoost原理

    集成学习大致可分为两大类:Bagging和Boosting.Bagging一般使用强学习器,其个体学习器之间不存在强依赖关系,容易并行.Boosting则使用弱分类器,其个体学习器之间存在强依赖关系, ...

  3. AdaBoost原理详解

    写一点自己理解的AdaBoost,然后再贴上面试过程中被问到的相关问题.按照以下目录展开. 当然,也可以去我的博客上看 Boosting提升算法 AdaBoost 原理理解 实例 算法流程 公式推导 ...

  4. Adaboost原理及目标检测中的应用

    Adaboost原理及目标检测中的应用 whowhoha@outlook.com Adaboost原理 Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器 ...

  5. 机器学习算法-Adaboost

    本章内容 组合类似的分类器来提高分类性能 应用AdaBoost算法 处理非均衡分类问题 主题:利用AdaBoost元算法提高分类性能 1.基于数据集多重抽样的分类器 - AdaBoost 长处 泛化错 ...

  6. 机器学习之Adaboost与XGBoost笔记

    提升的概念 提升是一个机器学习技术,可以用于回归和分类问题,它每一步产生一个弱预测模型(如决策树),并加权累加到总模型中:如果每一步的弱预测模型生成都是依据损失函数的梯度方向,则称之为梯度提升(Gra ...

  7. adaboost原理与实践

    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器).其算法本身是通过改变数据分布来实现的,它根据 ...

  8. 入门系列之Scikit-learn在Python中构建机器学习分类器

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学.人工智能和统计学的研究领域.机器学习的重点是训练算法以学习模式并根据数据进行预 ...

  9. 客户续费模型 逻辑回归 分类器 AdaBoost

    客户续费模型  逻辑回归 分类器  AdaBoost

随机推荐

  1. CSS 两列布局 之 左侧适应,右侧固定 3种方式

    第一种:左侧用margin-right,右侧float:right CSS代码: html, body,ul,li #wrapper { width: 100%; height: 100%; padd ...

  2. XE6 & IOS开发之开发者账号、苹果证书(1):关于开发者账号

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 关于苹果开发者账号, 注 ...

  3. Tomcat7下出现The requested resource(/)is not available

    1首先确保你的localhost是否正常运行解决方案:1观察项目是否部署2重新将tomcat7导入 2确保你的项目名后跟index.jsp是否正常运行解决方案:1右键项目名,web进行查询,观察部署的 ...

  4. Unity烂笔头1-自定义INSPECTOR属性窗口节点项

    1.添加输入框和标签 LevelScript: using UnityEngine; using System.Collections; public class LevelScript : Mono ...

  5. iOS-编译简单静态库初探

    首先声明,我写的这些网上都有更详细的内容,在这里只是写下我自己总结的一些重要内容,具体步骤如下: 事先准备:新建工程-Framework & Library - Cocoa Touch Sta ...

  6. spring中Bean的注入参数详解

    字面值    一般指可用字符串表示的值,这些值可以通过<value>元素标签进行注入.在默认情况下,基本数据类型及其封装类.String等类型都可以采取字面值注入的方式,Spring容器在 ...

  7. autorun&period;vbs病毒的清除办法

    症状:计算机里面出现一堆autorun为文件名称的文件,删除后出现找不到autorun.vbs的提示.我就打开当中的一个文件:Autorun.bat,内容例如以下: @echo off  //不显示系 ...

  8. 1033 To Fill or Not to Fill

    PAT A 1033 To Fill or Not to Fill With highways available, driving a car from Hangzhou to any other ...

  9. &lbrack;经典Bug&rsqb;Android-初始化闪屏不消失

    问题描述: 业务上初始化过程要求显示闪屏界面,某个版本更新后,发现部分场景下,初始化完成后闪屏界面不消失. 问题原因: 初始化是在子线程进行,闪屏属于UI界面,需要UI线程展示.初始化过程和闪屏显示在 ...

  10. SSM 框架-02-MyEclipse 2017 安装与破解

    SSM 框架-02-MyEclipse 2017 安装与破解 现在在学J2EE,然后使用的工具就是 MyEclipse,现在就抛弃 Eclipse 了,我就不多说它俩的区别了,但是 MyEclipse ...