adaboost

树莓派+检测人脸

旧城冷巷雨未停 提交于 2019-12-27 06:48:21
设备与环境 raspberry 3b winscp vnc 检测人脸 级联分类器 cascadeclassifier 级联分类器,即使用类 Haar 特征工作的级联增强分类器,是集成学习的一种特殊情况,称为 boost。它通常依赖于 Adaboost 分类器(以及其他模型,如 Real Adaboost、Gentle Adaboost 或 Logitboost)。 级联分类器在包含检测目标的几百个样本图像以及不包含检测目标的其他图像上进行训练。 opencv中有训练好的人脸文件。 代码 import numpy as np import cv2 # Create a memory stream so photos doesn't need to be saved in a file image = cv2.imread('lena.bmp',1) cv2.imshow("image", image) #Load a cascade file for detecting faces face_cascade = cv2.CascadeClassifier('faces.xml') #Convert to grayscale gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow("image",gray) #Look for

SIFT/SURF、haar特征、广义hough变换的特性对比分析[z]

南笙酒味 提交于 2019-12-26 03:31:07
SIFT/SURF基于灰度图, 一、首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点,再使用二次插值法得到精确特征点所在的层(尺度),即完成了尺度不变。 二、在特征点选取一个与尺度相应的邻域,求出主方向,其中SIFT采用在一个正方形邻域内统计所有点的梯度方向,找到占80%以上的方向作为主方向;而SURF则选择圆形邻域,并且使用活动扇形的方法求出特征点主方向,以主方向对齐即完成旋转不变。 三、以主方向为轴可以在每个特征点建立坐标,SIFT在特征点选择一块大小与尺度相应的方形区域,分成16块,统计每一块沿着八个方向占的比例,于是特征点形成了128维特征向量,对图像进行归一化则完成强度不变;而SURF分成64块,统计每一块的dx,dy,|dx|,|dy|的累积和,同样形成128维向量,再进行归一化则完成了对比度不变与强度不变。 haar特征也是基于灰度图, 首先通过大量的具有比较明显的haar特征(矩形)的物体图像用模式识别的方法训练出分类器,分类器是个级联的,每级都以大概相同的识别率保留进入下一级的具有物体特征的候选物体,而每一级的子分类器则由许多haar特征构成(由积分图像计算得到,并保存下位置),有水平的、竖直的、倾斜的,并且每个特征带一个阈值和两个分支值,每级子分类器带一个总的阈值

机器学习:集成学习:随机森林.GBDT

一曲冷凌霜 提交于 2019-12-25 00:45:05
集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5); 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果; 2. 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器; 3. 如果数据的划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合; 4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合。 Bagging方法 Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式

Using scikit-learn's MLPClassifier in AdaBoostClassifier

时光怂恿深爱的人放手 提交于 2019-12-24 00:34:39
问题 For a binary classification problem I want to use the MLPClassifier as the base estimator in the AdaBoostClassifier . However, this does not work because MLPClassifier does not implement sample_weight , which is required for AdaBoostClassifier (see here). Before that, I tried using a Keras model and the KerasClassifier within AdaBoostClassifier but that did also not work as mentioned here . A way, which is proposed by User V1nc3nt is to build an own MLPclassifier in TensorFlow and take into

adabag boosting function throws error when giving mfinal>10

