You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NumPy加权平均中给更小的MAE值分配更高权重

解决方案

你当前的权重与MAE呈正相关关系,因此会出现MAE越高的模型权重越大的问题。要实现MAE越低权重越高的需求,核心是构造随MAE增大而单调递减的函数计算权重,以下是几种常用的可直接落地的实现方案:

方案1:简单倒数加权(最常用)

直接对每个MAE取倒数作为权重,逻辑简单无需额外调参,适合绝大多数场景,额外加极小值避免MAE为0时出现除零错误:

import numpy as np

# 各模型的MAE值列表
mae_list = [1.640, 1.675, 1.514, 1.563, 1.667]
# 计算反向权重
weights_mae = 1 / (np.array(mae_list) + 1e-8)
# 计算加权平均
mean = np.average(val_list, axis=0, weights=weights_mae)

方案2:归一化倒数加权

如果需要所有模型权重之和为1,方便后续结果校验,可以对倒数后的权重做归一化处理:

import numpy as np

mae_list = [1.640, 1.675, 1.514, 1.563, 1.667]
weights_mae = 1 / (np.array(mae_list) + 1e-8)
# 归一化处理,权重和为1
weights_mae = weights_mae / weights_mae.sum()
mean = np.average(val_list, axis=0, weights=weights_mae)

方案3:指数加权(可调整权重差距)

如果需要拉大MAE表现差异大的模型之间的权重差,可以用指数衰减函数计算权重,调整参数k即可控制权重差异幅度,k值越大,MAE更低的模型权重优势越明显:

import numpy as np

mae_list = [1.640, 1.675, 1.514, 1.563, 1.667]
# 调整k值控制权重差距幅度
k = 2
weights_mae = np.exp(-k * np.array(mae_list))
# 可选做归一化处理
weights_mae = weights_mae / weights_mae.sum()
mean = np.average(val_list, axis=0, weights=weights_mae)

内容的提问来源于stack exchange,提问作者Talha Anwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:36:01