Системы рекомендаций по тестированию: как указать, сколько элементов было дано для прогноза. функция `calcPredictionAccuracy`

Я пытаюсь протестировать бинарные рекомендательные системы, которые я создал с помощью пакета recommenderlab. Когда я запускаю функцию calcPredictionAccuracy, я получаю следующую ошибку:

Ошибка в .local(x, data,...): Вам нужно указать, сколько элементов было дано для предсказания! Я выполнил многочисленные поиски и не могу найти решение этой проблемы. Если я попытаюсь добавить данный аргумент, ошибка изменится на:

error.ubcf‹-calcPredictionAccuracy(p.ubcf, getData(test_index, "неизвестно", данный=3)) Ошибка в .local(x, ...) : неиспользуемый аргумент (данный = 3)

Вот быстрый взгляд на мой код:

мой набор данных двоичный.watch.ratings

affinity.matrix <- as(binary.watch.ratings,"binaryRatingMatrix")
test_index <- evaluationScheme(affinity.matrix[1:1000], method="split", 
train=0.9, given=1)


# creation of recommender model based on ubcf
Rec.ubcf <- Recommender(getData(test_index, "train"), "UBCF")
# creation of recommender model based on ibcf for comparison
Rec.ibcf <- Recommender(getData(test_index, "train"), "IBCF")
# making predictions on the test data set
p.ubcf <- predict(Rec.ubcf, getData(test_index, "known"), type="topNList")
# making predictions on the test data set
p.ibcf <- predict(Rec.ibcf, getData(test_index, "known"), type="topNList")
# obtaining the error metrics for both approaches and comparing them

##error occurs with the following two lines
error.ubcf<-calcPredictionAccuracy(p.ubcf, getData(test_index, "unknown"))
error.ibcf<-calcPredictionAccuracy(p.ibcf, getData(test_index, "unknown"))

error <- rbind(error.ubcf,error.ibcf)
rownames(error) <- c("UBCF","IBCF")

Это приводит к следующей ошибке:

error.ubcf‹-calcPredictionAccuracy(p.ubcf, getData(test_index, "неизвестно")) Ошибка в .local(x, data, ...): Вам нужно указать, сколько элементов было дано для прогноза!

Мой вопрос в том, в какой точке моего кода я должен указать, сколько элементов дается для прогнозирования? Связана ли эта проблема с тем, что мои данные двоичные?

Спасибо

Роберт


person phillipsr    schedule 25.07.2017    source источник


Ответы (1)


для topNList необходимо указать количество элементов, которые вы хотите вернуть. Таким образом, вы добавляете их с помощью вызова функции predict():

# making predictions on the test data set
p.ubcf <- predict(Rec.ubcf, getData(test_index, "known"), type="topNList", n=10)
# making predictions on the test data set
p.ibcf <- predict(Rec.ibcf, getData(test_index, "known"), type="topNList", n=10)

Изменяя n, вы сможете увидеть, как оно повлияет на ваши показатели точности TP/FP/TN/FN, а также на точность/отзыв. Методика расчета этих значений приведена внизу этой страницы: https://github.com/mhahsler/recommenderlab/blob/master/R/calcPredictionAccuracy.R

person clnreanu    schedule 28.07.2017