机器学习之Blending与Bagging(机器学习技法)

一个融合的故事

今天我的朋友向我荐股(这只股涨还是跌)我该怎么办,有以下的4种解决方法:

①我只接受我最信任的朋友的意见(Validation模型检验)。

②我让我的朋友们去投票然后选择票数最高的那一股。

③我让我的朋友们去投票但是每个人投票的权重不同。

④结合预测的情况去找不同的人,比如说科技股的叫A...传统股的叫B...

这样我们就把这些人的意见(能够做的事情)就融合起来了。

一些数学上的表示

 

①用validation来得到最优解,根据以前的表现来判断。

②每人一票,可以投正的或者反的看最后的和是正的还是负的

③每人一票权重不同,之后求和然后去判断。

这个可以演变成①的情况,给某一个人∞的权重而给其他人的权重为0

还可以演变成②的情况所有人的权重都为1

④在预测的函数上加上与输入x相关的函数,当满足条件的时候会给某个朋友某个权重。

当然这个包含③,③是说在任何条件下都会给特定的人特定的权重。同时也就包含了其它的以上所有的模型。

一般的模型选择与Aggregation

在选择模型的时候有以下的几个方案

①我们可以通过模型检验去选择模型。

②我们可以通过Ein(损失函数)去选择模型但是会有模型复杂度的代价。

③我们在通过模型检验去选择模型的时候前提是需要找到一个最好的g-(只是单纯的用validation没有将这个模型再次投入训练)。这就要求我们需要一个还不错的g-,如果没有的话我们可能得不到一个好的结果。

Aggregation强调的是即使我们只有一些比较弱的g我们也可以把它们融合起来变得很强。

直观的表现

 

Aggregation相当于特征转换

假如我们现在要分割图上的资料点,但是我们只能切竖直刀和水平刀。单单的通过切竖直刀或水平刀是无法二分资料的,但是我们把竖直刀和水平刀结合起来就能够完美解决。

Aggregation相当于正则化

Aggregation有投票的属性同样是切割图中的资料如果是PLA算法就会有一些随机的超平面产生但是在Aggregation投票的属性下会得到一条比较中庸的超平面。这个结果与SVM十分相近。

综上:如果做好了Aggregation就同时做好了特征转换与正则化。

平均混合

平均混合与线性二分

假设我们现在有很多已经通过资料学得的模型,平均混合的规则就是让每一个模型都参与平均的投票。我们给每个模型一票最后得到模型投票之和就是。最后的投票的结果(也就是融合的模型)就是我们最终的模型。如果我们得到的模型都很相似的话那么我们融合后的模型也会和以前的表现大体相似。但是如果每个模型的表现都不尽相同那么最后得到的融合模型会表现得比以前的模型好,我们会得到一个更为复杂的边界。

 

从经验来看这样才有各取所长的可能性。如上图所示,图中的曲线正是通过三个线性模型所投票得到的。

事实上多类别的分类也是采用投票的方式,但是投票的方式不再是模型上做加减法而是比较每一个类别分别会得到多少票最后决定分类的情况。

平均混合与线性回归

用融合模型解决线性回归问题的一般步骤是这样的,同线性二分的步骤类似首先将每个模型分配一票最后得到模型投票之和,但是这样的话可能会离标准答案隔很远。比如我们的预测结果是2,如果现在有10个模型预测的是2那么它们的和就是20与标准答案隔很远,所以我们一般将得到的和除以参与投票的模型个数这样就能够接近我们预测的结果。

如果我们得到的g都很相似,那么融合的效果就不明显。而不同的g融合之后会得到相对客观的结论从而表现的较好。从经验来看好比有的g低估了我们的结果而有的g高估了我们的结果最后会大概得到一个中庸的结果。以这样的角度来看平均值与单一值相比平均值更加客观稳定。

 

平均混合在理论上的保障

假设现在模型G(一个混合模型)为g的平均融合模型,则会有下面的推导:

 

通过推导我们发现对于某一笔资料x来说avg(g-f)²>(G-f)²,

对于所有的x来说则有Eout(g) = avg()+Eout(G)。我们得到的结果是融合后的G在所有资料上的表现要比平均的g好。

一些特殊的模型

如果我们现在从所有资料中独立同分布的获得N笔资料,然后通过一个特定的算法A去学得一个模型g。重复无限多次上述步骤然后得到一个平均的结果,如下图所示:

 

将这个g平均带入到融合回归的结论里就会得到这个算法表现的一种物理意义,因为这是对某个算法进行了无心多轮的测试后的结果:

