首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用Movielens数据集的Mahout推荐系统的评估如此缓慢?

为什么使用Movielens数据集的Mahout推荐系统的评估如此缓慢?
EN

Stack Overflow用户
提问于 2015-06-24 22:30:46
回答 1查看 393关注 0票数 1

我已经用mahout编写了一个简单的用户-用户推荐和评估代码。

这个推荐器运行得很好,但是一旦我添加了评估部分,就需要花费很长时间才能从Eclipse中的"Movielens1m“数据集中获得结果

正常吗?需要多长时间?该评估在Movielens 100K数据集上运行良好。我得到了评估结果(0.923..)几秒钟后。

以下是我的代码:

代码语言:javascript
复制
public class RecommenderEvaluator {

    public static void main(String[] args) throws Exception {

        //RandomUtils.useTestSeed();
        DataModel model = new FileDataModel(new File("data/movies1m.csv"));
        AverageAbsoluteDifferenceRecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();

        RecommenderBuilder builder = new RecommenderBuilder() {
            @Override
            public Recommender buildRecommender(DataModel model) throws TasteException {

                UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
                UserNeighborhood neighborhood = new NearestNUserNeighborhood(2,similarity, model);
                return new GenericUserBasedRecommender(model, neighborhood, similarity);
            }
        };
        double score = evaluator.evaluate(builder, null, model, 0.9, 1.0);
        System.out.println(score);

    }

}
EN

回答 1

Stack Overflow用户

发布于 2015-07-30 23:40:33

您正在使用用户-用户协作过滤算法。U-U将每个用户与每个其他用户进行比较,并存储相似性值,以便以后您可以选择N个最近的邻居,并使用它们的评级进行预测或推荐。当用户更改评级时,您必须重新计算整个模型,因为许多邻居可能会发生变化。对于用户-用户CF来说,一个很大的好处是可以看到谁的评分构成了某个预测,你可以潜在地向用户展示这一点,作为推荐解释的一部分。然而,它的计算成本导致大多数从业者在一段时间前转到项目-项目协作过滤或矩阵分解(例如,SVD)。

当用户比项目多得多时,项目-项目协作过滤是最好的。在这里,您必须计算所有项目与所有其他项目的相似度。但由于用户比项目多得多,项目的评分分布往往变化很慢(除非项目是系统中的新项目),因此您不必经常重新计算。

尝试不同的算法,并测量所有算法的构建和测试时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31029413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档