天天看点

Ensemble 协同工作

Ensemble的框架

Ensemble 协同工作

Ensemble的方法就是一种团队合作,好几个模型一起上的方法。

  • 第一步:通常情况是有很多的classifier,想把他们集合在一起发挥更强大的功能,这些classifier一般是diverse的,这些classifier有不同的属性和不同的作用。
  • 第二步:就是要把classifier用比较好的方法集合在一起,就好像打王的时候坦和DD都站不同的位置,通常用ensemble可以让我们的表现提升一个档次,一般在kaggle之类的比赛中,ensemble用的最多的也是效果最好的,一般前几名都需要用ensemble。

Bagging

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

 上图表示了用自己采样的数据进行Bagging的过程。在原来的N笔训练数据中进行采样,过程就是每次从N笔训练数据中取N‘(通常N=N’)建立很多个dataset,

 这个过程抽取到的可能会有重复的数据,但是每次抽取的是随机形成的dataset。每个dataset都有N'笔data,但是每个dataset的数据都是不一样的,接下来就是用一个复杂的模型对四个dataset都进行学习得到四个function,

 接下来在testing的时候,就把这testing data放到这四个function里面,再把得出来的结果做平均(回归)或者投票(分类),通常来说表现(variance比较小)都比之前的好,这样就不容易产生过拟合。

 做Bagging的情况:模型比较复杂,容易产生过拟合。(容易产生过拟合的模型:决策树)目的:降低方差

Ensemble 协同工作

决策树的实际例子:初音问题

Ensemble 协同工作
Ensemble 协同工作

上图可以看到,深度是5的时候效果并不好,图中白色的就是class1,黑色的是class2.当深度是10的时候有一点初音的样子,当深度是15的时候,基本初音的轮廓就出来了,但是一些细节还是很奇怪(比如一些凸起来的边角)

当深度是20的时候,就可以完美的把class1和class2的位置区别开来,就可以完美地把初音的样子勾勒出来了。对于决策树,理想的状况下可以达到错误是0的时候,最极端的就是每一笔data point就是很深的树的一个节点,这样正确率就可以达到100%(树够深,决策树可以做出任何的function)但是决策树很容易过拟合,如果只用决策树一般很难达到好的结果

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

 强调一点是做Bagging更不会使模型能fit data,所有用深度为5的时候还是不能fit出一个function,所有就是5颗树的一个平均,相当于得到一个比较平滑的树。当深度是10的时候,大致的形状能看出来了,当15的时候效果就还不错,但是细节没那么好,当20 的时候就可以完美的把初音分出来。

Ensemble 协同工作

 Boosting是用在很弱的模型上的,当我们有很弱的模型的时候,不能fit我们的data的时候,我们就可以用Boosting的方法

Boosting的训练是有顺序的(sequentially),Bagging是没有顺序的(可以同时train)

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

权重的更改

Ensemble 协同工作

 下面数学推导d1

Ensemble 协同工作
Ensemble 协同工作

 那么这个算法的实现过程

Ensemble 协同工作
Ensemble 协同工作

错误率低的classifier,arfa(t)大,最后在最终结果的投票上会有比较大的权重

下面举个例子

Ensemble 协同工作

让分类对的权重小些,分类错的权重大些

同理t=2

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

 结果整合:这个三个分类器把平面分割成六个部分,左上角三个分类器都是蓝色的,那就肯定就蓝色的。上面中间部分第一个分类器是红色的,第二个第三个是蓝色的,但是后面两个加起来的权重比第一个大,

 所以最终中间那块是蓝色的,对于右边部分,第一个第二个分类器合起来的权重比第三个蓝色的权重大,所以就是红色的。下面部分也是按照同样道理,分别得到蓝色,红色和红色。

 所以这三个弱分类器其实本事都会犯错,但是我们把这三个整合起来就能达到100%的正确率了。

AdaBoost证明推导

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

证明上界函数会越来越小

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

AdaBoost的神秘现象

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

 本来深度是5的决策树是不能做好初音的分类(只能通过增加深度来进行改进),但是现在有了AdaBoost的决策树是互补的,所以用AdaBoost就可以很好的进行分类。

 T代表AdaBoost运行次数,图中可知用AdaBoost,100棵树就可以很好的对初音进行分类。

Gradient Boosting

Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作
Ensemble 协同工作

Stacking

Ensemble 协同工作
Ensemble 协同工作

 但是有个问题就是并不是所有系统都是好的,有些系统会比较差(如 小毛的系统不好),但是如果采用之前的设置低权重的方法又会伤害小毛的自尊心,

 这样我们就提出一种新的方法: 把得到的y当做新的特征输入到一个最终的分类器中,然后再决定最终的结果。 对于这个最终的分类器,应当采用比较简单的函数(比如说逻辑回归),

 不需要再采用很复杂的函数,因为输入的y已经训练过了。 在做stacking的时候我们需要把训练数据集再分成两部分,一部分拿来学习最开始的那些模型,另外一部分的训练数据集拿来学习最终的分类器。