①我们把这个模型学得的g平均所犯的错误Eout(g)叫做bias,也就是各个模型的共识与我们理想函数的距离。

②平均的方差就是在小化各个g与共识的差距。

线性融合

现在的投票场景变成了每个人持有不同的票数,每个人所持有的票数是α如下图所示:

 

现在我们的目的就是要求出犯错误最小时的G所对应的α如下图所示:

 

上图中的错误是典型的关于线性回归的平方错误,同时也可以推广到其他的线性模型。这个损失函数与以前的two level learning(两步学习)十分相似,在计算和最优化方面我们可以借助于以前的损失函数的方法把现在的α看作是一个权重W,把g当作是一个转换。这样的话线性融合模型=一个线性模型+g看作是一个转换+一些约束条件(在线性融合模型中所有的α都是非负数)。

 

去掉约束条件

我们的约束条件是所有的α>=0,但是我们可以换一种角度来看这个问题。如下图:

 

α<0的时候,原式就可以写成是|α|(-g(x))这样的话我们就可以将这种情况理解为α<0时我们就可以将g的结果反着用这样就得到了与原来相同的结果。这样也会带来一些好处,假设一个系统的错误率是99%,那么如果反过来使用它的话我们就会得到一个正确率为99%的系统。从这种角度出发我们就可以不必在意α的正负了而只在意我们的g是正着用还是反着用。

 

线性融合与模型选择

我们的线性融合的前提就是我们已经有了很多不错的模型g在手上。那么我们的模型g是从哪里来的?

①我们可以通过选择训练结果损失函数Ein来选择我们的模型,但是这样会出现一个问题,就是在假设集合增大时会带来模型复杂度的代价。因为这些g都来自与不同的假设集合。

②模型选择是一中特殊的线性融合模型,它的α是由模型检验选出的最小的g得来的。

③通过融合模型中的最小损失函数来选择的话会付出更大的模型复杂度。因为这样相当于是将最好的g再次组成一个精英团队然后再选择一个最好的g。如下图所示:

 

实务上我们不会用损失函数去选择我们的模型,而是用Eval(模型检验)的指标来选这样我们会选择到最好的g-

 

任意的融合

我们实际做的就是在一个比较小的训练集上得到一堆g-,将我们的测试集资料通过g-的转换进而转换成Z空间(转换空间)的资料。后续的步骤就是根据α与转换过后的资料做线性组合之后就可以投射到其他的线性模型中去了。特别注意的是在最后传回去的并不是g-的转换而是g做转换的结果,因为这样的转换会更加精确。

 

当然我们的模型不只是线性的模型,我们可以将转换推广到任意的非线性组合中。我们的步骤还是分为两层,第一层我们会得到那些g,第二层我们会融合这些g但是这次我们不再是通过线组合的模型去得到最好的α,而是通过非线性的转换得到g,然后回传g与转换的非线性组合。这种融合方式称为任意融合(Any Blending或者是Stacking)。

这种模型能够做非线性的模型所以它比较强大但是我们也要提防过拟合的发生。

Bagging

在前面讲到我们的融合模型的前提是我们拥有不同的g在手上。我们如何得到不同的g呢?

①通过不同的学习模型。

②通过不同的参数,比如说在梯度下降法中不同的学习步幅η。

③演算法本来的随机性,比如PLA

④我们资料的随机性,比如说我们可以通过交叉验证法得到不同的资料。

我们想要的是通过同一份资料得到不同的g,而不是在资料书小于N的时候得到的g-

 

做出妥协

 

在以前的实验中我们得到了一个算法表现的普遍规律:大家的共识会优于单独个体的认知。

 

在这个推导中用到了无限的资料与无限多次的训练去产生不同的g。这样是不现实的,所以我们做出妥协。首先我们使用有限多次但是大量的训练,然后我们想要只从一个数据集就能够模仿不同的样本进而得到不同的g

在统计学上有这样一种抽样方法叫做bootstrapping具体步骤如下:

我们从数量为N的数据集中,有放回的一笔一笔地抽取资料重复N次,这样的话就得到了一个大小为N的样本。然后再将上述的步骤重N`次就得到了N`个不同的样本了。从这N`个样本中训练就可以得到不同的g了。这种方法是物理上可以实现的方法,用这种方法的得到g之后然后在进行融合,实务上我们把这种融合的方法叫做Bagging

如果一个演算法对随机的过程比较敏感我们就会得到很不一样的小g,这样我们就更有可能得到较好的结果。

下图是将pocket演算法通过Bagging的方法融合之后得到的复杂模型,表现的还不错。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elong_Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值