现在为止我们也了解了不少机器学习相关的算法,实际上,每个算法都有自己的假设条件,不同的 归纳偏倚 会有不同的数据符合度。一般来说,我们可以针对同一个数据集使用多个机器学习算法,然后比较算法的契合度,基本就是准确率,然后选择最合适的一个。但是也存在一些情况,所有单个算法都不能达到我们预期的准确率,此时我们就要考虑 组合学习 了。

组合学习,顾名思义,就是对于数据集同时使用多个机器学习算法,从而获得算法优劣互补的一种复合算法。近来随着计算和存储变得更为廉价,组合多个学习器的系统也随之流行。对于组合学习来说,有两个基本的问题:

  1. 如何产生互补的基学习器;
  2. 为了最大化准确率,如何组合基学习器?

下面我们围绕这两个基本的问题对组合学习策略做一个简单的介绍。

  • 产生差异基学习器
  • 模型组合方案
  • 投票法
  • 装袋
  • 层叠泛华

一、产生差异基学习器

利用我们已知的算法,我们可以产生有差异的不同的学习器,主要有以下几种方法:

  • 算法差异:主要针对同一个数据集采用不同的学习算法,比如参数学习与非参数学习,以此帮助我们摆脱单一决策;
  • 超参数差异:在实际的归纳偏倚中差异化超参数,比如多层感知器中的隐藏单元数目、K-最近邻中的K值、决策树中的误差阈值等;
  • 输入表示差异化:不同输入表示的一个例子是语音识别单词,我们可以采用声学输入,也可以采用视频捕捉发音时的口形输入,这样就获得了两种不同的基学习器;
  • 训练集差异化:可以使用训练集的不同子集来训练不同的基学习器,这可以通过在给定的样本上随机抽取训练集来实现,称作装袋(bagging);

需要注意的是,组合学习注重的是组合后的算法的准确率,而不是单个基学习器自身的准确率。

二、模型组合方案

在获得差异化的基学习器后,有多种方案来组合这些学习器。主要有两种:

  1. 多专家组合(multiexpert combination)

    • 全局方法(Global):并行架构,给定一个输入,所有的基学习器产生一个输出,然后使用所有的输出获得一个判断,如投票和层叠;
    • 局部方法(Local):与全局方法不同的是,存在一个模型考察输入,并选择一个或几个学习器来产生输出,比如混合专家;
  2. 多级组合(multistage combination):这是一种顺序方法,即一个学习器只有在前一个学习器预测不够准确的实例上进行训练和检验。其基本思想是差异化的基学习器按照复杂度递增排序,使得除非前一个更简单的基学习器的结果置信度不够,否则不使用复杂度更高的学习器。这样的一个例子是级联,如果所有前驱学习器的结果置信度都不够,我们才使用下一个学习器,并且使用所有使得前一个学习器不够好的实例作为新的训练集。根本思想时以尽可能低的代价解释大部分实例,并将其余实例作为异常存储。比如英语动词大多情况下都是d/ed,但是也存在不规则的,比如go/went,对于不规则的我们只需要投入最小的计算量即可。

三、投票法

组合多个学习器最常用的方法就是投票,原理就是多个学习器并行处理相同的输入,然后对每个输出“求和”,这里的“求和”只是代表一种运算,并不限于加法。基本的框架如图:(W1、W2、W3代表学习器的权重)

常用的分类器“加法”有以下几种:

  • 求和,Di的和;
  • 加权和:这是最为常用的,但是每个学习器的权重需要事先指定或者训练学习得到,形式为DiWi的和;
  • 中位数:对离群点更鲁棒;
  • 最值:最小和最大分别是悲观和乐观的估计;
  • 乘积:每个学习器都有否决权;

四、装袋

装袋(bagging)也是一种投票方法,其中基学习器通过在稍有差异的训练集上训练而有所不同。这里主要采取“有放回”的自助法从同一个训练集中随机抽取L个训练集,然后使用不稳定的学习过程训练L个基学习器,并在检验时取平均值。

五、层叠泛华

层叠泛化(stacked generalization)其实也是投票的一种扩展,因为投票系统的组合方式大多是线性的,而层叠泛化则不一定如此,组合方式可以是一个单独的复杂的学习器。比如:

