adaboost算法

今天周一,发现自己之前的任务完成的很不好,要尽力补起来。

adaboost算法:

背景:

boosting源于PAC理论 ( Probably Approximately Correct,如果能在较短时间较少样本的条件下,学习到一个较好的方法),boosting是一种优化方法,初始给每个样本相同权重,每次迭代时,错误样本权重增大->重采样,(不明白样本的概念,要的不是特征向量W吗?)

adaboost是boosting算法的一种(https://blog.csdn.net/laiqun_ai/article/details/46761391)

 

adaboost是一种::模型是加法模型、损失函数为指数函数、学习算法为前向分步算法的二类分类学习方法。

-----取自https://blog.csdn.net/v_JULY_v/article/details/40718799

Adaboost算法流程
    给定一个训练数据集T={(x1,y1), (x2,y2)…(xN,yN)},其中实例,而实例空间,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

    Adaboost的算法流程如下:

步骤1. 首先,初始化训练数据的权值分布。每一个训练样本最开始时都被赋予相同的权值:1/N。

步骤2. 进行多轮迭代,用m = 1,2, ..., M表示迭代的第多少轮
a. 使用具有权值分布Dm的训练数据集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器):

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

由上述式子可知,Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和。

c. 计算Gm(x)的系数,am表示Gm(x)在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重。注:这个公式写成am=1/2ln((1-em)/em) 更准确,因为底数是自然对数e,故用In,写成log容易让人误以为底数是2或别的底数,下同):

由上述式子可知,em <= 1/2时,am >= 0,且am随着em的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大。
d. 更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代

使得被基本分类器Gm(x)误分类样本的权值增大,而被正确分类样本的权值减小。就这样,通过这样的方式,AdaBoost方法能“重点关注”或“聚焦于”那些较难分的样本上。
    其中,Zm是规范化因子,使得Dm+1成为一个概率分布:

步骤3. 组合各个弱分类器

从而得到最终分类器,如下:

 

Adaboost的简单代码实现:

https://www.ibm.com/developerworks/cn/analytics/library/machine-learning-hands-on6-adaboost/index.html

 

 

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