我正在使用mahout在java中创建推荐器。该建议工作正常,但这一行List<RecommendedItem> recommendations = recommender.recommend(id, 20);
花了我大约1,7秒。我有大约822个用户和各种产品约677.000分。有一种方法可以解决这个问题,或者将数据存储得更有效吗?
public class App {
public static void main(String[] args) throws Exception {
DataModel model = new FileDataModel(new File("data/data.csv"));
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
Mongo m = new Mongo();
LongPrimitiveIterator ids = model.getUserIDs();
while(ids.hasNext()) {
Long id = ids.next();
Document recs = new Document();
long tempoInicio = System.currentTimeMillis();
List<RecommendedItem> recommendations = recommender.recommend(id, 20);
System.out.println("Time: "+(System.currentTimeMillis()-tempoInicio));
for (RecommendedItem recommendation : recommendations) {
Long item = recommendation.getItemID();
Float value = recommendation.getValue();
recs.append(item.toString(),new Document("result",value));
}
m.insere(new Document("uid",id.intValue()).append("recs",recs),id.intValue());
}
}
}