您好,如果有人可以帮助我解决 NMAE(归一化平均平均误差以查找模型的准确性:
NMAE=∑(|预测评级 – 实际评级|(/n(最大速率 – 最小速率( 我举了一个例子,我的模型是如何给出数据集输出的: 我一直在使用R编程来构建电影推荐模型:
Movie Code Votes Real rate Predicted Rate
1 1371 2.5 2
1 2193 2 3
1 2294 2 3
2 39 5 3
2 50 4 3
2 110 4 4
2 144 3 3
2 153 4 3
2 208 3 3
2 296 4 4
2 372 3 3
2 377 3 3
2 474 2 3
2 500 4 4
2 508 4 3
2 515 4 3
2 539 3 3
数据。
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))
您可以编写一个函数来计算 NMAE,然后向其传递所需的任何数据集,无论大小。
nmae <- function(DF){
n <- nrow(DF)
max_rate <- max(DF[[3]])
min_rate <- min(DF[[3]])
sum(abs(DF[[4]] - DF[[3]]))/(n*(max_rate - min_rate))
}
nmae(movies)
#[1] 0.1862745
上面nmae
函数依赖于在指定位置查找以下列:
- 第3栏 - 实际汇率
- 第 4 列 - 预测比率
如果不是这种情况,只需更改函数体中的这些数字,一切都会好起来的。