【发布时间】:2015-03-25 22:55:40
【问题描述】:
我正在尝试编写应该使用该功能的推荐系统代码 PlusAnonymousConcurrentUserDataModel 获取新用户的临时配置文件。
我正在使用 mahout 谁能举个例子?
任何帮助将不胜感激
干杯 金斯利
【问题讨论】:
标签: java recommendation-engine hybrid mahout-recommender
我正在尝试编写应该使用该功能的推荐系统代码 PlusAnonymousConcurrentUserDataModel 获取新用户的临时配置文件。
我正在使用 mahout 谁能举个例子?
任何帮助将不胜感激
干杯 金斯利
【问题讨论】:
标签: java recommendation-engine hybrid mahout-recommender
我假设您已经运行了一个模型,所以这里是您需要的代码来让 PlusAnonymousConcurrentUserDataModel 工作。
// Build your datamodel
DataModel dataModel = ...
// Build anonymous data model with previous datamodel
PlusAnonymousConcurrentUserDataModel anonymousDataModel = new PlusAnonymousConcurrentUserDataModel(dataModel, 100);
// Configure and build your recommender
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(25, similarity, model);//
recommender = new CachingRecommender(new GenericUserBasedRecommender(anonymousDataModel, neighborhood, similarity));
现在,如果用户存在,您可以像往常一样检索推荐。否则:
//Get new user id
long newUserID = anonymousDataModel.takeAvailableUser();
// fill a Mahout data structure with the user's preferences
GenericUserPreferenceArray tempPrefs = new GenericUserPreferenceArray(dUserPreferences.size());
int i = 0;
for(Map.Entry<Long, Float> entry : dUserPreferences.entrySet()) {
Long key = entry.getKey();
Float value = entry.getValue();
tempPrefs.setUserID(i, newUserID);
tempPrefs.setItemID(i, key);
tempPrefs.setValue(i, value);
i++;
}
// Add the temporaly preferences to model
anonymousDataModel.setTempPrefs(tempPrefs, newUserID);
// And get recommendations
List<RecommendedItem> recommendations = recommender.recommend(newUserID, count);
【讨论】: