集成学习方法三

Stacking

Stacking集成算法可以理解为一个两层的集成,第一层含有多个基础分类器,把预测的结果(元特征)提供给第二层, 而第二层的分类器通常是逻辑回归,他把一层分类器的结果当做特征做拟合输出预测结果

blending集成学习方法

Blending集成学习方式:

  • (1) 将数据划分为训练集和测试集(test_set),其中训练集需要再次划分为训练集(train_set)和验证集(val_set);
  • (2) 创建第一层的多个模型,这些模型可以是同质的也可以是异质的;
  • (3) 使用train_set训练步骤2中的多个模型,然后用训练好的模型预测val_set和test_set得到val_predict, test_predict1
  • (4) 创建第二层的模型,使用val_predict作为训练集训练第二层的模型;
  • (5) 使用第二层训练好的模型对第二层测试集test_predict1进行预测,该结果为整个测试集的结果。

优点:就是实现简单粗暴,没有太多的理论的分析。

缺点:blending只使用了一部分数据集作为留出集进行验证,也就是只能用上数据中的一部分,实际上这对数据来说是很奢侈浪费的。

Stacking集成学习方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQasvyHc-1627478304925)(D:\学习\计算机\机器学习\集成学习-datawhale\CH5-集成学习之blending与stacking\4.jpg)]

  • 首先将所有数据集生成测试集和训练集(假如训练集为10000,测试集为2500行),那么上层会进行5折交叉检验,使用训练集中的8000条作为训练集(蓝色),剩余2000行作为验证集(橙色)。
  • 每次验证相当于使用了蓝色的8000条数据训练出一个模型,使用模型对验证集进行验证得到2000条数据,并对测试集进行预测,得到2500条数据,这样经过5次交叉检验,可以得到中间的橙色的5* 2000条验证集的结果(相当于每条数据的预测结果),5* 2500条测试集的预测结果。
  • 接下来会将验证集的5* 2000条预测结果拼接成10000行长的矩阵,标记为 A 1 A_1 A1​,而对于5* 2500行的测试集的预测结果进行加权平均,得到一个2500一列的矩阵,标记为 B 1 B_1 B1​。
  • 上面得到一个基模型在数据集上的预测结果 A 1 A_1 A1​、 B 1 B_1 B1​,这样当我们对3个基模型进行集成的话,相于得到了 A 1 A_1 A1​、 A 2 A_2 A2​、 A 3 A_3 A3​、 B 1 B_1 B1​、 B 2 B_2 B2​、 B 3 B_3 B3​六个矩阵。
  • 之后我们会将 A 1 A_1 A1​、 A 2 A_2 A2​、 A 3 A_3 A3​并列在一起成10000行3列的矩阵作为training data, B 1 B_1 B1​、 B 2 B_2 B2​、 B 3 B_3 B3​合并在一起成2500行3列的矩阵作为testing data,让下层学习器基于这样的数据进行再训练。
  • 再训练是基于每个基础模型的预测结果作为特征(三个特征),次学习器会学习训练如果往这样的基学习的预测结果上赋予权重w,来使得最后的预测最为准确。
集成学习方法三

Blending与Stacking对比

Blending的优点在于:

  • 比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)

而缺点在于:

  • 使用了很少的数据(是划分hold-out作为测试集,并非cv)
  • blender可能会过拟合(其实大概率是第一点导致的)
    作为测试集,并非cv)
  • blender可能会过拟合(其实大概率是第一点导致的)
  • stacking使用多次的CV会比较稳健
上一篇:[NOIP2016 提高组] 组合数问题


下一篇:win10家庭版通过gpedit.msc找不到组策略的解决方案