adaboost

AdaBoost

a 夏天 提交于 2019-12-03 04:07:44
coding=utf-8 python 3.5 ''' Created on 2017年11月27日 @author: Scorpio.Lu ''' import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import AdaBoostClassifier from sklearn.tree import DecisionTreeClassifier 参考网址:https://louisscorpio.github.io/2017/11/28/代码实战之AdaBoost/ from sklearn.datasets import make_gaussian_quantiles from sklearn.model_selection import train_test_split from sklearn import metrics import pandas as pd 用make_gaussian_quantiles生成多组多维正态分布的数据 这里生成2维正态分布,设定样本数1000,协方差2 x1,y1=make_gaussian_quantiles(cov=2., n_samples=200, n_features=4, n_classes=2, shuffle=True,

[机器学习]集成学习--bagging、boosting、stacking

匿名 (未验证) 提交于 2019-12-03 00:19:01
集成学习简介 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务。 如何产生“好而不同”的个体学习器,是集成学习研究的核心。 集成学习的思路是通过合并多个模型来提升机器学习性能,这种方法相较于当个单个模型通常能够获得更好的预测结果。这也是集成学习在众多高水平的比赛如奈飞比赛,KDD和Kaggle,被首先推荐使用的原因。 一般来说集成学习可以分为三大类: 用于减少方差的bagging 用于减少偏差的boosting 用于提升预测结果的stacking 集成学习方法也可以归为如下两大类: 串行集成方法,这种方法串行地生成基础模型(如AdaBoost)。串行集成的基本动机是利用基础模型之间的依赖。通过给错分样本一个较大的权重来提升性能。 并行集成方法,这种方法并行地生成基础模型(如Random Forest)。并行集成的基本动机是利用基础模型的独立性,因为通过平均能够较大地降低误差。 大部分集成模型都通过一个基础学习算法来生成一个同质的基础学习器,即同类型的学习器,也叫同质集成。 有同质集成就有异质集成,为了集成后的结果表现最好,异质基础学习器需要尽可能准确并且差异性够大。 Bagging Bagging是引导聚合的意思。减少一个估计方差的一种方式就是对多个估计进行平均。例如,我们可以用训练集的不同子集(随机选择并替代??

scikit-learn Adaboost类库使用小结

匿名 (未验证) 提交于 2019-12-02 23:49:02
    在 集成学习之Adaboost算法原理小结 中,我们对Adaboost的算法原理做了一个总结。这里我们就从实用的角度对scikit-learn中Adaboost类库的使用做一个小结,重点对调参的注意事项做一个总结。     scikit-learn中Adaboost类库比较直接,就是AdaBoostClassifier和AdaBoostRegressor两个,从名字就可以看出AdaBoostClassifier用于分类,AdaBoostRegressor用于回归。     AdaBoostClassifier使用了两种Adaboost分类算法的实现,SAMME和SAMME.R。而AdaBoostRegressor则使用了我们原理篇里讲到的Adaboost回归算法的实现,即Adaboost.R2。     当我们对Adaboost调参时,主要要对两部分内容进行调参,第一部分是对我们的Adaboost的框架进行调参, 第二部分是对我们选择的弱分类器进行调参。两者相辅相成。下面就对Adaboost的两个类:AdaBoostClassifier和AdaBoostRegressor从这两部分做一个介绍。     我们首先来看看AdaBoostClassifier和AdaBoostRegressor框架参数。两者大部分框架参数相同,下面我们一起讨论这些参数,两个类如果有不同点我们会指出

adaboost详解

匿名 (未验证) 提交于 2019-12-02 23:48:02
集成学习方法 通过组合多个弱基分类器来实现强分类器目的,从而提高分类性能。集成学习是一类算法,并不是指一个算法。集成学习策略有非常多种,包括数据层面、模型层面和算法层面三个方面集成,这方面由于研究非常广泛,论文非常多,可以去知网下载硕博论文,论文总结非常全面。常用的两种集成学习方法是:bagging袋装法,典型代表随机森林(Random Forests)和boosting提升法,典型代表GBDT(Gradient Boosting Decision Tree)以及最近非常火热的XGBOOST。 AdaBoost算法原理和有缺点(1995年的算法了) 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整 缺点:对离群点敏感(这一类都有这个缺点) 首先讲一下boosting的流程 先从数据集D中随机选出一些数据得到数据集D1,通过训练得到分类器C1。 然后再从D中随机选出一些数据,用C1来进行测试,会得到D2,此时的D2中会有一些数据是C1分对了的,有一些是C1分错了的。然后用这些数据进行训练,会得到C2,。 然后再从D中随机选出一些数据,用C1、C2一起来测试,丢弃两个分类器判断相同的结果,对于某个数据如果两个分类器的判断结果不一样则保留,这些保留下来的数据组成D3,然后对D3进行训练得到C3分类器。 预测时,将三个分类器同时作用在数据上,对于C1与C2得到的结果如果一样

人脸检测

匿名 (未验证) 提交于 2019-12-02 23:43:01
文章目录 传统的算法 深度学习的检测方法 传统的算法 基于ACF特征的人脸检测 ACF & VJ Framework ACF:聚合通道特征,简单来说就是把各种特征聚合到一起,比如10个通道,可以包含 RGB, HSV, HOG等 训练阶段:预处理获取一批人脸的正负样本,训练一个级联的 Adaboost 分类器(多个 Adaboost 级联检测),用于判断是否是人脸; 检测阶段:遍历输入的图(设定一定的步长),通过训练好的分类器判断是否是人脸,去重,done. 速度比较快:积分图,决策树也快 opencv 的人脸检测 基本上跟上面的类似,只是分别采用了不同的初始特征,opencv里有用 haar | hog | lbp 等实现的特征提取,后面都采用了 cascade adaboost 做分类。 以上方法快,几乎可以找 CPU 上实时工作,简单的检测不同比例人脸,缺点是不抗遮挡,侧脸检测不到,误检会多些。 dlib HOG cpu上最快的方法,效果居中 深度学习的检测方法 opencv dnn 直达 底层基于 ResNet-10,快,cpu 实时,多角度,更稳定鲁棒。 dlib cnn cpu 上慢,gpu 上快,训练简单,不能检测小脸,中庸。 mtcnn (2016) & facenet 直达 这两个的准确率都达到了>99.5%。 文章来源: https://blog.csdn

集成学习---(Boosting) Adaboost

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/m0_37263345/article/details/91418355 一、简介 1、 AdaBoost就是损失函数为指数损失的Boosting算法(当然这是后话,意思是指数损失的前向分步算法和Adaboost一致) 二、细节 1、算法流程 2、最重要的两点 误差率: == (也就是在一轮过后,误差率直接用分错样本的权重想加就可以了) (1)、弱分类器的权重如何确定 权重 仅仅由该分类器的分类误差率e决定,e的范围应该是[0, 0.5] ,所以误差率越大,权重越小 (2)、样本的权重如何确定 样本的下一次的权重是由上个分类器的误差率和上个分类器是否对该样本正确分类来决定 (a)、先说是否正确分类,如果正确分类,那么最右边的公式将是分数的形式,值相对较小,错误分类就是正指数的形式,值相对较大,对应分错的样本将在下一轮分配更大的权重 (b)、再说误差率,对于 正确分类的样本 ,如果误差率较大,也就是权重 较小,那么此时 ,就会偏大,说明此例的分类结果相对不可信,值得更多的关注,如果误差率较小,权重较大,那么此时 ,就会相对偏小,说明此例的分类结果相对可信,那么就分配更小的权重 对于 错误分类的样本, 如果误差率较小,权重较大,那么此时 , 就会偏大,表示在误差率较小的分类器里边,又分错了

集成学习算法——adaboost

前提是你 提交于 2019-12-02 23:08:29
  adaboost是boosting类集成学习方法中的一种算法,全称是adaptive boost,表示其是一种具有自适应性的算法,这个自适应性体现在何处,下面来详细说明。 1.adaboost算法原理   在boosting算法框架中,新的弱学习器是基于已有的弱学习器的输出结果生成的,已有的弱学习器产生的损失(用损失函数来评估)是固定的,而新的弱学习器的作用就是使得当前模型(包含它自身)损失尽可能减小,达到局部最优。   adboost算法关注的是样本的输出(这里有点废话了,每个模型关注的都是样本的输出结果),它通过赋予、调整每个样本的权重值,来调整样本在构建新弱学习器起到的作用,样本权重越大,则起到的作用越大。以二分类问题为例,若某个样本类别在当前预测错误,那么新的弱学习器将尽量保证它们的类别预测正确,下图 在弱学习器1中,样本s3被错误分类,那么在构造弱学习器2时,样本s3会被赋予较大的权重,样本s1、s2、s4被赋予较小的权重,也即是说弱学习器2将着力于将样本s3类别预测正确。 在弱学习器2中,样本s4的类别又被预测错误,同样的,样本s4权重提升。   样本的最终输出结果是每个弱学习器输出结果的线性加权组合。在adboost算法中,除了对样本赋予权重并自适应调整,还会给每个弱学习器赋予权重,这样adboost的最终输出可以表达为如下形式    其中

【转载】【收藏】机器学习与深度学习核心知识点总结

耗尽温柔 提交于 2019-12-02 19:02:56
原文地址: https://cloud.tencent.com/developer/article/1526902 数学 1.列举常用的最优化方法 梯度下降法 牛顿法 拟牛顿法 坐标下降法 梯度下降法的改进型如AdaDelta,AdaGrad,Adam,NAG等。 2.梯度下降法的关键点 梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为: 根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率设置的足够小,并且没有到达梯度为0的点处,每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的x k +1位于迭代之前的值x k 的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。 梯度下降法只能保证找到梯度为0的点,不能保证找到极小值点。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。 梯度下降法在机器学习中应用广泛,尤其是在深度学习中。AdaDelta,AdaGrad,Adam,NAG等改进的梯度下降法都是用梯度构造更新项,区别在于更新项的构造方式不同。对梯度下降法更全面的介绍可以阅读SIGAI之前的文章“ 理解梯度下降法 ”。 3.牛顿法的关键点 牛顿法利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为: 其中H为Hessian矩阵,g为梯度向量

【集成模型】Boosting

天涯浪子 提交于 2019-12-02 16:47:30
0 - 思想   Boosting算法思想是将“弱学习算法”提升为“强学习算法”。一般来说,弱学习算法容易找到,而后通过反复学习得到一系列弱分类器,再通过加权将他们组合起来得到一个强分类器。   Boosting算法主要有两个核心概念:加法模型和前向分步算法。   加法模型即是将一系列弱分类器线性相加组成强分类器的过程,有如下形式 $$F_M(x;P)=\sum_{m=1}^n\beta_m h_m(x;a_m),$$ 其中$h(x;a_m)$表示第$m$个弱分类器,$a_m$对应该弱分类器的最优参数,$\beta_m$表示该分类器在强分类器中所占比重,$P$是所有$a_m$和$\beta_m$的组合。   前向分步指的是在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得到的(顺序依次进行训练,sequentially),可以表达为 $$F_m(x)=F_{m-1}(x)+\beta_m h_m(x;a_m).$$   不同的Boosting算法具有不同的损失函数,常用的AdaBoost是损失函数为指数损失的Boosting算法。 1 - AbaBoost 1.0 - 特点 在每一轮迭代中,AdaBoost改变了训练数据的权值(即改变了样本的概率分布),其目标是为了将关注点放在被错误分类的样本上。具体做法为:减少上一轮被正确分类的样本权值,增加上一轮被错误分类的样本权值