Как я могу применить нормализованное среднее абсолютное значение для точности моей модели в системе рекомендаций по рейтингу фильмов: - PullRequest
0 голосов
/ 13 мая 2018

Здравствуйте, это будет очень полезно, если кто-то может помочь мне с 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))

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете написать функцию для вычисления 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 - прогнозОцените

Если это не так, просто измените эти цифры в теле функции, и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...