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

PyTorch中近似模型的准确率计算方法咨询

回归任务的模型评估指标(替代分类准确率的最佳实践)

首先要明确:回归(近似)任务没有“准确率”这个概念,分类任务的准确率是基于“预测类别是否完全匹配”的统计,但回归任务中预测值是连续的,我们需要用专门的回归评估指标来衡量模型表现。以下是行业通用的最佳实践指标,以及你提到的方法的定位:

常用评估指标

  • 平均绝对误差(MAE)
    公式:MAE = avg(|y_true - y_pred|)
    直接衡量预测值与真实值的平均绝对偏差,数值越小代表模型预测越准,优点是对异常值鲁棒性较好,结果易解释。

  • 均方误差(MSE)/均方根误差(RMSE)
    公式:MSE = avg((y_true - y_pred)²),RMSE = sqrt(MSE)
    MSE对大偏差的惩罚更重,适合需要重点关注极端预测错误的场景;RMSE和目标变量单位一致,比MSE更直观。

  • 归一化平均绝对误差(NMAE)
    就是你提到的avg(|y - y_pred|) / (max(y)-min(y)),属于行业认可的归一化误差指标。它将误差缩放到[0,1]区间,能直观反映平均误差占目标变量取值范围的比例,非常适合跨不同尺度的任务对比模型表现。

  • R²分数(决定系数)
    公式:R² = 1 - (sum((y_true - y_pred)²) / sum((y_true - avg(y_true))²))
    衡量模型能够解释的目标变量变异的比例,取值范围为(-∞,1],越接近1代表模型拟合效果越好,是回归任务中最常用的综合评估指标之一,能直接对比模型与“基准模型(预测均值)”的性能差异。

指标选择建议

  • 如果需要类似“准确率”的直观比例指标,NMAE是很好的选择,它能清晰展示模型的平均误差占目标变量范围的百分比;
  • 如果要综合衡量模型对数据的拟合能力,R²分数是行业首选;
  • 如果需要关注极端错误,优先考虑RMSE。

PyTorch实现示例

import torch

# 计算归一化平均绝对误差(NMAE)
def compute_nmae(y_true, y_pred):
    mae = torch.mean(torch.abs(y_true - y_pred))
    y_range = torch.max(y_true) - torch.min(y_true)
    return mae / y_range

# 计算R²分数
def compute_r2(y_true, y_pred):
    ss_residual = torch.sum((y_true - y_pred) ** 2)
    ss_total = torch.sum((y_true - torch.mean(y_true)) ** 2)
    # 防止分母为0的边界情况
    if ss_total == 0:
        return 1.0 if ss_residual == 0 else 0.0
    return 1 - (ss_residual / ss_total)

# 测试示例
y_true = torch.tensor([2.5, 4.2, 5.0, 7.1, 9.3])
y_pred = torch.tensor([2.7, 4.0, 5.2, 6.8, 9.5])

nmae_score = compute_nmae(y_true, y_pred)
r2_score = compute_r2(y_true, y_pred)

print(f"NMAE: {nmae_score.item():.4f}")
print(f"R²分数: {r2_score.item():.4f}")

内容的提问来源于stack exchange,提问作者Sagi Mann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:46:08