众所周知,在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
的类可以帮助从文件中读取相似性图。
是FileItemItemSimilarityIterator
或AbstractJDBCInMemoryItemSimilarity(mahout 0.5)
冗余或无助。
答案 0 :(得分:1)
如果可以快速重新计算它们,则不必将相似性存储在内存中。
如果没有,我建议你简单地修剪绝对值很小的相似之处。这些影响计算的次数最少。