在Kaggle学术活动中直接将多个模型的预测结果进行加权是一种常见的操作,这种操作可以增加模型的精度,也可以增加结果的稳定性。但对不同的任务,其实加权方法存在一定的区别。对于分类、回归、排序,对结果进行集成也存在区别。
分类任务:直接投票;
回归任务:加权求和;
排序任务:排序加权;
本次我们将讨论二分类任务中的集成细节,如果比赛提交的是概率,使用AUC进评分的方式。
# 真实标签
t_true = np.random.randint(0, 2, size=1000)
# 模型1
pred1 = t_true + np.random.randn(1000)
pred1 = np.clip(pred1, 0, 1)
# 模型2
pred2 = t_true + np.random.randn(1000) - 0.2
pred2 = np.clip(pred2, 0, 1)
# 模型3
pred3 = t_true + np.random.randn(1000) - 0.1
pred3 = np.clip(pred3, 0, 1)
此时三个模型的AUC精度分别为:
0.7295611075760666
0.7629832839094122
0.7522801035701279
方法1:加权平均此种方式非常直接,可以直接平均也可以调整权重。
权重的确定方式有如下几种:人工确定,通过精度反馈调整;从精度确定权重(精度高权重高);通过1层的stacking确定权重;
方法2:几何平均几何平均可对形态进行转换,对概率进行校准。权重确定的方式参考上面加权平均的方法。
方法3:排序平均通过rankdata函数可以求得概率的次序,将次序从新进行归一化转为0-1范围。
from scipy.stats import rankdata
rankdata([1,3,2])
# array([1., 3., 2.])
排序平均的方法如下:
效果对比加权平均AUC:0.8650706942160006
集合平均AUC:0.8575510547104799
排序平均AUC:0.8664093421215869
排序平均的结果优于直接加权,通过重新对次序进行归一化的效果,可以避免模型概率输出分布不一致的情况。
扫码获取备赛计划,考前查缺补漏、重点冲刺
【免费领取】相关真题及解析,还有一对一学术活动规划!
翰林课程体验,退费流程快速投诉邮箱: yuxi@linstitute.net 沪ICP备2023009024号-1