风格不统一 提交于 2019-12-22 08:38:27
问题 I have a strange issue, whenever I try increasing the mfinal argument in boosting function of adabag package beyond 10 I get an error, Even with mfinal=9 I get warnings. My train data has 7 class Dependant variable and 100 independant variables and around 22000 samples of data(Smoted one class using DMwR). My Dependant Variable is at the end of the training dataset in sequence. library(adabag) gc() exp_recog_boo <- boosting(V1 ~ .,data=train_dataS,boos=TRUE,mfinal=9) Error in 1:nrow(object

Custom learner function for Adaboost

こ雲淡風輕ζ 提交于 2019-12-22 03:48:50
问题 I am using Adaboost to fit a classification problem. We can do the following: ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree') Now 'Tree' is the learner and we can change this to 'Discriminant' or 'KNN'. Each learner uses a certain Template Object Creation Function . More info here. Is it possible to create your own function and use it as a learner? And how? 回答1: I open templateTree.m and templateKNN.m to see how MATLAB define Template Object Creation Function. function temp = templateKNN

06-adaboost提升树

让人想犯罪 __ 提交于 2019-12-21 01:52:18
adaboost提升树 1、思想 ​ AdaBoost算法与Boosting算法不同,它是使用整个训练集来训练弱学习器,其中训练样本在每次迭代的过程中都会重新被赋予一个权重,在上一个弱学习器错误的基础上进行学习来构建一个更加强大的分类器。下面通过一个图来了解AdaBoost算法的工作过程 2、过程 具体说来,整个Adaboost 迭代算法就3步: 1、初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。 2、训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。 3、将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。 3、 公式推导过程 来源: CSDN 作者: 呆瓜菜狗 链接: https://blog.csdn.net/qiuqiubeibei/article/details/103628491

SIGAI机器学习第二十一集 AdaBoost算法2

时光总嘲笑我的痴心妄想 提交于 2019-12-19 11:25:37
讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用。 大纲: 广义加法模型 指数损失函数 AdaBoost训练算法的推导 实现细节问题 弱分类器的选择 弱分类器的数量 样本权重削减 上节课我们介绍了AdaBoost算法的训练算法和预测算法,其中训练算法还是一个很精密的过程,这个算法是怎么想出来的有没有什么依据?包括弱分类器的权重为什么是1/2log(1-et)/et?样本权重的更新公式为什么是那样的?它们都是有理论依据的。 可以把AdaBoost算法和微积分来对比,它们两个其实非常类似。微积分它是先有方法,先有一些计算公式然后再补充的理论,微积分发明的时候有很多不严密的地方包括牛顿本人他就没法解释无穷小是怎么回事一会可以当作0一会不能当作0,整个微积分它的严密的体系是柯西给建立的,其中非常核心的就是建立了极限这个概念的严格的定义,ε-δ这种定义方式。而AdaBoost算法和这个类似,他也是先有了方法,然后再有了理论解释,它是用广义加法模型和指数损失函数相结合的一个产物来解释的,也就是用广义加法模型来求解指数损失函数,最后就导出了我们的AdaBoost算法的训练算法。 广义加法模型: 来源: https://www.cnblogs.com

AdaBoost算法理解

会有一股神秘感。 提交于 2019-12-18 12:51:11
AdaBoost的前身和今世 强可学习和弱可学习 在概率近似正确(PAC)学习框架中, 一个类如果存在: 一个多项式复杂度的学习算法,正确率略大于随机猜测(例如二分类问题中大于1/2),称 弱可学习的 一个多项式复杂度的学习算法,并且正确率很高,称 强可学习的 Kearns和Valiant证明了强可学习和弱可学习是 等价 的 The Strength of Weak Learnability Adaboost算法就是将弱学习器组成强学习器的算法 Explaining AdaBoost 算法受到工业界和学术界的关注, 充分的理论研究 (统计学习方法证明) AdaBoost算法是为了证明弱可学习和强可学习算法等价而提出的 ,随后,人们发现该类集成算法能够有效的提升一个学习器的作用,基于AdaBoost演化出了诸多的算法,例如在各大数据挖掘上大放光彩的XGBoost,几乎霸占了诸多数据竞赛榜单的前几多年(从2017开始),在数据预处理上填充空值常用的随机森林算法等等。 随后,学术界纷纷把关注点投向了这个算法的理论证明。得到了该类算法的统计学派角度的证明, 即为AdaBoost是在指数损失函数、模型是加性模型、算法是前向分布算法 。进一步的,给出了学习算法的训练误差界,说明了其训练过程中的最坏情况,并且表明其训练误差是以指数级别下降的。在明白了AdaBoost的统计意义后

AdaBoostClassifier with different base learners

↘锁芯ラ 提交于 2019-12-17 23:18:13
问题 I am trying to use AdaBoostClassifier with a base learner other than DecisionTree. I have tried SVM and KNeighborsClassifier but I get errors. Can some one point out the classifiers that can be used with AdaBoostClassifier? 回答1: Ok, we have a systematic method to find out all the base learners supported by AdaBoostClassifier. Compatible base learner's fit method needs to support sample_weight, which can be obtained by running following code: import inspect from sklearn.utils.testing import