AdaBoost(Adaptive boosting)元算法

元算法:将不同分类器组合起来的结果,也叫集成方法。

AdaBoost优点:泛化错误率,易编码,可应用在大部分分类器,无参数调整;缺点:对离群点敏感;适用于:数值型和标称型。

  • 自举汇聚法(Bootstrap aggregating,

    bagging方法):从原始数据集中随机选择1个样本,然后随机选择另一个样本替换这个样本。对原始数据集中进行S次这样的操作,分别得到S个新数据集。某个学习算法分别作用于新数据集得到S个分类器。用S个分类器进行分类得到的投票结果中最多的类别作为最终的分类结果。(bagging中各分类器权重是相等的。)

  • Boosting:boosting通过集中关注被已有分类器错分的那些数据获得新的分类器。其中分类器权重不相等,对应分类器在上一代迭代中的成功度\(\alpha\)。

    • 每个样本的权重的向量D初始化:全为1/m

    • 在原数据集上训练出一个弱分类器并计算其错误率\(\varepsilon_{1}\);

    • 原数据集中分对的样本权重降低,分错的样本权重升高,计算累计加权的估计结果

    \[\ \alpha = \frac{1}{2}\ln{(\frac{1 - \varepsilon_{i}}{\varepsilon_{i}})}
    \]

    \[D_{i}^{\text{new}} = \left\{ \begin{matrix} \frac{D_{i}^{\text{old}}e^{-
    \]

\frac{D_{i}{\text{old}}e{\alpha}}{Sum(D)},\ \ if\ \mathbf{x}_{i}\text{

is\ devided\ wrongly} \ \end{matrix} \right.$$

  • 重复b-c共?次,得到累计加权的估计结果,其符号即表示最终的分类结果。

建立弱分类器的伪代码:

将最小错误率minError设为$+ \infty$
对数据集中的每一个特征(第一层循环):
对每个步长(第二层循环):
对每个不等号(第三层循环):
建立一棵单层决策树并利用加权数据集对他进行测试
如果错误率低于minError,则将当前单层决策树设为最佳单层决策树
返回最佳单层决策树

AdaBoost算法的伪代码:

对每次迭代:
找到最佳的单层决策树,将其加入到单层决策树数组
计算$\alpha$,计算新的样本权重向量D
**更新累计类别估计值**
如果错误率等于0.0,退出循环

机器学习实战笔记-7-AdaBoost元算法的更多相关文章

  1. 机器学习实战笔记7(Adaboost)

    1:简单概念描写叙述 Adaboost是一种弱学习算法到强学习算法,这里的弱和强学习算法,指的当然都是分类器,首先我们须要简介几个概念. 1:弱学习器:在二分情况下弱分类器的错误率会低于50%. 事实 ...

  2. 机器学习实战笔记(1)——k-近邻算法

    机器学习实战笔记(1) 1. 写在前面 近来感觉机器学习,深度学习神马的是越来越火了,从AlphaGo到Master,所谓的人工智能越来越NB,而我又是一个热爱新潮事物的人,于是也来凑个热闹学习学习. ...

  3. 机器学习实战笔记-11-Apriori与FP-Growth算法

    Apriori算法 优点:易编码实现:缺点:大数据集上较慢:适用于:数值型或标称型数据. 关联分析:寻找频繁项集(经常出现在一起的物品的集合)或关联规则(两种物品之间的关联关系). 概念:支持度:数据 ...

  4. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  5. 【转载】 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    原文地址: https://www.cnblogs.com/steven-yang/p/5686473.html ------------------------------------------- ...

  6. 机器学习实战笔记-k-近邻算法

    机器学习实战笔记-k-近邻算法 目录 1. k-近邻算法概述 2. 示例:使用k-近邻算法改进约会网站的配对效果 3. 示例:手写识别系统 4. 小结 本章介绍了<机器学习实战>这本书中的 ...

  7. 机器学习技法-AdaBoost元算法

    课程地址:https://class.coursera.org/ntumltwo-002/lecture 重要!重要!重要~ 一.Adaptive Boosting 的动机 通过组合多个弱分类器(hy ...

  8. 在Titanic数据集上应用AdaBoost元算法

    一.AdaBoost 元算法的基本原理 AdaBoost是adaptive boosting的缩写,就是自适应boosting.元算法是对于其他算法进行组合的一种方式. 而boosting是在从原始数 ...

  9. 《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现

    ============================================================================================ <机器学 ...

  10. 使用 AdaBoost 元算法提高分类器性能

    前言 有人认为 AdaBoost 是最好的监督学习的方式. 某种程度上因为它是元算法,也就是说它会是几种分类器的组合.这就好比对于一个问题能够咨询多个 "专家" 的意见了. 组合的 ...

随机推荐

  1. Python学习第四十天函数的装饰器用法

    在软件开发的过程中,要遵循软件的一些原则封装的,不改变原有的代码的基础增加一些需求,python提供了装饰器来扩展函数功能,下面说说函数装饰器用法 def debug(func):      def ...

  2. Python内建函数reduce()用法

    reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,下面讲述Python内建函数reduce()用法. ...

  3. 找不到opencv_world320d.dll的问题

    OpenCV执行时出现找不到opencv_world320d.dll的问题,解决办法:把自己opencv文件目录下的D:\opencv3.2.0\opencv\build\x64\vc14\bin(本 ...

  4. django信号相关

    Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pre_in ...

  5. HTML使用框架跳转到指定的节

    内容区(links.html) <html> <body> <h2>Chapter 1</h2> <p>This chapter expla ...

  6. 时间戳位数不够13位,通过es6 的padEed补零

    if(val.toString().length == 10){ val = val.toString().padEnd(13,"0")*1 //不够十三位放后面补零,超过13位也 ...

  7. 二分查找法(java版)

    二分查找法也称为折半查找法,在有序的序列中使用二分法可以提高程序的执行效率. 典型的二分查找法代码 public int binarySearch1(int[] arr,int target){ in ...

  8. Codeforces 750E 线段树DP

    题意:给你一个字符串,有两种操作:1:把某个位置的字符改变.2:询问l到r的子串最少需要删除多少个字符,使得这个子串含有2017子序列,并且没有2016子序列? 思路:线段树上DP,我们设状态0, 1 ...

  9. dd hdparm 速度不一致

    https://www.cnblogs.com/yinzhengjie/p/9935478.html hparm     # 它用来在基于Linux的系统上获取或设置硬盘参数,包括测试读性能以及缓存性 ...

  10. 安装Git,Maven,配置ssh认证

    安装git: yum -y install git 安装maven: wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries ...