adaboost

机器学习:集成学习

限于喜欢 提交于 2019-12-02 05:29:58
集成学习 基本概念 集成学习(Ensemble Learning)的 思想 是将若干个学习器(分类|回归)组合之后产生一个新的学习器, 如何产生“好而不同”的个体学习器,是集成学习研究的核心 ; 一般性用于集成的学习器都为 弱学习器 ,即学习器的预测精度不需要太高但是应该好于随机预测的结果; 集成学习 算法的成功 在于保证了弱分类器的多样性(Diversity),即学习器之间具有 差异性 弱分类器间存在一定的差异性,会导致分类的边界不同,即会存在错误;但当多个弱分类器合并后,就可以得到更加合理的边界,能减少错误率,实现更好的效果; 对于数据集过大/过小,可以进行划分/有放回抽样的操作产生不同的数据子集,然后使用数据子集训练不同的学习器,最后合并成一个大的学习器 若数据划分边界过于复杂,使用线性模式很难描述,可以训练多个模型,后将模型进行合并; 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个学习器模型,然后将多个模型融合 常见的集成算法有: Bagging Boosting Stacking 按照集成方式划分: 串行集成方法:通过串行的方法生成基础模型(如AdaBoost);串行集成的 基本动机 是利用基础模型之间的依赖,给被错分的样本一个较大的权重来提升性能; 并行集成方法:并行的生成基础模型(若Random Forest);并行集成的 基本动机

Haar特征

我怕爱的太早我们不能终老 提交于 2019-12-02 00:36:52
特征提取之Haar特征 一、前言(废话) 很久没有写博客了,一晃几年就过去了,为了总结一下自己看的一些论文,以后打算写一些自己读完论文的总结。那么,今天就谈一谈人脸检测最为经典的算法Haar-like特征+Adaboost。这是最为常用的物体检测的方法(最初用于人脸检测),也是用的最多的方法,而且OpenCV也实现了这一算法,可谓路人皆知。另外网上写这个算法的人也不在少数。 二、概述 首先说明,我主要看了《Rapid Object Detection using a Boosted Cascade of Simple Features》和《Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection》这两篇论文。 2.1为什么需要Haar特征,为什么要结合Adaboost算法 我们知道人脸检测是很不容易的,我们在实际进行人脸检测的时候,需要考虑算法的运行速度,以及算法的准确度,单单实现这两个指标就已经很不容易了。传统的人脸检测方法(指的是在Haar-like特征出来之前的方法,也就是2001年之前了)一般都是基于像素级别进行的,常见的方法有基于皮肤颜色的方法,这些方法的缺点就是速度慢,几乎不能实现实时性。 2.2算法的大体流程 首先给出训练过程 输入图像-

集成学习(二):AdaBoost与LogitBoost

强颜欢笑 提交于 2019-12-01 12:59:07
总结两种具体的提升算法: AdaBoost算法: AdaBoost的基本想法是不断调整训练数据中样本的权值来训练新的学习器,对于当前误分类的点在下一步中就提高权重“重点关照一下”,最后再将所有的弱分类器做加权和,对于分类正确率高的权重给得大大(更可靠),分类正确率低的给的权重低乃至是负的权重。其具体的算法可以用前向分布可加模型,配以指数损失函数得到,具体推导如下: 我们这里讨论二分类问题。设学习训练集$D=\lbrace (x_{1},y_{1}),...,(x_{N},y_{N}),y_{i}\in\lbrace -1,+1\rbrace\rbrace$, 我们有某个基准的二分类算法$b$,输出为类别$+1$或者$-1$,我们希望用$M$步学习得到某个学习器:$f=\sum_{m=1}^{M}\alpha_{m}b_{m}$使得误差: \begin{equation}L(f)=\sum_{i=1}^{M}e^{-y_{i}f(x_{i})}\end{equation} 最小。 我们现在可以考虑其前向分步可加模型了,为方便起见我们令$f_{0}=0$。对任意的$m=1,...,T$,第$m$步学习时,我们已经得到了基模型$b_{1},...,b_{m-1}$以及相应的权重$\alpha_{k}$,且令$f_{m-1}=\sum_{k=1}^{m-1}\alpha_{k}b_{k}$

openCV c++: Problems working with CvBoost (Adaboost classifer)

六眼飞鱼酱① 提交于 2019-12-01 09:38:50
问题 I'm creating an application for classifying humans in images of urban setting. I train a classifer in following manner: int main (int argc, char **argv) { /* STEP 2. Opening the file */ //1. Declare a structure to keep the data CvMLData cvml; //2. Read the file cvml.read_csv ("directory/train_rand.csv"); //3. Indicate which column is the response cvml.set_response_idx (0); /* STEP 3. Splitting the samples */ //1. Select 4000 for the training CvTrainTestSplit cvtts (4000, true); //2. Assign

集成学习个人学习总结

