Blending集成学习算法
在(1)步中,总的数据集被分成训练集和测试集,如80%训练集和20%测试集,然后在这80%的训练集中再拆分训练集70%和验证集30%,因此拆分后的数据集由三部分组成:训练集80% 70% 、测试集20%、验证集80% 30% 。训练集是为了训练模型,测试集是为了调整模型(调参),测试集则是为了检验模型的优度。
在(2)-(3)步中,我们使用训练集创建了K个模型,如SVM、random forests、XGBoost等,这个是第一层的模型。 训练好模型后将验证集输入模型进行预测,得到K组不同的输出,我们记作A1,…,AKA1,…,AK,然后将测试集输入K个模型也得到K组输出,我们记作B1,…,BKB1,…,BK,其中AiAi的样本数与验证集一致,BiBi的样本数与测试集一致。如果总的样本数有10000个样本,那么使用5600个样本训练了K个模型,输入验证集2400个样本得到K组2400个样本的结果A1,…,AKA1,…,AK,输入测试集2000个得到K组2000个样本的结果B1,…,BKB1,…,BK 。
在(4)步中,我们使用K组2400个样本的验证集结果A1,…,AKA1,…,AK作为第二层分类器的特征,验证集的2400个标签为因变量,训练第二层分类器,得到2400个样本的输出。
在(5)步中,将输入测试集2000个得到K组2000个样本的结果B1,…,BKB1,…,BK放入第二层分类器,得到2000个测试集的预测结果。引用
Stacking集成学习方法
Blending在集成的过程中只会用到验证集的数据,对数据实际上是一个很大的浪费。为了解决这个问题,我们详细分析下Blending到底哪里出现问题并如何改进。在Blending中,我们产生验证集的方式是使用分割的方式,产生一组训练集和一组验证集,这让我们联想到交叉验证的方式。
- Blending与Stacking对比:
Blending的优点在于:- 比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
而缺点在于:
+ 使用了很少的数据(是划分hold-out作为测试集,并非cv)
+ blender可能会过拟合(其实大概率是第一点导致的)
+ stacking使用多次的CV会比较稳健