大家好,又见面了,我是你们的朋友全栈君。
Adaboost简介:
Adaboost(adaptive boosting)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。
该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。整个过程如下所示:
1. 先通过对N个训练样本的学习得到第一个弱分类器;
2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;
3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
4. 最终经过提升的强分类器 。即某个数据被分为哪一类要通过分类器的多数表决权重。
存在的问题及改进方法:
对于boosting算法,存在两个问题:
1. 如何调整训练集,使得在训练集上训练的弱分类器得以进行;
2. 如何将训练得到的各个弱分类器联合起来形成强分类器。
针对以上两个问题,adaBoost算法进行了调整:
1. 使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上;
2. 将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。
上图是整个分类器的构建过程:从Y1一直到Ym,最终我们形成的强分类器如下:
AdaBoost提供的是一种分类模型,根据具体问题需要我们可以向里面加载不同的学习方案。
计算模型的错误率,求Mi误分类数据集Di中每个元组的加权和:
是Xj的误分类误差,如果Xj被误分类则其值等于1,否则等于0.如果某分类器的错误率超过0.5则认为该分类器性能太差,可以丢弃重新产生训练集Di生成新的分类器Mi
分类器Mi 的表决权重公式(可自定义):
AdaBoost的算法过程:
一个具体的例子:
我们在这里初始化每个元组的权重为Mi = 1/ d, d代表整个数据集的数据个数。
最终我们得到了一个强分类器: 。
参考:
韩家炜《数据挖掘概念与技术》
http://baike.baidu.com/view/2395336.htm
http://blog.csdn.net/haidao2009/article/details/7514787
http://blog.csdn.net/dark_scope/article/details/14103983
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/136535.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...