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

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

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

Adaboost简介:

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

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

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

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

3. 12都分错了的样本加上其他的新样本构成另一个新的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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 免备案空间收集

    免备案空间收集用了这个国外的免备空间,觉得其他的都弱爆了此空间无广告,大空间,速度快,而且是即时开通的,我去截图分享下。虽然是美国的,但是提供中文申请页面,但是用谷歌浏览器可以无障碍设置。这是登录进去时候的页面:这个是我目前的两个域名,每过24小时可以创建一个。这个是控制面板这个是我的账户信息可以看一下磁盘容量和带宽,都是大到用不完···,跟其他的需要付神马1块两块钱别人才提供给…

  • Dubbo(二)—dubbo支持的协议和注册中心

    Dubbo(二)—dubbo支持的协议和注册中心

    2020年11月12日
  • 进程调度算法c语言实现_进程调度算法有哪些

    进程调度算法c语言实现_进程调度算法有哪些对一个非抢占式多道批处理系统采用以下算法的任意两种,实现进程调度,并计算进程的开始执行时间,周转时间,带权周转时间,平均周转时间,平均带权周转时间1.先来先服务算法2.短进程优先算法*3.高响应比优先算法三、设计思想每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间…

  • IntelliJ IDEA 2021.5 激活码【在线注册码/序列号/破解码】[通俗易懂]

    IntelliJ IDEA 2021.5 激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • Java –如何打印数组

    Java –如何打印数组在本文中,我们将向您展示几种打印Java数组的方法。1.Arrays.toString这是打印数组的最简单方法–Arrays.toString(自JDK1.5起)PrintArray.javapackagecom.mkyong.utils.print;importjava.util.Arrays;publicclassPrintArray{…

  • 使用FSO修改文件特定内容的函数

    使用FSO修改文件特定内容的函数function FSOchange(filename,Target,String)Dim objFSO,objCountFile,FiletempDataSet objFSO = Server.CreateObject(“Scripting.FileSystemObject”)Set objCountFile = objFSO.OpenTextFile(Server.MapPath(fil

发表回复

您的电子邮箱地址不会被公开。

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