Данные выглядят иначе после преобразования в realRatingMatrix
Я пытаюсь работать над системой рекомендаций в R
, Набор данных ниже: https://drive.google.com/file/d/1FVh-Xg3NBtzKgZHnDTi7IjaATW_fPmW9/view?usp=sharing
beer_data <- read.csv("beer_data.csv", stringsAsFactors = F)
library(recommenderlab)
r <- as(beer_data, "realRatingMatrix")
Теперь, если мы проверим количество отзывов в каждом объекте, оба не совпадают
nrow(beer_data) # 475984
length(getRatings(r)) # 474560
А также диапазон рейтинга не совпадает:
> range(beer_data_master$review_overall)
[1] 0 5
> range(getRatings(r))
[1] 0 15
Я также проверил с другим набором данных, никаких проблем не возникает.
1 ответ
Я получил ответ:
В данных есть некоторые пользователи, которые оценивали одно и то же пиво более одного раза (дважды / трижды... и т. Д.). Поэтому RecommenderLabs при принудительном приведении данных в realRatingMatrix добавляет рейтинг таких строк, и поэтому значение оценок больше 5, а длина getRatings меньше nrow of beer_data.
Например, образец beer_data
beer_beerid, review_profilename, review_overall
19667, 57md, 3.5 19667, 57md, 4.0
поэтому в realRatingMatrix для user="57md" и item = "19667" рейтинг = 3,5+4 = 7,5, а в realRatingMatrix сокращается 1 строка.
И по той же причине, не уникальная комбинация beer_beerid и рейтинга, объединенная, которая вызывает несоответствие в подсчете рейтинга в обоих объектах, dataframe и realRatingMatrix.