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

如何在电影评分推荐系统中用NMAE评估模型准确率?

计算NMAE评估电影推荐模型(R语言)

没问题!我来帮你用R计算归一化平均绝对误差(NMAE),以此评估你的电影推荐模型表现。

首先明确你给出的NMAE公式:

NMAE = (∑|预测评分 - 真实评分|) / [n × (最大评分 - 最小评分)]
其中:

  • ∑|predicted rating – real rating|:所有样本的绝对误差之和
  • n:样本总数
  • max rate - min rate:评分体系的范围(比如电影评分常用1-5,范围就是4)

步骤1:加载你的数据集

先确保数据正确导入R中,你提供的数据集可以直接用以下代码加载:

movies <- structure(list(`Movie Code` = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), Votes = c(1371L, 2193L, 2294L, 39L, 50L, 110L, 144L, 153L, 208L, 296L, 372L, 377L, 474L, 500L, 508L, 515L, 539L), `Real rate` = c(2.5, 2, 2, 5, 4, 4, 3, 4, 3, 4, 3, 3, 2, 4, 4, 4, 3), `Predicted Rate` = c(2L, 3L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 4L, 3L, 3L, 3L, 4L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA, -17L))

步骤2:计算NMAE

下面是完整的计算代码,我会分步骤标注说明:

# 1. 计算每个样本的绝对误差
movies$absolute_error <- abs(movies$`Predicted Rate` - movies$`Real rate`)

# 2. 统计所有绝对误差的总和
sum_abs_error <- sum(movies$absolute_error)

# 3. 获取样本总数
n <- nrow(movies)

# 4. 确定评分范围:两种方式可选
# 方式A:从当前数据集的真实评分中提取最大最小值
min_rate <- min(movies$`Real rate`)
max_rate <- max(movies$`Real rate`)
rate_range <- max_rate - min_rate

# 方式B:如果你的评分体系是固定的(比如1-5分),直接设置固定值
# min_rate <- 1
# max_rate <- 5
# rate_range <- max_rate - min_rate

# 5. 计算最终的NMAE值
nmae <- sum_abs_error / (n * rate_range)

# 打印结果(保留4位小数)
cat("模型的NMAE值为:", round(nmae, 4), "\n")

结果说明

  • 用方式A(当前数据真实评分范围是2到5,差值为3)计算,NMAE≈0.1863
  • 用方式B(固定1-5分评分体系,差值为4)计算,NMAE≈0.1397

通常更推荐用方式B——即使当前数据集没覆盖到全评分范围,固定用体系的完整范围计算,能让NMAE结果更具通用性,方便和同体系的其他模型做对比。

内容的提问来源于stack exchange,提问作者Debjyoti Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:29:23