0

众所周知,在 genericItemSimilarity 中 item1 和 item2 之间的相似性是预先计算的。

当我们使用 GenericItemBasedRecommender 获得推荐时,the recommender need datamodel and similarity in memory at the same time.根据 genericItemSimilarity,它提供了这样的结构

  public GenericItemSimilarity(ItemSimilarity otherSimilarity, DataModel dataModel) throws TasteException {
        long[] itemIDs = GenericUserSimilarity.longIteratorToList(dataModel.getItemIDs());
        initSimilarityMaps(new DataModelSimilaritiesIterator(otherSimilarity, itemIDs));
  }

只需使用 dataModel 及时生成相似度图。

是否有必要将相似度图存储到 Db/file ?

我发现 mahout 0.7 有一个名为的类 FileItemItemSimilarityIterator可以帮助从文件中读取相似度图。

是该FileItemItemSimilarityIteratorAbstractJDBCInMemoryItemSimilarity(mahout 0.5)冗余还是无奈。

4

1 回答 1

1

如果它们可以在运行中快速重新计算,您根本不必将相似之处放在内存中。

如果不是,我建议您简单地修剪绝对值较小的相似性。这些对计算的影响最小。

于 2012-08-22T11:15:46.503 回答