概念
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