首页 > 代码库 > 机器学习笔记十三:Ensemble思想(上)
机器学习笔记十三: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个学习器.
非常简单的思想,形象一点如下图所示.
符合bagging思想的比较出名的学习算法就是随机森林了,在后面会详细来讲随机森林.这里先知道随机森铃的思想算是bagging就行.
Ⅱ.boosting
boosting的思想是:
训练集(其中各个元素)的权重是根据学习器的表现来改变的.
这个和bagging就有很大的不同了.bagging采用自助采样的方式”产生”出多个训练集.但是boosting只有一个训练集,但是训练集中各个元素(输入向量)的权重是不同的.
详细一点,boosting是先从具有初始权重的训练集训练出一个弱学习器1,然后根据弱学习器1的表现,来更新样本的权重. 然后再具有新的权重的训练集上面训练弱学习器2,然后根据弱学习器2的表现来更新样本的权重……..反复多次 ,得到m个学习器,最后整合这些弱学习器得到强学习器.
形象一点的话看下图.
这里并不详细展开讲权重改变的具体细节,因为这篇的目的是快速理解思想,为后面的打基础.更具体的在后面的博客会详细给出.
Boosting框架下面比较出名好用的就是Adaboost算法和提升树了.后面都会讲到.
三.通过怎样的策略结合学习器
这里只能说要粗略的带过了,因为后面会从具体的实例里面体会怎么结合各种学习器.比在这里泛泛而谈要有用得多.
重点是要好好理解bagging和boosting的思想.
机器学习笔记十三:Ensemble思想(上)