Adaboost算法

概述

         一句话概述Adaboost算法的话就是:把多个简单的分类器结合起来形成个复杂的分类器。也就是“三个臭皮匠顶一个诸葛亮”的道理。

         可能仅看上面这句话还没什么概念,那下面我引用个例子。

         如下图所示:

         在D1这个数据集中有两类数据“+”和“-”。

         对于这个数据集,你会发现,不管是这么分

                  

         这么分

                  

         还是这么分

                  

         总有误分类点存在;

         那么如果我们把上面三种分发集合起来呢?像下面这样:

         会发现把上面三个弱分类器组合起来会变成下面这个分类器:

        

         这样一来用这个分类器就可以完美的分类数据了。

         这就是Adaboost的思想。

         是不是十分简单粗暴?

         好,下面我们来总结下Adaboost。

         Adaboost是一种迭代算法,其核心思想是针对同一训练集训练不同的分类器,即弱分类器,然后把这些弱分类请合起来,构造一个更强的最终分类器。

Adaboost算法的优点

         Adaboost的优点如下:

                   1,Adaboost是一种有很高精度的分类器;

                   2,可以使用各种方法构建子分类器,Adaboost算法提供的是框架;

                   3,当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造及其简单;

                   4,简单,不用做特征筛选;

                   5,不用担心过拟合(overfitting)!

Adaboost算法的步骤

         通过上面的内容我们已经知道Adaboost是将多个弱分类器组合起来形成一个强分类器,那就有个问题了,我们如何训练弱分类器?我们总得用一个套路来训练,不然每次都好无章法的弄个弱分类器,那结果可能是:即使你把一万个弱分类器结合起来也没办法将数据集完全正确分类。

         那么我们来进一步看看Adaboost算法的思想:

         1,Adaboost给每一个训练数据添加“权值”,且最初这个权值是平均分配的。然后在之后的步骤中,提高那些被前一轮弱分类器错误分类样本的权值,并降低那些被正确分类样本的权值,这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮弱分类器的更大关注

         2,Adaboost给每一个弱分类器添加“权值”,且采取多数表决的方法组合弱分类器。具体地,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用;减少分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

         Adaboost的巧妙之处就在于它将这些想法自然且有效地实现在一种算法里。

         下面来整理下Adaboost算法的步骤。

         输入:

                   训练数据集T ={(x1, y1), (x2, y2), ..., (xN, yN)},其中xi∈X⊆Rn,yi∈Y={-1, +1};

                  弱学习算法。

         输出:

                   最终分类器G(x)

         解:

                   1,初始化训练数据的权值分布

                            D1= (w11, ..., w1i, ..., w1N),其中w1i= 1/N,i=1, 2, ..., N

                   2,对m=1, 2,..., M

                            a,使用具有权值分布Dm的训练数据集学习,得到基本分类器

                                     Gm(x): X -> {-1, +1}

                            b,计算Gm(x)在训练数据集上的分类误差率

                                    

                            c,计算Gm(x)的系数

                                    

                            这里的对数是自然对数。

                            d,更新训练数据集的权值分布

                                    

                            这里,Zm是规范化因子

                                    

                            它使Dm+1成为一个概率分布。

                   3,构建基本分类器的线性组合

                           

                   得到最终分类器

                           

       然后对上面的步骤做一些说明:

                  步骤1假设训练数据集具有均匀的全职分布,即每个训练样本在基本分类器的学习中作用相同。这一假设保证了第1步中能用在原始数据上学习弱分类器G1(x)。

                   步骤2反复学习弱分类器,在每一轮m= 1, 2, ..., M顺次地执行下列操作:

                            a,使用当期分布Dm加权的训练数据集,学习基本分类器Gm(x)。

                            b,计算基本分类器Gm(x)在加权训练数据集上的分类误差率:

                                   

                            这里,wmi表示第m轮中第i个实例的权值,且:

                                      

                            这表明,Gm(x)在加权的训练数据集上的分类误差率是被Gm(x)误分类样本的权值之和,由此可以看出数据权值分布Dm与弱分类器Gm(x)的分类误差率的关系。

                            c,计算弱分类器Gm(x)的系数am,am表示Gm(x)在最终分类器中的重要性。由式8.2可知,当em <= 1/2时,am >=0,并且am随em的减小而增大,所以分类误差率越小的弱分类器在最终分类器中的作用越大。

                            d,更新训练数据的权值分布为下一轮做准备。式8.4可以写成:

                                    

                            由此可知,被弱分类器Gm(x)误分类样本的权值得以扩大,而被正确分类样本的权值却得以缩小。两相比较,误分类样本的权值被放大

                                    

                            倍。

                            因此,误分类样本在下一轮学习中起更大的作用。

                            而,“不改变所给的训练数据,而不断改变训练数据的全职分布,使得训练数据在若分类器的学习中起不同的作用”就是Adaboost的一个特点

                   步骤3中通过线性组合f(x)实现M个弱分类器的加权表决。系数am表示了弱分类器Gm(x)的重要性,这里,所有am之和并不为1。f(x)的符号决定实例x的类,f(x)的绝对值表示分类的确信度。“利用弱分类器的线性组合构建最终分类器”是Adaboost的另一个特点

 

