我对机器学习还比较新手,有几个关于关键词的问题。现在我正在尝试使用之前收集的一些电影数据来构建一个机器学习模型(数据由4个属性组成,其中一个是描述电影的关键词)。然而,有些电影的关键词比其他电影多(例如:蜘蛛侠的关键词可能是超级英雄、蜘蛛、战斗等…),每个电影的关键词数量从50到400不等,因此我想问一下,我是否应该将每个关键词作为一个单独的属性,还是应该将它们全部归入关键词属性并用逗号分隔。
为了更好地说明我的观点,这里有两个例子:
将电影关键词作为一个属性
非常感谢您的帮助
回答:
您可能并不真正想要您建议的任何一种方法。我假设您希望您的学习方法能够使用关键词来比较/分类不同的电影。让我们看看您建议的方法的问题:
-
在您建议的第一种方法中,您使用了“有序”的关键词(即关键词1、关键词2等),但如果例如<超级英雄>和<战斗>的顺序交换,我们会得到一个不同的特征向量,即使我们有相同的关键词(见下表)?这不是我们想要的,关键词的顺序不应该重要!
| 关键词1 关键词2 ------------------------------------ 电影 A | 超级英雄 战斗 电影 B | 战斗 超级英雄
-
继续说,第二种方法中,您建议将所有关键词列在一个列表中。这样,只有具有完全相同关键词的电影才会被认为是相同的。同样,这对于比较电影来说并不是理想的。如果电影A与电影B共享49个关键词,但有一个不同的关键词,学习方法应该能够整合这一信息,并说这两部电影非常相似,而不是说它们完全不同。
相反,您可能希望将关键词本身定义为特征/属性。这样,上述两个问题都可以得到解决,因为顺序不重要,我们仍然可以从单个关键词中学习。您的关键词数据集看起来可能会像这样:
| 超级英雄 战斗 StackOverflow ...------------------------------------------------------------电影 A | 1 1 0 ...电影 B | 1 1 1 ...
表示哪些关键词出现在哪些电影中。这样,电影可以通过几乎任何学习方法轻松比较。请注意,我在这里使用二进制值来简单地表示关键词的存在/不存在,但根据学习方法的不同,也可以使用其他表示方式。