如何在mahout(品味)中使用GenericItemSimilarity时提高内存使用率

时间:2012-08-22 02:03:32

标签: mahout

众所周知,在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 /文件?

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

FileItemItemSimilarityIteratorAbstractJDBCInMemoryItemSimilarity(mahout 0.5)冗余或无助。

1 个答案:

答案 0 :(得分:1)

如果可以快速重新计算它们,则不必将相似性存储在内存中。

如果没有,我建议你简单地修剪绝对值很小的相似之处。这些影响计算的次数最少。