机器学习笔记十三:Ensemble思想(上)
从上面几篇的决策树開始,就能够開始进入到集成学习(ensemble learning)了,与其说集成学习是一种算法,倒不如说集成学习是一种思想.
集成学习的思想也是非常自然非常符合人类直观理解的. 用通俗的不能更通俗的话来说,要是一个机器学习器解决不了问题,那就多训练几个.再把这些学习器结合起来完毕机器学习任务. 能够类比开会,一群人讨论得到的解决的方法一般比一个人拍板的要好.
用过集成学习之后,一般来说,效果都会比某些单一的算法效果要好.所以,无论是为了排名还是为了其它的东西,kaggle等机器学习竞赛一大部分方案都会使用集成学习的,你懂得.
这篇仅仅讲集成学习的主要思想和最常见的学习策略.并不带有太多的理论数学推导,在之后的下篇会增加进来.
一.概述
前面就已经讲到了,集成学习的思想是,我们能够训练非常多个学习器,通过一定的结合策略,终于形成一个强的学习器.形象一点看下图.
所以,你会非常自然的考虑:
我们通过如何的方式来得到n个学习器呢?
得到n个学习器之后,我们通过如何的策略来结合呢?
以下的内容就这两个疑惑来讲一下常见的训练多个学习器的方法和结合多个学习器的方法.
二.怎么得到多个学习器
这一部分举两个最常见的得到多个学习器的思路.一种是bagging,第二种是boosting.
Ⅰ.bagging
要理解bagging,首先知道bootstrap词汇的故事.这个词汇表示的是靴子上面的小环或者是悬挂物等等,通过这个小东西能够方便穿靴子.意思是不依靠外界的帮助,或者叫做自助法.
在这里表示一种有放回的抽样方法.所以以后看到bootstrap这个词不要不知道是什么意思.相同,你可能会经常看到一个词叫做bootstrap sampling.这个词的意思是自助採样,对于N个样本的训练集,我从里面随机取出m个样本,得到一个子训练集.然后把这些样本放回. 然后再取m个样本,得到第二个子训练集,再放回去………..重复这种步骤k次,得到k个子训练集.
Bagging能够看做是bootstrap aggregation的简写.
bagging得到多个学习器的方式为:
通过自助採样的方法得到K个训练集,然后分别在这K个训练集上面训练学习器.然后就得到了K个学习器.
非常easy的思想,形象一点例如以下图所看到的.
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGllcmhhY2tlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
须要注意的是,bagging对于弱学习器没有限制,也就是说,你能够用决策树,SVM等等都是能够的.一般经常使用的是决策树和神经网络.
由于baggin的随机採样思路,模型的泛化能力非常强,减少了模型的方差.可是对于训练集的拟合程度就不是那么好,也就是说偏差会大一些.
符合bagging思想的比較出名的学习算法就是随机森林了,在后面会具体来讲随机森林.这里先知道随机森铃的思想算是bagging即可.
Ⅱ.boosting
boosting的思想是:
训练集(当中各个元素)的权重是依据学习器的表现来改变的.
这个和bagging就有非常大的不同了.bagging採用自助採样的方式”产生”出多个训练集.可是boosting仅仅有一个训练集,可是训练集中各个元素(输入向量)的权重是不同的.
具体一点,boosting是先从具有初始权重的训练集训练出一个弱学习器1,然后依据弱学习器1的表现,来更新样本的权重. 然后再具有新的权重的训练集上面训练弱学习器2,然后依据弱学习器2的表现来更新样本的权重……..重复多次 ,得到m个学习器,最后整合这些弱学习器得到强学习器.
形象一点的话看下图.
这里并不具体展开讲权重改变的具体细节,由于这篇的目的是高速理解思想,为后面的打基础.更具体的在后面的博客会具体给出.
Boosting框架以下比較出名好用的就是Adaboost算法和提升树了.后面都会讲到.
三.通过如何的策略结合学习器
这里仅仅能说要粗略的带过了,由于后面会从具体的实例里面体会怎么结合各种学习器.比在这里泛泛而谈要实用得多.
重点是要好好理解bagging和boosting的思想.
机器学习笔记十三:Ensemble思想(上)的更多相关文章
- 机器学习笔记—svm算法(上)
本文申明:本文原创,如转载请注明原文出处. 引言:上一篇我们讲到了logistic回归,今天我们来说一说与其很相似的svm算法,当然问题的讨论还是在线性可分的基础下讨论的. 很多人说svm是目前最好的 ...
- Python机器学习笔记 集成学习总结
集成学习(Ensemble learning)是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合,从而获得比单个学习器显著优越的泛化性能.它不是一种单独的机器学习算法啊,而更像是一种优 ...
- 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9611887 作者:七十一雾央 新浪微博:http:/ ...
- Python机器学习笔记:使用Keras进行回归预测
Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...
- Python机器学习笔记:sklearn库的学习
网上有很多关于sklearn的学习教程,大部分都是简单的讲清楚某一方面,其实最好的教程就是官方文档. 官方文档地址:https://scikit-learn.org/stable/ (可是官方文档非常 ...
- Python机器学习笔记:不得不了解的机器学习面试知识点(1)
机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...
- 【转】机器学习笔记之(3)——Logistic回归(逻辑斯蒂回归)
原文链接:https://blog.csdn.net/gwplovekimi/article/details/80288964 本博文为逻辑斯特回归的学习笔记.由于仅仅是学习笔记,水平有限,还望广大读 ...
- Python机器学习笔记:不得不了解的机器学习知识点(2)
之前一篇笔记: Python机器学习笔记:不得不了解的机器学习知识点(1) 1,什么样的资料集不适合用深度学习? 数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势. 数据集没有局 ...
- Python机器学习笔记:K-Means算法,DBSCAN算法
K-Means算法 K-Means 算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means 算法有大量的变体,本文就从最传统的K-Means算法学起,在其基础上学习 ...
随机推荐
- 移动端js触摸事件大全
一.手机上的触摸事件 基本事件: touchstart //手指刚接触屏幕时触发 touchmove //手指在屏幕上移动时触发 touchend //手指从屏幕上移开时触发 下面这 ...
- HTTP 的长连接和短连接
一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...
- Python打包方法——Pyinstaller (转)
Python版本:Python3.5.2 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后 ...
- js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- [ 原创 ] centos安装tomcat,启动成功 无法访问
https://blog.csdn.net/realjh/article/details/82048492 Linux下Centos7对外开放端口 2018年08月25日 09:53:42 jeter ...
- python——设计模式
设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码.反之,设计模式更为高级,它是一种必须在特定情 ...
- Altium Designer Summer 09换成中文步骤
1.打开Altium Designer Summer 09软件,在左上角file文件中点击,再打开Preferences出现如下,然后关闭软件在打开就完成了
- Putty的用法
大致内容罗列如下: · 最简单的使用,登录 SSH主机 · 中文乱码的处理 · PuTTY常用配置的说明 · 复制.粘贴 · 保存 ...
- Android MediaCodec 状态(States)转换分析
*由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不 ...
- CSS属性级Hack
CSS属性级Hack color:red; /* 所有浏览器可识别*/ _color:red; /* 仅IE6 识别 */ *color:red; /* IE6.IE7 识别 */ ...