待解决的问题
在拥有多个模型的情况下,是否可以通过给多个模型分配权重(weight),使得加权后的多模型预测结果要好于单模型?
思路
- 是否存在通用的多模型weight计算方式?
- 如果没有,是否存在其他选取模型的方式?
- 如果权重只能人为设置,增加权重提高拟合度的方法是否可行?
- 如果权重能自动计算,能否在实际数据训练中增加拟合度?
解决方向
- 查找相关论文资料,确认了使用多模型同时计算加权的方式不常见。更多的是对单模型做优化以提高拟合度。简单做法是取所有模型拟合度相加等比放大/缩小到1,放大/缩小系数k作为权重。
- sklearn中存在一个分类器VotingClassifier,往这个分类器中添加多个模型,可以根据训练集计算得分(score,拟合度)最高的模型,并以此模型做预测。
- 人为设置方式不可取,调整者需要很丰富的经验和大量测试时间。故采用决策树的方式,自动调整权重,得到与训练集拟合度最高的结果为合适方案。同时,此方案需要大量的样本数据才能拟合准确,否则会出现过拟合or仅在特定训练集表现优秀的情况。
试验
假设存在三个模型A B C,训练集train_set。
简单权重计算
训练集拟合得分Sa, Sb, Sc。权重计算为
- 当存在 Si<=0 时,该模型的权重Wi = 0,不计算结果。
- Ssum = Sa,Sb,Sc相加。
- 权重 Wi = S