声明:原创文章,转载请注明或保留出处【https://www.jianshu.com/p/c6603ceb62d0】by【飞奔的野指针】
一、概念介绍
1概率分布和期望
1.1概率分布
简单理解概率分布:有一种实验是同时抛10枚硬币,统计出现正面和反面的个数,用表示正面个数。
进行次该实验,在这次实验中,10枚硬币全都是正面的次数应该最少,5正5反的次数应该最多。
随着取不同值,次实验中出现的次数也不相同,或者说出现的概率也不相同,这满足某种规律,这种规律称为概率分布。
1.2数学预期
数学期望举例:同样抛一枚硬币,正面得到100元,反面不给钱,数学预期就是。
如果进行次数够多,多次平均,每次大约能得到50元。
概率分布和预期,可在概率论中详细了解。
2.二项分布
就如概率分布中的例子,抛一枚硬币只会出现两种情况,正面或者反面,也就是结果只有两个值。我们抛一枚硬币次,每次互不影响,相互独立,这种实验称为伯努利实验。
每次实验独立且只有两种结果,正面的概率都为,那么表示试验反面的概率为。次实验出现次正面表示为,其概率为
含参数和表示次独立试验的成功次数的概率分布,就是二项分布,记为。表示随机变量服从该二项分布。当时是二点分布,也叫分布,我们也能证明其期望为:
具体二项分布推导可以在概率论中了解。
三、AdaBoost
Boosting:从训练集训练一个基学习器,根据基学习器对训练样本分布进行调整,使得分错的样本受到更多关注。基于调整后的样本分布来训练下一个基分类,依次训练出个分类器,最终将个分类器加权结合,AdaBoost是Boosting的一种。
我们有训练集、基学习算法、训练轮数(当前轮数用表示)。
第一轮我们给每个样本一个初始权值组成权值集,此时我们对每个样本的关注度相同。
我们根据样本训练出第一轮的基学习算法为,训练方法可以使用任何一个分类器Bayes、SVM等。
1.错误率
我们知道第一轮分类错误的概率
错误率有两种意义:
- 错误率是一种分布列,基于概率分布,表示为。
- 通过调整概率分布来让每个样本对错误率有不同的影响力。分类算法是通过降低错误率是优化分类器的,调整就是调整错误率,从而降低错误率优化分类器。
错误率可写为:
2.代价函数
2.1指数代价函数
AdaBoost每一轮都训练一个基分类器,然后将每一轮的分类器组合在一起,组成一个强大的分类器,AdaBoost采用加性模型,即及学习器的线性组合组成,每一轮的权设为(注意区分和),的引入意味着训练出的个分类器的权重不同,每个分类器对最终预测结果的影响力不同。
支持向量机中介绍了几种基本代价函数,我们使用作为代价函数,和支持向量机类似,表示实际分类,表示预测结果
简单分析下指数损失函数的性质:
预测与实际类别一致,越大,代价函数越趋向。
预测与实际类别不同,越大,代价函数越趋向。
损失函数可以看基于概率分布的随机变量,,我们用数学期望替代损失函数,数学期望为
2.2指数代价函数可行性
分类结果只有两种情况,分对和分错,这是一种分布,其预期如下
我们试着验证指数代价函数和原来的代价函数具有一致性。
需要最小化代价函数,由于与为常数,对代价函数关于求偏导:
令其为可得:
这意味着达到了贝叶斯最优错误率,若指数损失函数最小化,则分类错误率最小化,指数代价函数是原本代价函数的一致性替代函数,它有更好性质,我们采用它来替代并优化是可行的。
3.求解
第一个分类器直接通过原始训练集得到,此后迭代生成每一轮的和,当基于分布,应使得代价函数最小。
上式可知,只和轮分类器的错误率有关,错误率越高,权重越小。
4.前向分布优化求解
第1轮的分类器就是基分类器,第2轮只训练出,在第1轮的基础上纠正的全部错误,至少逼近需要优化的目标函数。如次递推,每一轮都在上一轮的基础上学习出本轮的,然后叠加,逼近优化目标(此处为最小代价函数),这种算法称为前向分布优化。
已知取决于轮错误率,只有训练出了该轮的基学习器才能够求错误率,而训练需要,于是任务变成了从轮的各种参数中更新出,更新的限制条件为最小化代价函数。
之前已经求出轮代价函数,我们试着将其与上一轮轮的的某些参数关联起来,试着找出两轮之间的联系。
这里假设是通过即可纠正的误差,也就是说
那么我们可以将轮代价函数改写
我们将代价函数分成了两块,前者是本轮未知参数,后者中都是上轮参数,都是已知的,也就是固定值。
后者中的含有复杂的,设法将其去除,展开至二次方(具体见高数泰勒公式)
将其代入原式
本轮基学习器依托于最小化,即 ,其中arg的含义是满足后面式子时的取值。
,固定,求解,展开数学预期,并化简。
根据上式,是定值,根据分布不断学习,直到得出最优,实质上就是要求的本轮。
右侧全部都是上一轮轮相关参数,右侧分母为规范因子。得出最终优化函数。
由于则轮理想学习器为:
四.AdaBoost思路
adaptive boosting,自适应boosting,简称AdaBoost。
1.流程
- 输入:训练集、基学习算法、训练轮数。
- 给训练集每个样本一个权重,第轮第个样本权重为,初始为等值,所有权重组成第轮的权重向量。
- 循环进行T轮训练,每一轮过程如下:
- 根据训练集和该轮权重训练弱分类器,,
- 计算出错误率,此时,如果则跳过该轮。
- 根据错误率,计算权重系数.
- 根据调整权重,分类错误的样本的权重增加,分对的样本权重降低,进行轮训练。
- 根据每一轮的权重,综合成一个强分类器
2.图示
如图所示,的错误率,可以计算出,的错误率,可以计算出,的错误率,可以计算出,最终可得
Adaboost 为每个分类器分配一个权重,是基于每个弱分类器的错误率进行计算的。
参考:
- 周志华 《机器学习》第八章 集成学习
- 李航《统计学习方法》第8章 提升方法
- 茆诗松《概率论与数理统计教程》第二章 随机变量及其概率分布