如何在电影评级推荐系统中为我的模型准确度应用标准化均值绝对值::

问题描述 投票:1回答:1

你好,如果有人可以帮我解决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))
python r machine-learning data-science data-science-experience
1个回答
0
投票

您可以编写一个函数来计算NAME,然后将所需的任何数据集传递给它,无论大小。

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栏 - 预测费率

如果不是这种情况,只需在函数体中更改这些数字,一切都会正常。

© www.soinside.com 2019 - 2024. All rights reserved.