这里的组合系统F(|φ* 可以是线性的,也可是非线性的,也可以是一个单独的学习器,比如是一个多层感知器,参数φ是连接权重。

在层叠泛化中,我们希望基学习器尽可能不同,使得它们可以互相补充。因此最好的基学习器都基于不同的学习算法。层叠泛化相较于传统的投票模型,训练过的规则更灵活并且具有更小的偏倚,但是却增加了额外的参数,有引入方差的风险。

系统学习机器学习之组合多分类器相关推荐

  1. 系统学习机器学习之神经网络(七) --CPN

    原文:http://blog.csdn.net/u014070279/article/details/47299987 1987年,美国学者Robert Hecht-Nielsen提出了对偶传播神经网 ...

  2. 吴恩达登录知乎,亲自回答如何系统学习机器学习

    如何系统地学习机器学习?知乎里有很多回答,近日,吴恩达老师亲自在知乎回答了这个问题: 作者:吴恩达 链接:https://www.zhihu.com/question/266291909/answer ...

  3. 吴恩达入驻知乎首答:如何系统学习机器学习?

    最近在知乎圆桌里看到吴恩达的回答,[如何系统学习机器学习?] 颇为惊喜,仿佛看到了知乎刚成立时的样子,请各个行业大佬来分享专业知识. 该回答目前已经有三千多赞,评论区也相当火爆,一片膜拜之声. 吴恩达 ...

  4. 吴恩达入驻知乎,涨粉秒过万!知乎首答:如何系统学习机器学习

    文 | 卖萌酱 大家好,我是卖萌酱. 昨天在知乎timeline上刷到一个问题: 虽然卖萌酱已经不需要系统学习机器学习了,但无意间发现最高赞的id竟然叫"吴恩达"?? 好家伙,看了 ...

  5. 系统学习机器学习之增强学习(五)--马尔可夫决策过程策略TD求解(SARSA)

    转自:https://www.cnblogs.com/pinard/p/9529828.html 1.时间差分法(temporal difference) 蒙特卡洛方法,需要所有的采样序列都是经历完整 ...

  6. 我是吴恩达:人在美国,刚上知乎,先答个「如何系统学习机器学习」

    杨净 发自 凹非寺 量子位 | 公众号 QbitAI 知乎新用户吴恩达,第一件事儿竟是回答如何系统学习机器学习. 嗯,果然随时都自带老师属性. 结果短短不到12个小时,就已经收获了两千多个赞同,关注者 ...

  7. 系统学习机器学习之增强学习(二)--马尔可夫决策过程

    参考: http://blog.csdn.net/zz_1215/article/details/44138823 http://www.cnblogs.com/jerrylead/archive/2 ...

  8. 系统学习机器学习之SVM(三)--Liblinear,LibSVM使用整理,总结

    1.Libsvm与Liblinear区别,简单源码剖析. http://blog.csdn.net/zhzhl202/article/details/7438160 http://blog.csdn. ...

  9. 系统学习机器学习之总结(二)--样本不平衡问题处理

    原文链接:http://blog.csdn.net/heyongluoyao8/article/details/49408131 解决这一问题的基本思路是让正负样本在训练过程中拥有相同的话语权,比如利 ...

  10. 系统学习机器学习之神经网络(一)--MLP及局部模型,RBF综述

    今天我们要谈的MLP其实是一种人工神经网络结构,属于非参数估计,可以用于解决分类和回归问题.我们先来了解下神经网络的背景,然后再来介绍下感知器. 神经网络 感知器 多层感知器 神经网络的应用 局部模型 ...

最新文章

  1. 你的大脑在自动驾驶,而你一无所知
  2. 天使投资乱象频出 熟人元素何时剔除
  3. 【转】Java开发必须要知道的知识体系
  4. android java判断字符串是否为空和是否是手机号和是否是数字,数字转中文
  5. LateX在windows中运用MiKTeX
  6. 中考计算机考试exce,中考信息技术EXCEL操作.doc
  7. openstack网络服务neutron (控制节点)
  8. Leetcode 20. Valid Parentheses
  9. 从IT到DT,再到OT
  10. FANUC机器人系统知识学习
  11. 单片机零基础入门(8-5)模块化编程
  12. gdi win7奔溃_win7 64位操作系统,新安装的软件一打开就崩溃,故障模块“StackHash_0a9e”,有大神知道是什么问题吗...
  13. 算法篇:最长公共子串(牛客)
  14. Axure原型设计工具--产品经理必备
  15. modbus协议的认识和libmodbus库使用
  16. Mac 给新人的入手指南
  17. java那块最难_Java哪块最难学?
  18. 加密文档的三种基本方法
  19. 辟邪剑法之字符串常用API
  20. oppoK9Pro游戏性能怎么样

热门文章

  1. 使用dos删除隐藏的.git文件
  2. [To Selina] 《撒野》读后感
  3. xp服务器文件写保护怎么删除,Xp系统磁盘被写保护无法复制文件解决方法
  4. 微信小程序: 赞赏码的长按识别
  5. 论文阅读:在Stiefel流形上的黎曼优化
  6. leetcode46题 php实现,Leetcode PHP题解--D46 893. Groups of Special-Equivalent Strings
  7. go import 导入包名前加下划线 _
  8. 银河麒麟V10(Kylin Linux V10)之MySQL编译安装
  9. clion-debug调试步骤
  10. 关于ps抠图问题,制作公章,公章的复制