集成学习-Blending-Python实现

对于机器学习和深度学习来说,用单模型的效果往往都没有进行模型融合后的效果好。而对模型来说,我们需要选择具有多样性,准确性的模型,对于融合的方式来说也有很多种,比如最简单的取平均或者投票法,较为复杂的就是Blending和Stacking。这一篇主要讲一下blending,下一篇讲解一下stacking,二者都是用了两层的模型。

1. Blending简介

Blending是一种模型融合的方式,第一层通过将训练集出一部分作为holdout set,然后通过剩下的数据生成模型对holdout set 进行预测,第二层,直接对预测结果建模生成第二层的模型,如图所示。Blending是 Netflix获胜者提出来的模型融合方法,更偏向工程类,因此本文不会有太多的公式。

在这里插入图片描述

2.Blending 流程

Blending 的核心思想还是比较简单的,流程大致分为以下步骤:(以两层模型为例)

  1. 将数据集划分为训练集(train),测试集(test),验证集(val);
  2. 创建第一层的多个模型(M1,M2,M3),这些模型可以是同质的或者是异质的(同类模型或者不同类模型);
  3. 使用训练集分别训练多个模型,然后将验证集(val)放入训练好的模型得到val_predict(vp1,vp2,vp3),将测试集(test)放入训练好的模型得到test_predict1(tp1,tp2.tp3);
  4. 创建第二层的模型,使用val_predict作为训练集训练第二层的模型,label为val真实的label;
  5. 使用第二层训练好的模型对第二层测试集test_predict1进行预测,该结果为整个测试集的结果。

3.实例讲解

  1. 总的数据集被分成训练集和测试集,如80%训练集和20%测试集,然后在这80%的训练集中再拆分训练集70%和验证集30%,因此拆分后的数据集由三部分组成:训练集80%* 70%、测试集20%、验证集80%* 30% 。训练集是为了训练模型,测试集是为了调整模型(调参),测试集则是为了检验模型的优度。
  2. 我们使用训练集创建了K个模型,如SVM、random forests、XGBoost等,这个是第一层的模型。 训练好模型后将验证集输入模型进行预测,得到K组不同的输出,我们记作 A1,…Ak,然后将测试集输入K个模型也得到K组输出,我们记作B1,…,Bk ,其中Ai 的样本数与验证集一致, Bi的样本数与测试集一致。如果总的样本数有10000个样本,那么使用5600个样本训练了K个模型,输入验证集2400个样本得到K组2400个样本的结果A1,…Ak ,输入测试集2000个得到K组2000个样本的结果B1,…,Bk 。
  3. 我们使用K组2400个样本的验证集结果A1,…Ak 作为第二层分类器的特征,验证集的2400个标签
    为因变量,训练第二层分类器,得到2400个样本的输出。
  4. 将输入测试集2000个得到K组2000个样本的结果B1,…,Bk放入第二层分类器,得到2000个测试集
    的预测结果。

3.实验

# 加载相关工具包
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
plt.style.
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值