【问题标题】:Can't get mahout itemsimilarity result with preferences (booleanValue=false)无法通过首选项获得 mahout itemsimilarity 结果(booleanValue=false)
【发布时间】:2014-07-25 08:33:30
【问题描述】:

我正在尝试使用 mahout 创建获取项目相似性。问题是我的输出确实很少有相似之处。

这是我的输入数据特征:

  • 15.910.847 偏好总数
  • 4.047.745 个不同的用户
  • 773.015 个不同的项目 我已经建立了用户和偏好的分布

第一列是不同用户的计数

第二列是每个用户的偏好计数。例如,我确实有 2.221.760 次使用,它们只有一种偏好。

2221760   1
688258    2
322497    3
192003    4
122446    5
87033 6
63733 7
49556 8
39090 9
31637 10
25634 11

这是我的输入设置:

similarityClassname=SIMILARITY_PEARSON_CORRELATION
maxSimilaritiesPerItem=100000
minPrefsPerUser=0

booleanData=false
threshold=0.75

【问题讨论】:

    标签: mahout collaborative-filtering mahout-recommender


    【解决方案1】:

    第 1 列应该是 Mahout 用户 ID,从 0 到用户数 - 1 第 2 列应该是 Mahout 项目 ID,从 0 到项目数 - 1 您不能只计算要记录用户表现出某些偏好的每个项目的偏好 第 3 列是偏好强度,如评分

    ID 就像矩阵或表中的行号和列号 0,0 是用户 0 的项目 0,值是评分。

    在读取 itemsimilarity 的结果时,您必须将您的 ID 转换为 Mahout ID,然后再转换回您的 ID。

    【讨论】:

    • 嗨 :) 我在 mahout 用户组中收到了您的回复。我正在使用 org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob 并且找不到将数字用户和项目 ID 映射到范围 [0..qtty_of_users]、[0..qtty_of_items] 的要求在将偏好数据提供给 mahout 之前......对于 org.apache.mahout.cf.taste.hadoop.item.RecommenderJob 也是如此,我可以在其中获取 itemSimilarityMatrix
    • 然而这是真的。我会写一个 wiki 页面来描述这个。我们刚刚为 0.9 版本重写了 Wiki,但我们错过了。
    • 太好了,去试试报告。
    • 没有帮助。我使用 apache pig Rank 函数为每个不同的 user_id 提供 1..N id,为每个不同的 item_id 提供 1..M。我确实为 ItemSimilarityJob 提供了数据集,其中 user_id 在 [1..N],item_id [1..M],偏好:1.0 或 2.0,输出结果与 4*10^6 用户的 16*10^6 偏好相同对于 7*10^5 个项目,10 个项目只给出 10^3 个相似性......我做错了什么?输入数据集是否应按项目/用户 ID 排序?
    【解决方案2】:

    没有帮助。我使用 apache pig Rank 函数为每个不同的 user_id 提供 1..N id,为每个不同的 item_id 提供 1..M。我确实为 ItemSimilarityJob 提供了数据集,其中 user_id 在 [1..N],item_id [1..M],偏好:1.0 或 2.0,输出结果与 4*10^6 用户的 16*10^6 偏好相同对于 7*10^5 个项目,10 个项目只给出 10^3 个相似性......我做错了什么?输入数据集是否应按项目/用户 ID 排序? – 谢尔盖 7 月 27 日 20:46

    这是因为 Mahout 口味实现接受整数作为 user_ids 的输入。如果您提供任何超出 MAX.int 值的内容,它将翻转到最小值,这意味着它不会被添加为唯一用户。

    如果您的 user_id 超过 MAX.int 值,您也许可以在将其提供给 Mahout 之前对其进行哈希处理。或者您可以有一个字母数字 id,然后使用 ID-Migrator 类作为 user_id 输入。

    【讨论】:

      【解决方案3】:
      • 我应该使用COSINE_SIMILARTY 而不是SIMILARITY_PEARSON_CORRELATION,因为我使用离散偏好
        • 不要使用阈值,它不像参数booleanData=true那样工作
        • 我不确定是否必须“重新映射”我的自然用户、项目 ID 以替代 [0...N]。

      问题看起来已经解决了。谢谢各位!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-24
        • 1970-01-01
        • 2023-03-21
        • 2017-08-06
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多