由于我刚开始学习 ML,因此很难正确命名标题,将在这里尝试解释。我想通过创建电影建议算法来练习 ML。我想出了以下尺寸/功能列表:
- 评分
- 票数
- 类型
- 演员
- 董事
- 作家
- 年
- 在团队中工作的演员/导演/作家的组合
- 年份与演员或导演或作家的组合
- 从事某种类型的演员、导演或作家
数字字段对我来说没有问题,但对于演员我有多个值。如何为演员创造特色?
由于我刚开始学习 ML,因此很难正确命名标题,将在这里尝试解释。我想通过创建电影建议算法来练习 ML。我想出了以下尺寸/功能列表:
数字字段对我来说没有问题,但对于演员我有多个值。如何为演员创造特色?
您可以为特定参与者创建一个“标志”变量。每个演员在您的数据中都有自己的列,如果该演员在那部电影中,则该列将具有 1,如果该演员不在该电影中,则该列将具有 0。
当然,这会创建很多列并且编写代码可能很乏味,但是如果您想构建预测模型,二进制指标变量可能非常有用 - 我认为值得。
例子:
actor1 actor2 actor3
movie1 1 0 0
movie2 0 1 1
movie3 0 1 0
编辑回复:导演/演员
为导演/演员组合的每个排列创建一个变量可能是不现实的。如果您想查看变量如何交互,您可以在构建模型时将交互编码到模型中。如果您要在 R 中执行此操作,它将如下所示:
movie.predictor <- lm(suggestion ~ actor1 + actor2 + director1 + director2 +
actor1:director1 + actor2:director1 + actor1:director2 +
actor2:director2,
data = movies.data)
R 中的“:”要求 lm(...) 函数考虑回归问题中这两个变量的交互作用,假设您正在进行回归。不要担心相同的“:”技术适用于多个模型函数。只需阅读您喜欢的语言和软件包的文档,并了解如何编写“可变交互”代码
当然,现在您正在输入变量交互的所有排列。您可能还需要考虑将演员和导演分组在一起的聚类算法。我不是电影专家,但似乎导演有最喜欢的演员(反之亦然),所以我希望会有导演和演员的集群,在这里和那里有一点重叠。
正如 bstrain 解释的那样,您可以将该列转换为二进制列。它确实会创建很多特征,但是您可以稍后进行降维。
我想指出的是,您也应该注意该Year功能。它也是数值型的,但有时您不能简单地将其留给模型。一些基于树的模型可以很好地处理它,但更多其他回归模型会以错误的方式处理它。在这种情况下,您可能想要手动提取特征,例如将其转换为“新”、“过去几十年”、“非常旧”等,然后对其进行一次热编码。