今我来思,堆栈泛化(Stacked Generalization)

​在集成学习(Ensemble Learning)中除了Bagging和Boosting对数据的横向划分划分之外,还有一个纵向划分(加深)的方法, 一般称为Stacked Generalization(SG)的技术。  SG这个技术已经在Kaggle竞赛中多次崭露头角了, 部分情况下,应用SG技术可以让错误率进一步降低30%。

什么是SG?

为了阐述, 下面借用了一张很直观的SG的示意图: 数据划分的纵向上有两层学习器, 把Level 0的Base-learner学习器的输出, 作为Level 1学习器的输入, Level 1的学习器又被称为Meta-learner或者Generalizer。 这种集成学习方式就是SG, 也称为Stacking。

SG是怎么诞生的?

最早重视并提出Stacking技术的是David H. Wolpert,他在1992年发表了SG技术论文:这好比是巧妙的扩展了交叉验证(cross-validation), 通过胜者全得(winner-takes-all)的方式来集成的方法。 Wolpert大神是一个三栖学者, 数学家, 物理学家, 和计算学家。 他更为成名的是1995年提出No-Free-Lunch(NFL)理论。 NFL理论很直观,就是算法差异更多在于适不适合你要解决的问题。 比较多个算法, 例如,问题P1和机器学习M1合适, 但是不可能合适所有的问题。

Wolpert

多个算法的NFL解释

两个算法的NFL解释

也许NFL是对SG技术有效性更深层次思考的一种解释:如何协调不同的算法的适用性呢? SG就是这么一种有效的技术。

SG的基因?

SG是Ensemble Learning中异源集成(heterogenous ensembles)的典型代表。一般来说,同源集成(homogenous ensembles)就是Bagging和Boosting了(还有一个Cascading 的小众集成学习方法, 也可以算是同源集成)。

Bias-Variance平衡是机器学习的经典话题, 而集成学习就是在尽量不增加一方, 想法设法降低另外一方, 或者同时降低两者的方法, 而代价就是集成。

一句话, Stacking的基因就是Ensemble中Aggregation方法进一步泛化的结果, 是通过Meta-Learner来取代Bagging和Boosting的Voting/Averaging来综合降低Bias和Variance的方法。 譬如: voting可以通过KNN来实现, weighted voting可以通过softmax(Logistic Regression), 而averaging可以通过线性回归来实现。

Bagging, Boosting和Stacking的差异?

借用三张清晰的比较Bagging,Boosting, 和Stacking的示意图, 如下:

Bagging有一个Bootstrap的数据准备过程, 然后每份数据会学习出一个学习器, 然后基于这组学习的输出结果进行Voting或者Averaging,整个流程可以并行(Parallel)处理。

Boosting 根据当前学习器的错误率(Error Rate)来对数据进行筛选, 然后基于高错误率的数据再训练新的学习器,同时调整已有学习器的权重。 最后通过带权重的投票(Weighted Voting)来分类, 整个过程是有依赖顺序(Sequential)的。

Stacking是先设好学习器base-learner, 然后把base-learner的输出作为meta-learner的输入进行集成。 这个框架简单,但是灵活度很高。

下面,总结下它们在目标, 数据, 分类器和集成方式等方面的差异:

其实, Stacking具有的灵活和不确定性,使得它既可以来实现Bagging方式, 又可以来实现Boosting方式。

SG是如何长成的?

理论方面,SG被Wolpert在1992年提出后,Leo Breiman这个大神, 在1996年把广义线性模型(Generalized Linear Model)和SG方法结合起来提出了 "Stacked Regressions"。 再之后,同样来自伯克利(Berkeley)的Mark J. van der Laan在2007的时候在表述Super Learner的时候, 从理论上证明了Stacking方法的有效性。

实践方面, 除了SG理论本身的突破之外, SG应用的广度和深度也在不停的突破, 其中一个是训练数据的分配(Blending的出现); 而另外一个是深层(3层以上)Stacking的出现。

Blending是一个简单模式, 除了最后一层一个Generalizer之外, 其他每层都是一组学习器, 然后两层之间相互连接一个或者多个的Base-learner学习器。前面我们讲到Stacking的训练, 是把这个集成模型看出一个大的学习器, 进行Cross-Validation的训练。 但是Blending希望把数据按层进行划分训练, 例如:

2层的Blending, 就会拿90%训练输入层, 然后10%数据训练输出层。

3层的Blending, 就会拿70%训练输入层,20%训练中间层, 然后10%的数据训练输出层。

深度方面, Stacking也可以比较深(3层以上), 借用一个图示意如下:

除了上述两方面, 要搞定一个Stacked Generalization框架除了Stacking本身,其实还要做其他很多工作的。 如下图, 借用了别人解释的Kaggle竞赛中建立Stacking框架的概要Overview:

