【问题标题】:Find similar items based on item attributes根据商品属性查找相似商品
【发布时间】:2015-11-17 06:47:35
【问题描述】:

mahout 中的大多数推荐算法都需要用户项目偏好。但我想为给定的项目找到类似的项目。我的系统没有用户输入。即对于任何电影,这些都可以是可用于查找相似系数的属性

  • 类型
  • 导演
  • 演员

    属性列表将来可以修改以构建更高效的系统。但是要在 mahout 数据模型中找到每个项目的用户偏好项的相似性是必需的。这些电影可以聚集在一起,并在给定项目上获得最接近的项目。 稍后在引入基于用户的推荐之后,上述结果可用于提升结果。

    如果产品属性有一些固定值,如流派。我是否必须将这些值转换为数值。如果是,系统将如何计算类型 1 和类型 2 没有任何数字关系的两个项目之间的距离。

编辑:

我从命令行中找到了一些示例,但我想在 java 中执行此操作并保存预先计算的值以供以后使用。

【问题讨论】:

    标签: mahout recommendation-engine mahout-recommender


    【解决方案1】:

    我认为在特征向量的情况下,最好的相似度度量是精确匹配的度量,例如 Jaccard 相似度。

    在jaccard中,两个item向量的相似度计算为:

    相交中的特征数/联合中的特征数。

    因此,将类型转换为数值不会产生影响,因为精确匹配(用于查找交集)在非数值中是相同的。

    看看这个问题如何在mahout中做到这一点:

    Does Mahout provide a way to determine similarity between content (for content-based recommendations)?

    【讨论】:

      【解决方案2】:

      听起来 Mahout 的 spark-rowsimilarity 算法(从 0.10.0 版开始可用)将是您问题的完美解决方案。它比较给定矩阵的(即:表示电影及其属性的行向量),寻找这些行中值的共现 - 或者在您的情况下:流派、导演和演员的共现。无需用户历史记录或项目交互。最终结果是另一个矩阵,根据流派、导演或演员的同时出现,将您的每部电影映射到您收藏中最相似的前 n 部电影

      Apache Mahout site 有一篇关于如何从命令行执行此操作的精彩文章,但如果您想更深入地了解幕后发生的事情,请阅读 Pat Ferrel 的机器学习博客 Occam's Machete。他将这种相似性称为内容或元数据相似性

      【讨论】:

        猜你喜欢
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 1970-01-01
        • 1970-01-01
        • 2016-09-16
        相关资源
        最近更新 更多