Precision,Recall以及F值——以Movielens

2021-03-21  本文已影响0人  pzle

概念

1.precision:提取出的正确信息条数 / 提取出的信息条数
2.recall:提取出的正确信息条数 / 样本中的信息条数
3.F值:precision和recall有时会出现矛盾,所以通常要综合考虑,F值即为此而生。其为上述两者的调和平均值

举例:渔夫捕鱼。

池塘中有鲤鱼800条,虾200只。以鱼为目标,撒网共捕捞鱼400条,虾100只。
则:
precision = 400 /(400+100)* 100% = 80%
recall = 400 / 800 * 100% = 50%
F1Measure = 2 * (precision * recall) / (precision + recall) = 61.54%

Movielens中相关代码:

    # 产生推荐并通过准确率、召回率和覆盖率进行评估
    def evaluate(self):
        print("Evaluation start ...")
        N = self.n_rec_movie
        # 准确率和召回率
        hit = 0
        rec_count = 0
        test_count = 0
        # 覆盖率
        all_rec_movies = set()

        for i, user, in enumerate(self.trainSet):
            test_movies = self.testSet.get(user, {})
            rec_movies = self.recommend(user)
            for movie, w in rec_movies:
                if movie in test_movies:
                    hit += 1
                all_rec_movies.add(movie)
            rec_count += N
            test_count += len(test_movies)

        precision = hit / (1.0 * rec_count)
        recall = hit / (1.0 * test_count)
        FMeasure = (2 * precision * recall ) / (precision + recall)
        coverage = len(all_rec_movies) / (1.0 * self.movie_count)
        print('precisioin=%.4f\trecall=%.4f\tcoverage=%.4f\tFMeasure=%.4f' % (precision, recall, coverage, FMeasure))

引用

1.https://blog.csdn.net/zhu_9527/article/details/38820623?utm_source=po_vip
2.https://codechina.csdn.net/mirrors/xingzhexiaozhu/MovieRecommendation

上一篇下一篇

猜你喜欢

热点阅读