我如何模拟流派对电影评级的影响?

How can I model the effect of genre on movie ratings?

我正在使用更大版本的 movielens 数据集(1000 万行)在 R 中进行机器学习练习,我的任务是使用训练集中的数据预测验证集中的评分。目前我的模型如下:

用户 u 对电影 i 的评分 = mu + b_i + b_u + epsilon,其中 mu 是平均评分,b_i 是每部电影的效果,b_u是每个用户的效果。 Epsilon 应该是随机误差项,但现在它还包含我没有考虑的类型的影响。

这是我当前数据集的屏幕截图以供参考 - 请注意,resid 列包含减去 mu、b_i 和 b_u 后的剩余评分。

我被卡住了,因为我不知道如何为流派的效果建模。有人对我如何继续有任何提示吗?

主要思想: 将 "Genre" 字段中的每个值转换为单独的字段,(喜剧、浪漫)的值为 (Y/N, 0/1 ).

我正在向您展示以下示例数据。这应该会给您一个想法,您可以继续处理您的数据。

sample <- tribble(~ Values,
                  "apple|banana",
                  "orange|apple",
                  "banana|guava")
sample

完成步骤:

  1. 分离字段中可用的值,使用tidyr的分离函数

    sample %>% separate(Values, into = c("val1","val2"), sep = "\|") -> sample2
    sample2
    
  2. 使用 tidyr

    的 gather 函数将所有单独的值收集到单个列中
    sample2 %>% gather(key = "col_name", value = "col_val", val1, val2) ->sample3
    sample3
    
  3. 最后,使用"col_val"字段得到想要的输出。即单热编码。

    sample4 <- sample3 %>% select(2)
    sample4
    as.data.frame(model.matrix( ~ . -1, sample4))
    

    如果对您有帮助,请告诉我。

学习愉快!!!