Learn from Top Kagglers:高级集成学习技巧

栏目: Python · 发布时间: 5年前

内容简介:常用以下方法举个例子,假设我们有一个名为age的变量,就像年龄一样,我们试着预测它。我们有两个模型:那么如果我们试图结合它们将会发生什么呢?

这是一篇笔记,课程来自Coursera上的

How to Win a Data Science Competition: Learn from Top Kagglers

本篇文章讲解在数据科学竞赛中常用的集成学习技巧。限于小编的视野,可能会出现些误解,有问题望指正。

如果你正在使用电脑端查阅消息,建议访问原文https://github.com/wmpscc/DataMiningNotesAndPractice

Examined ensemble methods

常用以下方法

  • Averaging (or blending)

  • Weighted averaging

  • Conditional averaging

  • Bagging

  • Boosting

  • Stacking

  • StackNet

Averaging ensemble methods

举个例子,假设我们有一个名为age的变量,就像年龄一样,我们试着预测它。我们有两个模型:

  • 低于50,模型效果更好

    Learn from Top Kagglers:高级集成学习技巧

  • 高于50,模型效果更好

    Learn from Top Kagglers:高级集成学习技巧

那么如果我们试图结合它们将会发生什么呢?

Averaging(or blending)

  • (model1 + model2) / 2

    Learn from Top Kagglers:高级集成学习技巧

上升到0.95,较之前有所改善。但该模型并没有比单模型做的好的地方更好,尽管如此,它平均表现更好。也许可能会有更好的组合呢?来试试加权平均

Weighted averaging

  • (model1 x 0.7 + model 2 x 0.3)

    Learn from Top Kagglers:高级集成学习技巧

看起来没有之前的好

Conditional averaging

  • 各取好的部分

    Learn from Top Kagglers:高级集成学习技巧

理想情况下,我们希望得到类似的结果

Bagging

Why Bagging

建模中有两个主要误差来源

  • 1.由于偏差而存在误差(underfitting)

  • 2.由于方差而存在误差(overfitting)

通过略微不同的模型,确保预测不会有读取非常高的方差。这通常使它更具普遍性。

Parameters that control bagging?

  • Changing the seed

  • Row(Sub) sampling or Bootstrapping

  • Shuffling

  • Column(Sub) sampling

  • Model-specific parameters

  • Number of models (or bags)

  • (Optionally) parallelism

Examples of bagging

Learn from Top Kagglers:高级集成学习技巧

Boosting

Boosting是对每个模型构建的模型进行加权平均的一种形式,顺序地考虑以前的模型性能。

Weight based boosting

Learn from Top Kagglers:高级集成学习技巧

假设我们有一个表格数据集,有四个特征。 我们称它们为x0,x1,x2和x3,我们希望使用这些功能来预测目标变量y。

我们将预测值称为pred,这些预测有一定的误差。我们可以计算这些绝对误差, |y - pred| 。我们可以基于此生成一个新列或向量,在这里我们创建一个权重列,使用1加上绝对误差。当然有不同的方法来计算这个权重,现在我们只是以此为例。

所有接下来要做的是用这些特征去拟合新的模型,但每次也要增加这个权重列。这就是按顺序添加模型的方法。

Weight based boosting parameters

  • Learning rate (or shrinkage or eta)

    • 每个模型只相信一点点: predictionN = pred0*eta + pred1*eta + ... + predN*eta

  • Number of estimators

    • estimators扩大一倍,eta减小一倍

  • Input model - can be anything that accepts weights

  • Sub boosting type:

    • AdaBoost-Good implementation in sklearn(python)

    • LogitBoost-Good implementation in Weka(Java)

Residual based boosting

我们使用同样的数据集做相同的事。预测出pred后

Learn from Top Kagglers:高级集成学习技巧

接下来会计算误差

Learn from Top Kagglers:高级集成学习技巧

将error作为新的y得到新的预测new_pred

Learn from Top Kagglers:高级集成学习技巧

以Rownum=1为例:

最终预测=0.75 + 0.20 = 0.95更接近于1

这种方法很有效,可以很好的减小误差。

Residual based boosting parameters

  • Learning rate (or shrinkage or eta)

    • predictionN = pred0 + pred1*eta + ... + predN*eta

    • 前面的例子,如果eta为0.1,则Prediction=0.75 + 0.2*(0.1) = 0.77

  • Number of estimators

  • Row (sub)sampling

  • Column (sub)sampling

  • Input model - better be trees.

  • Sub boosting type:

    • Full gradient based

    • Dart

Residual based favourite implementations

  • Xgboost

  • Lightgbm

  • H2O’s GBM

  • Catboost

  • Sklearn’s GBM