例子

         给定上面这张训练数据表所示的数据,假设弱分类器由x<v或x>v产生,其阈值v使该分类器在训练数据集上的分类误差率最低,试用Adaboost算法学习一个强分类器。

         解:

                   1,令m = 1

                            则初始化数据权值分布:

                                     Dm = (wm1, wm2,..., wm10),即:D1 = (w11, w12, ..., w110)

                                     wmi = 0.1, i = 1, 2,..., 10,即:w1i = 0.1, i = 1, 2, ..., 10

                            a,用下面的方式从v=1.5遍历到v=9.5

                                     for( v=1.5;v<=9.5; v++) {

                                              if(x < v) G1(x)=1;

                                               elseif (x > v) G1(x) = -1;

                                     }

                                      并统计v取各个值使得误差率(误差率的计算方法是:所有误分类点的权值之和)。

                                     然后发现,当v取2.5时,误分类点为x=6, 7, 8,其权值和为0.3,误差率最低,此时,当前弱分类器为:

                                              

                                      G1(x) 在训练数据集上的误差率e1= P(G1(xi) != yi) = 0.3

                            b,计算G1(x)的系数:a1 =(1/2) log [(1-e1)/e1] = 0.4236

                            c,更新训练数据的权值分布:

                                     D2=  (w21, w22, ...,w210)

                                     w2i= (w1i/Z1)exp(-a1yiG1(xi)),i = 1, 2,..., 10

                   于是

                  D2 = (0.0715, 0.0715, 0.0715, 0.0715,0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715)

                  f1(x) = 0.4236G1(x)

                   分类器sign[f1(x)]在训练数据集上有3个误分类点。

                   2,令m = 2,做和上一步同上的操作。

                            发现在权值分布为D2的训练数据上,v = 8.5时误差率最低,此时:

                                     当前弱分类器为:

                                              

                                     误差率是e2 = 0.2143

                                     a2= 0.6496

                   于是

                            权值分布为:D3 =(0.0455, 0.0455, 0.0455, 0.1667, 0.1667, 0.1667, 0.1060, 0.1060, 0.1060,0.0455)

                            f2(x)= 0.4236G1(x) + 0.6496G2(x)

                            分类器sign[f2(x)]在训练数据集上有3个误分类点。

                   3,令m = 3。

                            所以在权值分布为D3的训练数据上,v =5.5时分类误差率最低,此时的弱分类器为:

                                    

                            G3(x)在训练样本上的误差率为e3= 0.1820

                            a3= 0.7514

                   于是

                            权值分布为:D4 =(0.125, 0.125, 0.125, 0.102, 0.102, 0.102, 0.065, 0.065, 0.065, 0.125)

                            f3(x)= 0.4236G1(x) + 0.6496G2(x) + 0.7514G3(x)

                   因为分类器sign[f3(x)]在训练数据集上的误分类点个数为0.

                   于是最终分类器为:

                            G(x)= sign[f3(x)] = sign[0.4236G1(x) + 0.6496G2(x)+ 0.7514G3(x)]

