如何对电影类型对评分的影响进行建模?

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

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

为参考,这里是我当前数据集的截图 – 请注意,resid列包含了减去mu、b_i和b_u后的剩余评分。

输入图片说明

我卡住了,因为我不知道如何对电影类型的影响进行建模。有人有关于我如何继续的建议吗?


回答:

主要思路: 将“类型”字段中的每个值转换为单独的字段,如(喜剧,浪漫)并设值为(是/否,0/1)。

我用下面的样本数据向你展示。这应该能给你一个概念,你可以用自己的数据继续进行。

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

操作步骤如下:

  1. 使用tidyr包中的separate函数分隔字段中的值

    sample %>% separate(Values, into = c("val1","val2"), sep = "\\|") -> sample2sample2
  2. 使用tidyr包中的gather函数将所有单个值收集到一个列中

    sample2 %>% gather(key = "col_name", value = "col_val", val1, val2) ->sample3sample3
  3. 最后,使用“col_val”字段获得所需的输出,即独热编码(one-hot encoding)。

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

    告诉我这是否对你有帮助。

祝你学习愉快!!!

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注