基于内容的推荐系统:如何生成特征向量?

时间:2018-02-11 16:43:22

标签: recommendation-engine

这个问题不应该是新问题,但我找不到它...请原谅我提出重复的问题。

无论如何基于内容的推荐系统要求我们为我们推荐的项目创建特征向量。因此,我们有两个问题需要首先解决:1。哪些组件足够重要,应该包含在特征向量中,它代表一个项目? 2.一旦我们决定了向量中的所有组件,谁负责填充值?

使用电影作为最受欢迎的例子,我们可能决定将演员,导演和流派作为向量中的组件。现在,对于过去多年的每部电影(那里有很多电影),我们如何填充所有这些组件来为矢量准备原始数据?手动?自动(如何)?

我本可以错过一些东西。似乎每当我们决定使用基于内容的系统时,我们需要解决这些问题,而这些问题并不容易解决。现在,它似乎更像协作过滤更容易,因为它只需要效用矩阵(用户项矩阵),并且它不需要我们生成所有的特征向量。当然,效用矩阵包含用户评级,这将是另一个令人头痛的问题。

有人可以就此分享一些想法吗?非常感谢!

3 个答案:

答案 0 :(得分:1)

在基于内容的过滤中,您使用的通常是ICM(项目内容矩阵)或UCM(用户内容矩阵),具体取决于您计算的相似度(用户或项目)。 如果给出了项目(或用户)的属性,则可以填充ICM(和/或UCM)。然后,如果您有此信息,则可以构建矩阵。 假设您被赋予类型,演员,导演等分类属性,您可以进行1次热编码以获取矩阵。一旦你拥有它,你可以执行:

1)特征选择(这是你的第一个问题,"哪些组件足够重要,应该包含在特征向量中#34;)

2)关于特征的一些加权方案,例如tf-idf(这与答案的第一部分一起部分回答了谁应该以及如何填充值)。

答案 1 :(得分:0)

在构建推荐系统时,从来没有错误或正确的做法。这对您的特定情况最有效,并且可能在评估阶段获得更高的准确度分数或产生最大收益。在基于内容的推荐者上为您的项目选择功能/属性时,理解和掌握数据是很好的,但更重要的是将您的直觉用于您认为可能给项目带来最大意义和价值的内容。如何选择功能将决定推荐人的表现。选择要素后,可以将这些值转换为向量空间。

在作为电影的项目的上下文中,并且您具有名称,演员,作者和描述等功能,您可以简单地应用TF-IDF方法,该方法将文本值转换为基本上产生高维向量的数值。现在您已经生成了一个向量空间,您可以使用几个距离度量(余弦,欧几里德,曼哈顿)来查找项目之间的相似性,并根据最小距离对它们进行排名。在这里,您现在可以根据项目推荐类似的项目。

这只是创建简单相似性度量的高级方法,但是在整个特征选择过程中有很多方法可以增加推荐系统的复杂性。

答案 2 :(得分:0)

我必须构建一个基于内容的推荐系统,该系统应该能够将任何电子商务目录作为输入并提供推荐。由于目录的属性事先未知,因此必须是通用的。我采用了与上述答案中描述的方法类似的方法。

我将tf-idfngrams结合使用来对字段和余弦距离度量进行矢量化处理,以获得top-n推荐。

可以在here中找到该方法的详细说明,并在this notebook中找到代码