查看总分类器误分类点个数的方法

         假设有一个分类器,其有5个元素,其正确的分类结果是:

                   [1,1, -1, -1, 1]

         然后:

                   1,权值初始为:

                            D:[[ 0.2  0.2  0.2 0.2  0.2]]

                   2,经过一次计算:

                            alpha:  0.69314718056

                            classEst:  [[-1. 1. -1. -1.  1.]]     # 分类结果

                   3,这时就算一下:

                            aggClassEst+= alpha*classEst

                            aggClassEst:  [[-0.69314718 0.69314718 -0.69314718 -0.69314718 0.69314718]]

                   4,对比aggClassEst和正确分类的正负号相同位置元素的正负号是否一致,如:

                            这里addClassEst的正负号从前向后依次是:-,+, -, -, +,而正确分类的正负号依次是:+, +, - ,-, +,所以当前有1个被错误分类。

                   5,重复上面4步,直到第4步的对比完全一致或者达到循环次数上限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习05神经网络--表示

神经网络&#xff1a;表示&#xff08;Neural Networks: Representation&#xff09; 如今的神经网络对于许多应用来说是最先进的技术。 对于现代机器学习应用&#xff0c;它是最有效的技术方法。 神经网络模型是许多逻辑单元按照不同层级组织起来的网络&#xff0c; 每一层…

逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的

逻辑回归(Logistic Regression, LR)又称为逻辑回归分析&#xff0c;是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如&#xff0c;我们可以将购买的概率设置为因变量&#xff0c;将用户的特征属性&#xff0c;例如性别&#xff0c;年龄&#x…

机器学习06神经网络--学习

代价函数 标记方法&#xff1a; 神经网络的训练样本有 m 个 每个包含一组输入 x 和一组输出信号 y L 表示神经网络层数 Sl表示每层的 neuron 个数(SL 表示输出层神经元个数) 将神经网络的分类定义为两种情况&#xff1a; 二类分类&#xff1a;SL1, y0 or 1 表示哪一类&…

Logistic Regression Classifier逻辑回归

Logistic Regression Classifier逻辑回归主要思想就是用最大似然概率方法构建出方程&#xff0c;为最大化方程&#xff0c;利用牛顿梯度上升求解方程参数。 优点&#xff1a;计算代价不高&#xff0c;易于理解和实现。缺点&#xff1a;容易欠拟合&#xff0c;分类精度可能不高…

机器学习07应用机器学习的建议

决定下一步做什么&#xff08;Deciding What to Try Next&#xff09; 确保在设计机器学习系统时&#xff0c;能够选择一条最合适、最正确的道路。 具体来讲&#xff0c;将重点关注的问题是&#xff1a;假如你在开发一个机器学习系统&#xff0c;或者想试着改进一个机器学习…

CSS3--5.颜色属性

HTML5中添加了一些新的颜色的表示方式 1.RGBA&#xff1a;说得简单一点就是在RGB的基础上加进了一个通道Alpha。RGBA在RGB的基础上多了控制alpha透明度的参数。以上R、G、B三个参数&#xff0c;正整数值的取值范围为&#xff1a;0 - 255。百分数值的取值范围为&#xff1a;0.0%…

逻辑回归的通俗解释 逻辑回归的定位

1 逻辑回归的定位 首先&#xff0c;逻辑回归是一种分类&#xff08;Classification&#xff09;算法。比如说&#xff1a; 给定一封邮件&#xff0c;判断是不是垃圾邮件给出一个交易明细数据&#xff0c;判断这个交易是否是欺诈交易给出一个肿瘤检查的结果数据&#xff0c;判断…

机器学习08机器学习系统设计

首先要做什么 一个垃圾邮件分类器算法为例&#xff1a; 为了解决这样一个问题&#xff0c;首先要做的决定是如何选择并表达特征向量 x。 可以选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表&#xff0c;根据这些词是否有在邮件中 出现&#xff0c;来获得我们的特…

数学笔记1——导数1(导数的基本概念)

什么是导数导数是高数中的重要概念&#xff0c;被应用于多种学科。从物理意义上讲&#xff0c;导数就是求解变化率的问题&#xff1b;从几何意义上讲&#xff0c;导数就是求函数在某一点上的切线的斜率。我们熟知的速度公式&#xff1a;v s/t&#xff0c;这求解的是平均速度&a…

