推荐 7 种机器学习模型加权集成方法

038e0d149eee1888d02fff3c2bf519e6.png

来源:数据studio 机器学习杂货店‍‍‍
本文约1300字,建议阅读8分钟本文中我们将介绍最常见的分类 & 回归任务的结果加权方法,也就是Blend操作。

在竞赛中如果对多个预测结果进行集成,最方便的做法是直接对预测结果进行加权求和。

此时不同任务,加权方法不同:

  • 分类任务:类别投票 & 概率值加权

  • 回归任务:预测值加权

  • 排序任务:排序次序加权

  • 目标检测任务:预测结果NMS

  • 语义分割任务:像素类别投票 & 加权

在本文中我们将介绍最常见的分类 & 回归任务的结果加权方法,也就是Blend操作。

多样性 & 精度差异

在对结果进行集成时需要考虑如下两点:

  • 模型的多样性:

  • 模型的精度差异;

集成学习的精度收益是需要模型&预测结果的多样性,如果多样性不足,则最终预测结果和单个模型类似。

精度差异是指模型之间的精度差异,如果精度差异很大最终集成的效果也不会很好。如下情况2的模型精度差异就较大。

三个模型精度:[0.9, 0.92, 0.92]
三个模型精度:[0.9, 0.8, 0.7]

Out of fold

Out of fold又名袋外预测,是一个模型在交叉验证的过程中使用训练部分进行训练,然后对验证集进行预测,交替得到训练集和测试集预测结果。

如果我们拥有三个模型,通过交叉验证可以得到3个训练集预测结果和3个验证集预测结果。

如下展示的几种方法,都需要训练集标签 与 训练集预测结果搜索得到参数,然后将参数在测试集上进行使用。

方法1:均值加权

  • 原理:对所有模型的预测结果计算均值;

  • 优点:简单,过拟合可能性低;

  • 缺点:会受到模型原始精度差异的影响;

oof_preds = []
for col in oofCols:
    oof_preds.append(oof_df[col])
y_avg = np.mean(np.array(oof_preds), axis=0)


方法2:权重加权

  • 原理:对所有模型的预测结果加权求和;

  • 优点:比均值更加可控;

  • 缺点:权重需人工设置,更容易过拟合;

 
 
weights = [1,2,3]
y_wtavg = np.zeros(len(oof_df))


for wt, col in zip(weights, oofCols):
    y_wtavg += (wt*oof_df[col])


y_wtavg = y_wtavg / sum(weights)

方法3:排序加权

  • 原理:对预测结果进行排序,使用次序代替原始取值;

  • 优点:适合分类任务,对概率进行集成;

  • 缺点:会受到模型原始精度差异的影响;

 
 
rankPreds = []
for i, col in enumerate(oofCols):
    rankPreds.append(oof_df[col].rank().values)


y_rankavg = np.mean(np.array(rankPreds), axis=0)

方法4:排序权重加权

  • 原理:对预测结果进行排序,使用次序进行加权求和;

  • 优点:比均值更加可控;

  • 缺点:权重需人工设置,更容易过拟合;

 
 
rankPreds = []
weights = [1,2,3]


for i, col in enumerate(oofCols):
    rankPreds.append(oof_df[col].rank().values * weights[i])




y_rankavg = np.mean(np.array(rankPreds), axis=0)

方法5:爬山法加权

  • 原理:权重进行搜索,保留最优的权重;

  • 优点:可以自动权重权重大小;

  • 缺点:更容易过拟合;

 
 
for w1 in np.linspace(0, 1, 100):
  for w2 in np.linspace(0, w2, 100):
    w3 = 1 - w1 - w3
    
    如果 w1, w2, w3取得更好的精度,保留权重
    否则尝试下一组权重组合

方法6:线性回归加权

  • 原理:使用线性回归确定权重

  • 优点:可以自动权重权重大小;

  • 缺点:需要额外训练,容易过拟合;

 
 
from sklearn.linear_model import LinearRegression


lr = LinearRegression(fit_intercept=False)
lr.fit(
   三个模型对训练集预测结果,
   训练集标签
)


lr.coef_ # 线性回归的权重

方法7:参数优化加权

  • 原理:使用优化方法搜索权重

  • 优点:可以自动权重权重大小;

  • 缺点:需要额外训练,容易过拟合;

 
 
def f(x):
    return x[0]**2 + x[1]**2 + (5 - x[0] - x[1])
    
from scipy import optimize
minimum = optimize.fmin(f, [1, 1])

编辑:黄继彦‍‍‍

校对:林亦霖dd8d5e024e743d9f892243f74ccac201.png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中的单一分类模型集成分类模型都有各自的优缺点。下面是它们的比较: 单一分类模型的优点: 1. 简单直接:单一分类模型通常更容易理解和解释,因为它们基于单个算法进行预测。 2. 训练速度快:由于只需要训练单个模型,所以训练速度相对较快。 3. 适用于小规模数据集:对于小规模数据集,单一分类模型往往能够提供较好的性能。 单一分类模型的缺点: 1. 欠拟合风险:单一分类模型可能无法捕捉复杂的数据关系,导致欠拟合问题。 2. 鲁棒性较差:对于噪声和异常值比较敏感,可能导致预测性能下降。 3. 受限于特征选择:单一分类模型对特征选择非常敏感,如果特征选择不合理,可能会影响模型性能。 集成分类模型的优点: 1. 提高泛化能力:通过结合多个分类模型的预测结果,集成分类模型可以提高整体的泛化能力。 2. 抗噪能力强:集成分类模型通过投票或加权平均等策略,可以减少个别分类模型的错误预测对最终结果的影响。 3. 适应性强:集成分类模型可以适应不同类型的数据集和问题,并且在大规模数据集上通常表现较好。 集成分类模型的缺点: 1. 训练时间长:由于需要训练多个分类模型,并且可能需要进行交叉验证等步骤,因此训练时间相对较长。 2. 处理复杂性增加:集成分类模型的设计和调优相对复杂,需要考虑模型选择、集成策略等因素。 3. 受限于模型选择:集成分类模型的性能受限于单个基础模型的选择,如果基础模型性能较差,集成模型也可能受到影响。 总体而言,单一分类模型适用于简单数据集和快速建模的场景,而集成分类模型适用于复杂数据集和追求更高性能的场景。选择哪模型取决于具体问题的要求和数据特征。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值