【机器学习大杀器】Stacking堆叠模型
创始人
2024-01-20 06:49:19

1.前言

        Kaglle比赛中使用Stacking模型是非常常见的大杀器,这是为什么呢?


【机器学习大杀器】Stacking堆叠模型

1.前言

2.Model 3: Stacking model

2.1 description of the algorithms:

2.2 interpretation of the estimated models:

 3. Extend

3.1 code sample

3.2 the coefficient of last mode


2.Model 3: Stacking model

===============================================

Include three models:  

=================

  1. Lasso;
  2. Random Forest;
  3. Gradient Boost.

==============================================================


2.1 description of the algorithms:


        当我们得到了3个鲁棒性相当但各自不同的模型时,这个时候我们该选择哪个模型?我想这是一件非常为难的事情,但通过集成学习的方法,我们可以轻松的将这3个模型合成为1个汲取了各个模型优点的更好的模型。Stacking正是这样一种策略,用于融合模型。

        2007 年,堆叠的理论背景被开发出来,并且当算法采用了更酷的名称Super Learner (Van der Laan、Polley 和 Hubbard 2007)。此外,作者说明Super Learner将学习Basic Learner预测的最佳组合,并且通常表现得与构成堆叠集成的任何单个模型一样好或更好。直到此时,堆叠工作的数学原因尚不清楚,堆叠被认为是一门黑色艺术。

但毫无疑问,**模型堆叠(Stacking)**是一种有效的集成方法,其中使用各种机器学习算法生成的预测被用作第二层学习算法的输入。该第二层算法经过训练,可以优化组合模型预测以形成一组新的预测。例如,当线性回归用作第二层建模时,它通过最小化最小二乘误差来估计这些权重。但是,第二层建模不仅限于线性模型;预测变量之间的关系可能更复杂,从而为采用其他机器学习算法打开了大门。

本实验中,我们正是使用了这样一个堆叠策略,使得我们模型的效果大幅度提升,我们在模型的第一层堆叠的模型有三个:{1.Lasso, 2.Random Forest, 3.Gradient Boost}, 且使用Linear Regression作为第二层模型。


2.2 interpretation of the estimated models:


        Stacking一般由两层组成。第一层:表现出色的基本模型(可以有多个);第二层:将第一层模型们的输出作为训练集得到的模型。第二层模型又被称作”meta-model“关键作用在于将第一层的所有模型的结果整合起来,进行输出。也就是说,第二层模型将第一层模型的输出作为特征进行训练。

        Stacking的整体步骤如下:

  1. 把原始数据切分成两部分:训练集D-train与测试集D-test,训练集部分用来训练整体的Stacking集成模型,测试集部分用来测试集成模型。
  2. 该步骤有训练和测试:
    1.  训练  Stacking是基于交叉验证的,以五折交叉验证为例子,把训练集D-train分成五部分,训练五次,每一次选取一个没有选取过的部分作为验证集,如下图所示。其中,Learn对应Training folds,用来训练初级学习器;下图中的Predict对应Validation fold,用来通过初级训练器得到五个预测结果Predictions_Train={p1,p2,p3,p4,p5},这些预测结果将合并在一起又变成一个新的训练集将用来训练次级学习器Model2。
    2. 测试 训练五次也要测试五次,每次训练完一次模型后,也对测试集的数据进行测试, 最后得到了五个预测测试集结果,将五个预测结果取平均值作为该层模型的最终预测结果 Predictions_Test={p1,p2,p3,p4,p5},下一层的模型将把在新的测试集Predictions_Train上测试。

     3. 如果第一层堆叠了n个模型,那么将每个模型都进行步骤3的操作,最终得到了n个Predictions_Train 和Predictions_Test ,将n个Predictions_Train作为特征值投入第二层模型进行训练,训练完毕后,再使用第二层模型对测试集进行预测,最后把n+1个Predictions_Test合并结果当做最终预测结果。 

 3. Extend


3.1 code sample


from sklearn.ensemble import StackingRegressor
models = [('Lasso', lo), ('Random Forest', rf), ('Gradient Boost', gb_boost)]stack = StackingRegressor(models, final_estimator=LinearRegression(positive=True), cv=5, n_jobs=4)
stack.fit(x_train, y_train)
stack_log_pred = stack.predict(x_test)
print(stack_log_pred)
stack_pred = np.exp(stack_log_pred)plt.barh(np.arange(len(models)), stack.final_estimator_.coef_)
plt.yticks(np.arange(len(models)), ['Linear Regression', 'Random Forest', 'Gradient Boost']);
plt.xlabel('Model coefficient')
plt.title('Figure 4. Model coefficients for our stacked model');

3.2 the coefficient of last model


        为了更加深入了解Stacking干了什么,我们打印了我们使用skleran训练完成后的Stacking模型最后一层也就是第二层Linear Regression模型系数,如下图所示: 

         高和正的Linear Regression模型的系数的值coef_意味着更强的关系,通过上图得知我们合并的三个模型在Stacking中各自发挥作用重要性的比例是8:2:0,可见Gradient Boost对模型整体的预测结果影响是最大的。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
阳澄湖在哪里哪个省的 阳澄湖是... 点击题目下方苏州生活指南有用 有趣 有态度近期的阳澄湖度很高,3月24日,央视二套《第一时间》直播连...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...