我想建立一个基于Mahout的推荐模型。我的数据集格式除了userID、itemID、评级和时间戳之外还有其他列。因此,我认为我需要扩展FileDataModel。
我研究了JesterDataModel作为一个例子。然而,我对逻辑流程有一个问题。在它的buildModel()方法中,首先构造一个空映射"data"。然后将其抛出到processFile中。我假设"数据"在这个方法中被修改了,因为稍后它被用来构造GenericDataModel。然而,数据是一个局部变量而不是一个类变量,那么它是如何被修改的呢?
processFile(iterator, data, timestamps, false);
return new GenericDataModel(GenericDataModel.toDataMap(data, true));
我明白了…我相信您必须重写主要部分,如数据模型、相似性计算等等,才能使其工作。您可以查看Rescorer
,它允许您引入自己的逻辑和过滤项目或根据您的需求增强一些其他项目。
在Mahout In Action书的第5章中有一个如何使用Rescorer
类的例子。您可以在这里看到代码(链接)