在上面这个图中, 除了列了各种操作, 还列了部分Stacking的Meta-learner, 例如XGB等, 那么有哪些常见的Meta-learner呢?

常见Meta-learner是?

SG的最后的meta-learner层很大程度是要矫正不同学习器之间的Bias。 因此它的选择是个很大的挑战。 早期人们在提如何设计meta-learner时候有两点要求: 1)meta-learner的输入最好是类别的概率,而不是直接类别的标签。 2)结合线性或者非线性回归的计算可以用来集成类别的概率。 下面列一下已经被用过的meta-learner。

1. 统计方法的Meta-Learner:

Voting ( Majority based, Probabilitybased)

Averaging (Weighted, Ranked)

2. 经典容易解释的机器学习算法:

Logistic Regression (LR)

Decision Tree (C4.5)

3. 非线性(non-linear)机器学习算法:

Gradient Boosting Machine (GBM,XGBoost),

Nearest Neighbor (NN),

k-Nearest Neighbors (k-NN),

Random Forest (RF)

Extremely Randomized Trees (ERT).

4. 加权一次/二次线性(Weighted Linear / Quadratic)模型

Feature weighted linear stacking

Quadratic - Linearstacking

5. Multiple response 分析(非线性)框架

Multi-response linear regression (MLR)

Multi-response model trees (MRMT)

6. 无监督(Unsupervised)方法

- 聚类 Clustering

K-Means

Unsupervised Hierarchical Weighted Multi-segmenter

-维度压缩 Dimension Reductoin

t-Distributed Stochastic Neighbor Embedding (t-SNE)

7. 其他, 在线学习, 神经网络,遗传学习,  群体智能 等:

-在线学习 Online stacking (OS)

Linear perceptron with online random tree

Random bit regression (RBR)

Vowpal Wabbit  (VW)

Follow the Regularized Leader (FTRL)

-神经网络Artificial neural network (ANN)

2 layer - ANN

3 layer - ANN

-遗传学习 Genetic algorithm (GA)

GA-Stacking

-群体智能 Swarm intelligence (SI)

Artificial bee colony algorithm

另外, 这有个文章列表显示从1997年到2013年, Meta-learner的设置越来越新颖广泛:

如何测试评价呢?

各种评价标准:

ACC: accuracy

RMS: root-mean-squared error

MXE: mean cross entropy

LFT: lift

BEP: precision/recall break-even point

FSC: precision-recall F score

APR: average precision

ROC: ROC / AUC

CAL: probability calibration

SAR: (ACC + ROC + (1 - RMS) )  / 3  (一种综合的稳定的评价标准)

综上, SG是很强大的集成方式, 某种意义上, 和深度学习类似, 纵向增加了学习深度, 但是也增加了模型复杂型和不可解释性。如何精心的选择Meta-learner 和 Base-learner, 训练方式, 评价标准等也是要重视的经验。

参考:

http://machine-learning.martinsewell.com/ensembles/stacking/

http://www.cs.utsa.edu/~bylander/cs6243/wolpert92stacked.pdf

http://www.santafe.edu/about/people/profile/David%20Wolpert

http://mlwave.com/kaggle-ensembling-guide/

http://www.chioka.in/stacking-blending-and-stacked-generalization/

http://manish2020.blogspot.my/2012_12_01_archive.html

http://blog.fliptop.com/blog/2015/03/02/bias-variance-and-overfitting-machine-learning-overview/

http://blog.kaggle.com/2015/12/03/dato-winners-interview-1st-place-mad-professors/

https://en.wikipedia.org/wiki/Cascading_classifiers

http://www.stata.com/support/faqs/data-management/multiple-responses/

http://gerardnico.com/wiki/data_mining/non_linear

http://puyokw.hatenablog.com/entry/2015/12/12/090000

http://qiita.com/sergeant-wizard/items/d1509f71943b429929cf

https://www.semanticscholar.org/paper/Issues-in-Stacked-Generalization-Ting-Witten/1c58b4c7adee37874ac96f7d859d1a51f97bf6aa

https://www.quora.com/What-are-the-different-ways-to-generalize-logistic-regression-to-multiple-class-labels-instead-of-only-binary

https://discuss.analyticsvidhya.com/t/stacked-generalization/2589

http://blog.csdn.net/u014114990/article/details/50819948

https://www.52ml.net/19553.html

https://github.com/dustinstansbury/stacked_generalization

http://www.tuicool.com/articles/IJza2ij

https://my.oschina.net/airxiechao/blog/755899

http://www.emeraldinsight.com/doi/abs/10.1108/14684520310510091

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容