[亡魂溺海] 提交于 2019-12-01 05:49:18
说明 :本科普也是借助诸多集成学习文章学习总结而来。 集成学习 一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。 集成学习之boosting Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器。1. 根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器。2. 如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。 Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树(Gradient Boosting Tree)。 AdaBoost算法原理 Boosting需要解决如下几个问题:

How to normalize an image color?

二次信任 提交于 2019-12-01 00:38:18
问题 In their paper describing Viola-Jones object detection framework (Robust Real-Time Face Detection by Viola and Jones), it is said: All example sub-windows used for training were variance normalized to minimize the effect of different lighting conditions. My question is "What kind of tool did they use to normalize the images?" I'm NOT looking for the specific tool that Viola & Jones used but a similar one that produces almost the same output. I've been following a lot of haar-training

GBDT 算法

陌路散爱 提交于 2019-11-30 18:54:08
GBDT (Gradient Boosting Decision Tree) 梯度提升迭代决策树。GBDT 也是 Boosting 算法的一种,但是和 AdaBoost 算法不同(AdaBoost 算法上一篇文章已经介绍);区别如下:AdaBoost 算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮一轮的迭代;GBDT 也是迭代,但是 GBDT 要求弱学习器必须是 CART 模型,而且 GBDT 在模型训练的时候,是要求模型预测的样本损失尽可能的小。 GBDT 直观理解:每一轮预测和实际值有残差,下一轮根据残差再进行预测,最后将所有预测相加,就是结果。 GBDT 模型可以表示为决策树的加法模型: 其中,T(x;θm)表示决策树;θm 为决策树的参数; M为树的个数。 采用前向分布算法, 首先确定初始提升树 fo(x) = 0, 第 m 步的模型是: 通过经验风险极小化确定下一棵树的参数:(其实就是让残差尽可能的小找到最优划分点) 这里的 L() 是损失函数,回归算法选择的损失函数一般是均方差(最小二乘)或者绝对值误差;而在分类算法中一般的损失函数选择对数函数来表示 GBDT 既可以做回归也可以做分类,下面先描述一下做回归的算法流程: 已知一个训练数据集 T = {(x1,y1),(x2,y2),...,(xn,yn)}, 如果将训练集分为不同的区域 R1,R2,...

人脸识别技术的分析用于宁夏建设

你说的曾经没有我的故事 提交于 2019-11-30 18:06:39
人脸辨认体系的研讨始于20世纪60年代,80年代后跟着计算机技能和光学成像技能的开展得到提高,而真实进入初级的运用阶段则在90年后期,并且以美国、德国和日本的技能完成为主;人脸辨认体系成功的关键在于是否具有顶级的中心算法,并使辨认成果具有实用化的辨认率和辨认速度;“人脸辨认体系”集成了人工智能、机器辨认、机器学习、模型理论、专家体系、视频图画处理等多种专业技能,一起需结合中间值处理的理论与完成,是生物特征辨认的最新运用,其中心技能的完成,展示了弱人工智能向强人工智能的转化。 人脸辨认体系首要包含四个组成部分,分别为:人脸图画收集及检测、人脸图画预处理、人脸图画特征提取以及匹配与辨认。 人脸图画收集及检测 人脸图画收集:不同的人脸图画都能经过摄像镜头收集下来,比方静态图画、动态图画、不同的方位、不同表情等方面都可以得到很好的收集。当用户在收集设备的拍照范围内时,收集设备会主动查找并拍照用户的人脸图画。 人脸检测:人脸检测在实践中首要用于人脸辨认的预处理,即在图画中精确标定出人脸的方位和巨细。人脸图画中包含的形式特征非常丰厚,如直方图特征、色彩特征、模板特征、结构特征及Haar特征等。人脸检测就是把这其中有用的信息挑出来,并运用这些特征完成人脸检测。 干流的人脸检测办法依据以上特征选用Adaboost学习算法,Adaboost算法是一种用来分类的办法,它把一些比较弱的分类办法合在一起

Weak Classifier

笑着哭i 提交于 2019-11-30 11:41:24
I am trying to implement an application that uses AdaBoost algorithm. I know that AdaBoost uses set of weak classifiers, but I don't know what these weak classifiers are. Can you explain it to me with an example and tell me if I have to create my own weak classifiers or I'm suppoused to use some kind of algorithm? marc_ferna When I used AdaBoost, my weak classifiers were basically thresholds for each data attribute. Those thresholds need to have a performance of more than 50%, if not it would be totally random. Here is a good presentation about Adaboost and how to calculate those weak

Classification results depend on random_state?

浪子不回头ぞ 提交于 2019-11-30 06:05:17
问题 I want to implement a AdaBoost model using scikit-learn (sklearn). My question is similar to another question but it is not totally the same. As far as I understand, the random_state variable described in the documentation is for randomly splitting the training and testing sets, according to the previous link. So if I understand correctly, my classification results should not be dependent on the seeds, is it correct? Should I be worried if my classification results turn out to be dependent on