Stacking

Methodology

  • Wolpert in 1992 introduced stacking. It involves:

    • 1.Splittingthe train set into two disjoint sets.

    • 2. Train several base learners on the first part.

    • 3.Make predictionswith the base learners on the second (validation) part.

具体步骤

假设有A,B,C三个数据集,其中A,B的目标变量y已知。

Learn from Top Kagglers:高级集成学习技巧

然后

  • 算法0拟合A,预测B和C,然后保存pred0到B1,C1

  • 算法1拟合A,预测B和C,然后保存pred1到B1,C1

  • 算法2拟合A,预测B和C,然后保存pred2到B1,C1

    Learn from Top Kagglers:高级集成学习技巧

  • 算法3拟合B1,预测C1,得到最终结果preds3

Stacking example

Stacking(past) example

Learn from Top Kagglers:高级集成学习技巧

可以看到,它与我们使用 Conditional averaging 的结果非常近似。只是在50附件做的不够好,这是有道理的,因为模型没有见到目标变量,无法准确识别出50这个缺口。所以它只是尝试根据模型的输入来确定。

Things to be mindful of

  • With time sensitive data - respect time

    • 如果你的数据带有时间元素,你需要指定你的stacking,以便尊重时间。

  • Diversity as important as performance

    • 单一模型表现很重要,但模型的多样性也非常重要。当模型是坏的或弱的情况,你不需太担心,stacking实际上可以从每个预测中提取到精华,得到好的结果。因此,你真正需要关注的是,我正在制作的模型能给我带来哪些信息,即使它通常很弱。

  • Diversity may come from:

    • Different algorithms

    • Different input features

  • Performance plateauing after N models

  • Meta model is normally modest

StackNet

请参考:https://github.com/kaz-Anova/StackNet

Ensembling Tips and Tricks

level tips

  • Diversity based on algorithms:

    • 2-3 gradient boosted trees (lightgbm, xgboost, H2O, catboost)

    • 2-3 Neural nets (keras, pytorch)

    • 1-2 ExtraTrees/RandomForest (sklearn)

    • 1-2 linear models as in logistic/ridge regression, linear svm (sklearn)

    • 1-2 knn models (sklearn)

    • 1 Factorization machine (libfm)

    • 1 svm with nonlinear kernel(like RBF) if size/memory allows (sklearn)

  • Diversity based on input data:

    • Categorical features: One hot, label encoding, target encoding, likelihood encoding, frequency or counts

    • Numerical features: outliers, binning, derivatives, percentiles, scaling

    • Interactions: col1*/+-col2, groupby, unsupervised

level tips

  • Simpler (or shallower) Algorithms:

    • gradient boosted trees with small depth(like 2 or 3)

    • Linear models with high regularization

    • Extra Trees (just don’t make them too big)

    • Shallow networks (as in 1 hidden layer, with not that many hidden neurons)

    • knn with BrayCurtis Distance

    • Brute forcing a search for best linear weights based on cv

  • Feature engineering:

    • pairwise differences between meta features

    • row-wise statistics like averages or stds

    • Standard feature selection techniques

  • For every 7.5 models in previous level we add 1 in meta (经验)

  • Be mindful to target leakage

Additional materials

  • MLWave.com的Kaggle 集成指南(方法概述)

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

  • StackNet - 一个计算,可扩展和分析的元建模框架(KazAnova)

    https://github.com/kaz-Anova/StackNet

  • Heamy - 一套用于竞争数据科学(包括整合)的有用工具

    https://github.com/rushter/heamy

Learn from Top Kagglers:高级集成学习技巧

长按识别二维码

获取更多AI资讯

Learn from Top Kagglers:高级集成学习技巧

Learn from Top Kagglers:高级集成学习技巧


以上所述就是小编给大家介绍的《Learn from Top Kagglers:高级集成学习技巧》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法霸权

算法霸权

[美] 凯西·奥尼尔 / 马青玲 / 中信出版集团 / 2018-9-1 / 69.00元

数据科学家凯西•奥尼尔认为,我们应该警惕不断渗透和深入我们生活的数学模型——它们的存在,很有可能威胁到我们的社会结构。 我们生活在一个依赖“算法”的时代,它对我们生活的影响越来越大,我们去哪里上学,我是不是应该贷款买车,我们应该花多少钱来买健康保险,这些都不是由人来决定的,而是由大数据模型来决定的。从理论上来说,这一模型应该让社会更加公平,每一个人的衡量标准都是一样的,偏见是不存在的。 ......一起来看看 《算法霸权》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具