python接口自动化(四)--接口测试工具介绍(详解)

简介 “工欲善其事必先利其器”&#xff0c;通过前边几篇文章的介绍&#xff0c;大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。 目前&#xff0c;市场上有很多支持接口测试的工具。利用工具进行接口测试&#xff0c;能够提供测试效率。例如&…

机器学习09支持向量机

支持向量机(Support Vector Machines) 在监督学习中&#xff0c;许多学习算法的性能都非常类似&#xff0c;因此&#xff0c;重要的不是你该选择使用学习算法 A 还是学习算法 B&#xff0c;而更重要的是&#xff0c; 应用这些算法时&#xff0c;所创建的大量数据在应用这些算…

数学笔记2

数学笔记2——导数2(求导法则和高阶导数)和、差、积、商求导法则设uu(x),vv(x)都可导&#xff0c;则&#xff1a;(Cu)’ Cu’, C是常数(u v)’ u’ v’(uv)’ u’ v’(u/v)’ (u’v – uv’) / v21、2不解释&#xff0c;下面给出3、4的推导过程乘法法则的推导过乘法法则…

机器学习10聚类

无监督学习 在非监督学习中&#xff0c;我们需要将一系列无标签的训练数据&#xff0c;输入到一个算法中&#xff0c; 然后让它找这个数据的内在结构。 我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成两个分开的点集&#xff08;称为簇&#xff09;&am…

关联分析(Association analysis)

关联分析&#xff08;Association analysis&#xff09; 简介 大量数据中隐藏的关系可以以‘关联规则’和‘频繁项集’的形式表示。rules&#xff1a;&#xff5b;Diapers&#xff5d;–>{Beer}说明两者之间有很强的关系&#xff0c;购买Diapers的消费者通常会购买Beer。 除…

机器学习11主成分分析

降维(Dimensionality Reduction) &#xff1a; 一、 降维目的&#xff1a; 目的一&#xff1a;数据压缩&#xff08;Data Compression&#xff09; 目的二&#xff1a;数据可视化&#xff08;Visualization&#xff09; 二、 主成分分析&#xff08;PCA&#xff09; 主成分…

使用Apriori进行关联分析(一)

使用Apriori进行关联分析&#xff08;一&#xff09;大型超市有海量交易数据&#xff0c;我们可以通过聚类算法寻找购买相似物品的人群&#xff0c;从而为特定人群提供更具个性化的服务。但是对于超市来讲&#xff0c;更有价值的是如何找出商品的隐藏关联&#xff0c;从而打包促…

主成分分析法 (PCA) 用于数据可视化实验 -- Matlab版

第一步&#xff1a;下载数据集。 https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass.html#pendigits 第二步&#xff1a;改变数据格式。 注&#xff1a;此数据集的各特征值均为像素&#xff0c;即属于同一量纲&#xff0c;故无需归一化步骤。 原格式为&a…

机器学习12推荐系统

推荐系统(Recommender Systems) 推荐系统根据浏览用户过去买过什么书&#xff0c;或过去评价过什么电影来判断并推荐新产品给用户。 这些系统会为像亚马逊和网飞这样的公司带来很大一部分收入。 因此&#xff0c;对推荐系统性能的改善&#xff0c;将对这些企业的有实质性和…

使用Apriori进行关联分析(二)

使用Apriori进行关联分析&#xff08;二&#xff09;书接上文&#xff08;使用Apriori进行关联分析&#xff08;一&#xff09;&#xff09;&#xff0c;介绍如何挖掘关联规则。发现关联规则我们的目标是通过频繁项集挖掘到隐藏的关联规则。所谓关联规则&#xff0c;指通过某个…

数学笔记3——导数3(隐函数的导数)

数学笔记3——导数3&#xff08;隐函数的导数&#xff09;幂函数的扩展形式f(x) xn的导数&#xff1a;f’(x) nxn-1&#xff0c;n是整数&#xff0c;该公式对f(x) xm/n, m,n 是整数同样适用。推导过程&#xff1a;什么是隐函数引自知乎&#xff1a;“如果方程F(x,y)0能确定y…