【问题标题】:mahout Recommendermahout 推荐器
【发布时间】:2011-11-27 03:28:47
【问题描述】:

Apache Mahout Recommender Documentation 提到以下内容:

// Construct the list of pre-computed correlations
Collection <GenericItemSimilarity.ItemItemSimilarity>  correlations = ...;

我不确定上述行中的实际构造是如何完成的。有人可以举个例子吗?

ItemSimilarity itemSimilarity  =  new GenericItemSimilarity(correlations);

【问题讨论】:

    标签: java mahout


    【解决方案1】:

    此示例指的是您已经计算出相似性的情况,例如 Hadoop 作业,并存储在文件系统或数据库中。正如构造函数文档所述:

    A "generic" {@link ItemSimilarity} which takes a static list of precomputed item similarities and bases its responses on that alone. The values may have been precomputed offline by another process, stored in a file, and then read and fed into an instance of this class.

    如果您有数千万条或更少的推荐,您可以简单地即时计算相似度并使用其他 GenericItemSimilarity 构造函数 - GenericItemSimilarity(ItemSimilarity otherSimilarity, DataModel dataModel)

    例如:

    DataModel dataModel = new FileDataModel(new File("path://to/file.csv"));
    ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
    ItemSimilarity itemSimilarity = new GenericItemSimilarity(itemSimilarity, dataModel);
    

    【讨论】:

    • “如果您有数千万或更少的推荐,您可以简单地即时计算相似度”-> 使用 10M 的电影镜头数据,基于项目的推荐大约需要 22 秒才能加载.. 基于用户只用了 200 毫秒。如何使用基于项目的方式即时加载数千万?
    【解决方案2】:

    这里没有什么神奇之处,它只是建议您创建一堆 ItemItemSimilarity 对象,为您所知道的每个项目相似性创建一个。

    Collection<GenericItemSimilarity.ItemItemSimilarity> correlations = 
      new ArrayList<GenericItemSimilarity.ItemItemSimilarity>();
    correlations.add(new GenericItemSimilarity.ItemItemSimilarity(1, 2, 0.5));
    ...
    

    你可以这样或任何你想要的方式。

    【讨论】:

    • 我已经创建了一个相关集合,正如您在此处提到的,然后创建了以下相似性实例:new CachingItemSimilarity(new GenericItemSimilarity(correlations),dataModel.getNumItems()); .. 使用 1M MovieLens 数据,我的基于项目的推荐器仅比以前快 40-50%(比如 589.5 毫秒而不是 1222.9 毫秒)。但是基于用户的速度真的很快,就像 24.2 毫秒?这怎么可能发生?我对项目相似性的预计算可以吗?我希望你也有一点时间陪我:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多