大话机器学习之STACKing,一个让诸葛亮都吃瘪的神技

首先 感谢蓝蓝的原文,大话的基础是建立在朋友的原始stacking技术分享之上的。

stakcing常常在各大数据挖掘竞赛中被广泛使用,号称“大杀器”。是数据挖掘竞赛高端玩家必备技能,本篇文章就以大话机器学习的角度来阐述,stacking究竟是一个什么样的神技,竟然让牛B哄哄的诸葛亮也能吃瘪。

  大话机器学习之STACKing,一个让诸葛亮都吃瘪的神技_第1张图片

首先,stacking严格说来并不是一种算法。有的时候数据挖掘比赛就会有这样的情况,一个非常厉害的单模型得出的结果,最终在几个模型融合结果的比拼下,败下阵来。Stacking技术实现了一种类似于“三个臭皮匠,顶一个诸葛亮”的效果。在接下来的时间里,我将向大家讲述Stacking技术是如何实现三个臭皮匠,干翻诸葛亮的酷炫效果的,在这里,你只需要知道,stacking技术,是一种非常精美而复杂的,对模型集成的策略。

在各类数据挖掘的比赛中,通常我们都是获得了一份赛方提供的数据,我们通过这份数据,提炼各种特征来建立模型,从而预测给定测试集的结果。非要通俗的来讲,这个过程,打个不恰当的比喻,就是盲人摸象。

如果说大象是整个样本空间的话,那么赛方提供的数据,是不可能全面的(因为赛方无法提供关于这个赛题数据的所有样本数据,他只可能是其中的一部分),可能只是尾巴的一部分+腿的一部分+耳朵的一部分+鼻子的一部分等等。那么每个盲人(模型),就相当于各种算法。厉害如诸葛亮一般的算法,他的手会更加的长,更加的细腻,他能更加准确的摸清数据中的细节特征和从而得出更靠谱的结论,而stacking技术呢,他能通过各个盲人(单模型)提供的结果,总结他们得出的结论,从而得出更靠谱的结论。

所以说,从不同的角度去观测我们的数据集非常的重要。不同的算法模型(盲人),其实是在不同的数据空间角度和数据结构角度(盲人站在不同的位置)来观测数据(摸象),然后再依据它自己的观测(摸象的结果),结合自己的算法原理(盲人自己的理解),来建立一个模型,在新的数据集上再进行预测,从而达到战胜诸葛亮的效果。说到这,不知道大家对stacking技术,是不是有了一个新的理解。

那么stacking技术,究竟是如何进行的呢?且听我慢慢道来。

假设,现在来了赛方牵出了一头大大象,大家眼睛都蒙着,我们采用stacking技术,来摸象。

大话机器学习之STACKing,一个让诸葛亮都吃瘪的神技_第2张图片

1、选择基模型,换句话说,你现在收下有一帮盲人,你得选择几个得力的盲人,如xgb盲人,lgb盲人,RF盲人等等。虽然三个臭皮匠确实能实现一个诸葛亮的效果,但是现实情况往往是,我们在基模型上就会选择比较厉害的模型,直接用三个诸葛亮模型融合,来确保融合效果。

2、划分数据。这一步就是把大象给剁了,这多少有点残忍哈。为方便说明,我们假设把大象分成了2份。我们分别记录为train1~train2。如果不能理解,你就想象成是2堆大象。每堆里面都有部分大象的肢体。

3、现在我们有2堆大象肉,我们让1个盲人去摸其中的1堆,然后去预测剩下那堆,并保留结果,其中我们还要根据摸过获得的经验,去预测下需要预测的测试集。

4、因为我们有3个盲人,所以我们得让每个盲人都摸一次。因此此时,我们有来自3个盲人的3份体会,以及3个盲人对测试集的预测情况,这取决于你安排了多少个盲人。

5、当每个盲人都摸过后,3个盲人要进行开会了。盲人们会分享,自己摸过后获得的感受和经验,以及对需要预测的测试集的预测情况。

这里大家可能会有疑问了,盲人们怎么来分享呢?

xgb盲人说:我摸了其中一堆,用这个体会去感受剩下那堆的时候,感觉这第二堆是啥啥啥,测试集是啥啥啥。

RF盲人说:balabalabalba…….

发现没有,只有通过第三步这个过程,盲人们才能彼此分享对于这部分数据的感受。

最后,我们通常用LR模型,来总结大家的经验。这个LR模型,看来有点像会议主持人哈,虽然摸象不咋地,但是特别会总结。

这里再列个图,方便大家理解

好了,接下来,我就不打算说人话了。

大话机器学习之STACKing,一个让诸葛亮都吃瘪的神技_第3张图片

XGB模型,把train分train1~train5,共5份,用其中4份预测剩下的那份,同时预测test数据,这样的过程做5次,生成5份train(原train样本数/5)数据和5份test数据。然后把5份预测的train数据纵向叠起来,把test预测的结果做平均。

RF模型和XGB模型一样,再来一次。这样就生成了2份train数据和2份test数据(XGB重新表达的数据和RF重新表达的数据),然后用LR模型,进一步做融合,得到最终的预测结果。

你可能感兴趣的:(机器学习)