自学数据挖掘十大算法之AdaBoost「建议收藏」

自学数据挖掘十大算法之AdaBoost「建议收藏」Adaboost简介:Adaboost(adaptiveboosting)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。该算法其实是一个简单的弱分类算法提升过程

大家好,又见面了,我是你们的朋友全栈君。

Adaboost简介:

Adaboost(adaptive boosting)是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。

该算法其实是一个简单的弱分类算法提升过程,这个过程通过不断的训练,可以提高对数据的分类能力。整个过程如下所示:

1. 先通过对N个训练样本的学习得到第一个弱分类器;

2. 将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器 ;

3. 将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;

4. 最终经过提升的强分类器 。即某个数据被分为哪一类要通过分类器的多数表决权重。

存在的问题及改进方法:

对于boosting算法,存在两个问题:

1. 如何调整训练集,使得在训练集上训练的弱分类器得以进行;

2. 如何将训练得到的各个弱分类器联合起来形成强分类器。

针对以上两个问题,adaBoost算法进行了调整:

1. 使用加权后选取的训练数据代替随机选取的训练样本,这样将训练的焦点集中在比较难分的训练数据样本上; 

2. 将弱分类器联合起来,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果差的分类器具有较小的权重。

                      自学数据挖掘十大算法之AdaBoost「建议收藏」    

       

上图是整个分类器的构建过程:从Y1一直到Ym,最终我们形成的强分类器如下:

自学数据挖掘十大算法之AdaBoost「建议收藏」

AdaBoost提供的是一种分类模型,根据具体问题需要我们可以向里面加载不同的学习方案。

计算模型的错误率,求Mi误分类数据集Di中每个元组的加权和:

自学数据挖掘十大算法之AdaBoost「建议收藏」

是Xj的误分类误差,如果Xj被误分类则其值等于1,否则等于0.如果某分类器的错误率超过0.5则认为该分类器性能太差,可以丢弃重新产生训练集Di生成新的分类器Mi 

分类器Mi 的表决权重公式(可自定义):

自学数据挖掘十大算法之AdaBoost「建议收藏」

AdaBoost的算法过程:

自学数据挖掘十大算法之AdaBoost「建议收藏」


一个具体的例子:

我们在这里初始化每个元组的权重为Mi = 1/ d, d代表整个数据集的数据个数。

自学数据挖掘十大算法之AdaBoost「建议收藏」

                        

最终我们得到了一个强分类器: 自学数据挖掘十大算法之AdaBoost「建议收藏」。

参考:

韩家炜《数据挖掘概念与技术》

http://baike.baidu.com/view/2395336.htm

http://blog.csdn.net/haidao2009/article/details/7514787

http://blog.csdn.net/dark_scope/article/details/14103983

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136535.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Tortoise小乌龟SVN回滚到之前的提交版本,即如何撤销此次提交操作

    Tortoise小乌龟SVN回滚到之前的提交版本,即如何撤销此次提交操作

    2021年7月18日
  • IIS http 500 内部服务器错误 (解决方案)「建议收藏」

    IIS http 500 内部服务器错误 (解决方案)「建议收藏」 第一步:“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”中,“控制台根目录”->“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”中,有一个“IISOut-Of-ProcessPooled”鼠标右键“属性”–“标识”–把“此用户”调整为“交互式用户–目前已登录的用户”。然后“确定”,再鼠标右键“属性”–“启动”.第二步:“开始”->“管理工具”-

    2022年8月12日
  • java小型图书馆管理系统

    java小型图书馆管理系统根据需求,建立了一个BookMgr类,该类为实现小型图书馆的各个需求。为了和用户有一个良好的交互,根据需求且满足要求中的隐藏条件,先命名了交互的菜单函数printMenu1(),代码如下:publicvoidprintMenu1(){          System.out.println(“欢迎使用图书馆管理系统”);          Syst

    2022年7月8日
  • java json转换为对象_Java list map

    java json转换为对象_Java list mapjson转map的六种方式

    2022年9月8日
  • 〖Python〗– Git大全

    〖Python〗– Git大全【初识及基本操作】一、什么是Git?定义:Git是分布式版本控制系统。1.1什么是版本控制我们可以回想以下,在我们上学毕业要写论文或是准备一份演讲稿的时候,都会用文件去保存和管理一些文档之类的

    2022年7月5日
  • Linux route add_linux系统route命令

    Linux route add_linux系统route命令routeadd命令的主要作用是加入静态路由,通常的格式是:routeADD157.0.0.0MASK255.0.0.0157.55.80.1METRIC3IF2參数含义:destinationmaskgatewaymetricinterface/*能够缩写*/destination【网段地址】mask【子网掩码】gateway【网关地址】…

    2022年8月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号