模型融合有许多方法,简单的有平均融合,加权融合,投票融合等方法;较为复杂的就是Blending和Stacking了。后面两种模型融合方法理解起来比较困难,本文才有图解方式让读者可以更好的理解这两种融合方法。为了方便起见,本文只介绍基础的二层融合。由于网上很多的代码使用的是较早的sklearn的版本,其中的StratifiedKFold 使用方法有所改变,因此本文在sklearn 0.20上重新实现了这两种方法。 1. Blending1.1 Blending 流程Blending相较于Stacking来说要简单一些,其流程大致分为以下几步:
1.2 Blending 图解Blending代码实现 2. Stacking2.1 Stacking 流程Stacking流程比较复杂因为涉及到交叉验证的过程,其流程与Blending类似,具体如下:
2.2 Stacking 图解Stacking代码实现 3. Blending与Stacking对比Blending的优点在于: 1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature) 2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集 3.在团队建模过程中,不需要给队友分享自己的随机种子 而缺点在于: 1.使用了很少的数据(是划分hold-out作为测试集,并非cv) 2.blender可能会过拟合(其实大概率是第一点导致的) 3.stacking使用多次的CV会比较稳健 |
|