自学数据挖掘十大算法之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

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

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

(0)
上一篇 2022年5月4日 下午5:40
下一篇 2022年5月4日 下午6:00


相关推荐

  • PHP面试-复习知识点整理「建议收藏」

    PHP面试-复习知识点整理

    2022年2月10日
    51
  • oracle可以更改表名,sql – 更改Oracle表名

    oracle可以更改表名,sql – 更改Oracle表名我正在尝试在oracle中更改表名.我首先运行此脚本来声明表CREATETABLECUSTOMER(C_IDNUMBER(6,0),C_LASTVARCHAR2(25),C_FIRSTvarchar2(25),C_MIchar(1),C_DOBDATE,C_ADDRESSvarchar2(100),C_CITYvarchar2(35),C_STATEchar(2),C_ZIP…

    2022年5月17日
    40
  • ViewStub详解

    ViewStub详解首先上源码:packageandroid.view;importandroid.annotation.IdRes;importandroid.annotation.LayoutRes;importandroid.content.Context;importandroid.content.res.TypedArray;importandroid.graphics.Canvas;importandroid.util.AttributeSet;importandroid.widg

    2022年6月28日
    27
  • SSM框架面试题总结[通俗易懂]

    SSM框架面试题总结[通俗易懂]Spring如何实现一个IOC容器配置文件配置包扫描路径递归包扫描获取.class文件反射,确定需要交给IOC管理的类对需要注入的类进行依赖注入配置文件中指定需要扫描的包路径定义一些注解,分别表示访问控制器,业务控制层,数据持久层,依赖注入注解,获取配置文件注解从配置文件中获取需要扫描的包路径,获取到当前路径下的文件信息及文件夹信息,我们将当前路径下所有的以.class结尾的文件添加到一个Set集合中进行存储遍历这个Set集合,获取在类上有指定注解的类,并将其交给IOC容器,定义一个

    2022年6月16日
    33
  • oracle修改表名称索引丢失,修改表名索引约束触发器等对象不会失效[通俗易懂]

    oracle修改表名称索引丢失,修改表名索引约束触发器等对象不会失效[通俗易懂]修改表名后,索引、约束、触发器、comment、授权不会失效,这些对象的创建脚本中的表名会正常自动更改修改表名前,索引脚本如下CREATEINDEXCUX.CUX_MSC_RMP_SDCI_DTLS_N2170307ONCUX.CUX_MSC_RMP_SDCI_DTLS(LINE_ID)修改表名后,索引脚本如下CREATEINDEXCUX.CUX_MSC_RMP_SDCI_DTLS_N…

    2022年5月16日
    46
  • stm32数据手册boot_stm32f103中文手册.pdf

    stm32数据手册boot_stm32f103中文手册.pdfstm32f103中文手册STM32F103x6STM32F103x8STM32F103xB增强型,32位基于ARM核心的带闪存、USB、CAN的微控制器7个定时器、2个ADC、9个通信接口功能初步信息■核心−ARM32位的Cortex™-M3CPU−…

    2022年10月16日
    4

发表回复

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

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