当前课程知识点:互联网大规模数据分析技术 > 第八章 推荐系统 > 第24讲 信息过滤评价体系 > 第24讲 信息过滤评价体系
欢迎来到
互联网大规模数据分析技术
的课堂
我是今天的主讲教师李琳
来自武汉理工大学
今天我们开始第24讲
信息过滤评价体系
在这一讲当中
我们会给大家介绍
Relevance Judgments
也就是相关度的评价
以及两个评价指标
Precision Recall
我们也叫精度和召回率
最后
我们看一下针对多个查询词
我们如何来计算平均精度
你们已经学习了
信息检索这门课程
学习完之后你们了解了这样一个
开源Lucene平台的使用
你想着我能不能快速的
搭建自己的信息检索系统呢
这个时候
假设一个老板
带了他的侄子Sergey
他说我已经建立了一个
很好的搜索引擎系统
比你的要好
这个时候你会怎么做呢
哦 比我的要好
那我就去试一些查询词对不对
我会想到那我就试一些查询词吧
看看你的搜索引擎
到底能给我一些什么样的结果
这个时候你还会问
那么你在建立索引的时候
究竟花了多长时间呢
你还会说
当我进行查询的时候
最快的查询速度是多少
也许你会关心这样一些指标
同时你会说他是不是推荐了
相关的产品和我的网页呢
所有的这些方面
都是关于搜索引擎好的方面
实际上它对于搜索引擎的质量
究竟怎么来衡量呢
这个我们还需要一些定性的分析
同时当搜索引擎
反馈了相关的结果给用户之后
你还会评价这个相关度
究竟是在什么样的程度上
你是简单的评价相关还是不相关
还是像买商品一样用五分制呢
这个评价
能不能由其他的指标来完成呢
比如说,click
当你把这些结果
展示给用户的时候
用户用了,点没点呢
点得多
说明你这个答案是比较准确的
如果没有点
说明你找到答案还有问题
对于推荐系统的搜索来说
当你把商品推荐给用户的时候
用户看完之后有没有买呢
叫buy after using
the search engine
或者是用户用了你这个搜索之后
已经买了很多商品
产生了很大的利润
当你用户用到这个搜索
买到了自己心仪的商品以后
还会不会再来购买呢
叫做Repeat visitors
所以关于这个相关性
商品的相关性
搜索结果的相关性
实际上并不是很好来进行评价的
我们要刨除很多复杂的因素
考虑一些简单的情况
也就是说
为了很客观的去评价你的搜索
你的推荐是不是比较合理
我们需要一个benchmark
你提出了PageRank算法
我提出了Cosine算法
他提出了别的算法
这样一些算法究竟谁好谁坏
我们要在一个公共的数据集上
去进行测试
这些公共的数据集
不但要有文档
还有一些公共的查询词
已经被大家进行了认可
并且关于答案
就是关于这个商品和这个网页
是不是相关
Relevant or Nonrelevant
已经有专家给出了答案
用你的搜索引擎
用你的推荐系统给出的答案
和我专家给出的答案能否匹配
这样的三个要素
来构成比较客观的来评价
一个搜索一个推荐的主要的元素
我们来看一下benchmark
所包含的一些内容
我们要有查询词
我们要有商品或者是网页
我们还要有人来对些商品和网页
进行评价
我有一个查询词
这个网页这个商品相不相关
相关就是1,不相关就是0
大家想想
如果我让你做5万个查询词
给你500万个网页
人能够评完么
在很短的时间内
是很难的评测完毕的
所以这样一种方式
来进行这样一个判断
也就是来生成这样一个判断的话
太花时间了
如果一个评判只花人的2.5秒钟
我们需要1011秒
如果来花钱的话
我要花300万
所以这样的
用人工去评价所有的查询词
和所有的文档
显然是一种不合适的方法
能不能用这种crowd-sourcing
类似于众筹的方式呢
这种的方式能够降低人力的成本
在互联网上
我可以邀请一些朋友来帮我实现
当然这个问题
我们不在这门课的讨论当中
我们这门课
假设的是这样一些评价已经有了
这可能是学者、专家
和相关的学术人员
花了很大的精力
形成的这样一个公测数据集
对于传统的信息检索的文本
我们是有比较多的
这样的公测数据集
但是对于Web
实际上我们这样的公测数据集
并不是很多
我们来看一下
有哪些公测的数据集呢
主要我们以TREC这样一个为例
TREC当中
我们有多少个查询呢,两百个
我们有多少个文档呢,74万个
仅仅这样的数据集的收集
就已经非常的不易了
同时我们在分类聚类当中
还会经常用到Reuters
这个数据集
大家可以看一下
它有21000多个文档
有672个查询词
相对来说要小一些
这是我们目前
已经公开的一些公测的数据集
大家可以去下载和使用
来对比和分析你的推荐
和搜索算法的性能
怎么来衡量相关还是不相关
100个答案当中有5个相关
100个答案当中有10相关
那么怎么来衡量呢
在这里面的我们今天主要讨论
精度和召回率这两个指标
当然,这种指标只是考虑了个数
并没有去考虑顺序
在这里面我们的相关性的评价
主要是考虑针对用户的信息需求
但是这个用户信息需求
实际上并不等于查询词
前面我们总是做查询词的匹配
但是我们把用户的信息需求
翻译成查询词之后
并不是能够完整的去表达
所以在这个里面
我们这种基于公测数据的
基于精度和召回率的判别
也只是尽量的
去做一个主观的判别
那我们来看一下
精度是怎么来算的
假设我们的计算
只考虑相关和不相关
那我们怎么来算呢
我返回了这么多个结果
在这么多个结果当中
有tp个和专家的结果是一致的
有fp个相关的结果
专家的评价是不一致的
专家认为你不相关
那么精度就是tp/(tp + fp)
也就是我返回的结果
和专家的评价匹配的个数
这叫精度
中文叫做精度或者也叫准确率
这个是什么呢
召回率,什么意思呢
大家可以看到
我返回了tp个
和专家的评论是一致的
但我们还有fn个没有返回
但是它也是相关的
也就是说
你只是找到一部分没有找到全部
如何来衡量这个指标呢
tp/(tp + fn)
这两个指标当中分子都是tp
也就是返回的个数
和专家的判别相关度匹配的个数
分母一个是由返回的个数组成
一个是由整个答案集组成的
这个就叫做召回率
这是关于召回率和精度的计算
通过这样的表格我们很容易算出
一个检索算法精度
和召回率的这样一个数值
同时我们考虑到
输入查询词并不是一个而是多个
所以我们要对多个查询词
它的精度做一个平均
所以得到了这个
Mean Average Precision
这样一个方法(NDCG)
它考虑到用户评价的等级
在我们这个课程当中并不做介绍
大家可以去查看相关的资料
获得更详细的信息
我们来看一下精度
这样一个计算当中
实际上由于返回的结果太多了
大家注意一下
在我们精度计算当中
分母是返回的所有结果
那搜索引擎返回1000个结果
难道分母用1000吗
大家注意一下我们在搜索当中
主要关注的是Top K
也就是说我只想知道
前干个结果它的精度如何
这个K我们一般取10
所以我们再这样一个例子来看
绿色代表我返回的结果
和专家的评价是一致的
红色代表不一致
那么Precision@3是什么意思呢
在前三个当中
有多少个和专家的评价是一致的
2个绿色,所有是2/3
那我们再看一下
Precision@4是前四个当中
有几个和专家的评价是一致的呢
两个绿色,2/4
再看一下Precision@5
那么在前五个当中
有哪些是和专家的评价一致的呢
我们有三个
所以说Precision@5是3/5
依照这样的计算方法
我们也可以去算召回率
就是分母变了
这么我们来看一下
在这样一个计算当中
我们根据不同的K
能算不同的Precision
也就是大家
在读阅一些论文的时候
发现作者在报告实验数据的时候
会用Precision@3、Precision@5
Precision@10这样的不同的K值
来综合的评价他的算法
也就是说尽可能去
全面的评价一个算法的性能
Precision 和Recall的
这样一个图
大家可以看到
我们的横坐标代表Recall
纵坐标代表Precision
当你把所有的结果
正确的结果都返回给用户的时候
必须要返回大量的结果
在大量的结果当中
去尽可能包含所有的答案
这个时候Precision
它显然就低了
在Precision越来越高的时候
也就是说我返回的个数越少
我可能命中的
因为分母变小了
我可能Precision就高了
但是Recall就会减少
所以Precision和Recall
是呈这样一个反向关系
刚才我们计算了Precision@K
在不同的K的情况下
我们如何来计算Precision的值
接下来我们看一下
我们如何算一个平均的精度呢
也就是说我们有不同的查询词
不同的查询词
平均都得到一个Precision@K
这些Precision@1@2@3@4
怎么来求一个综合的平均呢
这就是我们的Mean Average
Precision across multiple
queries/rankings
还是刚才这个例子
Precision@1是1/1
Precision@3是2/3
Precision@5是3/5
绿色仍然代表和专家的评价
匹配的程度
所以是1/1+2/3+3/5
有几个这样的k呢
一个两个三个
所以是取一个平均
最终我们得到的Precision的值
是0.76
我们把这样一个0.76
叫做Mean Average Precision
简称MAP
接下来我们再看一个例子
在这个例子当中
我们用黑色代表相关的文档
也就是
专家认为这些文档是相关的
在某种排序算法
所生成的排序当中
我们得到Precision@1是1.0
Precision@3是0.5
我们依次都算出来了
一直算到
1、2、3、4、5、6、7、8、9、10
也就是K=10
我们采用第二种排序算法
得到这样一个排序的过程
我们可以算出
Precision 和Recall,也是K=10
这10个我们把每一个类加起来
1.0加0.67加0.75,加起来
这个时候为什么我们去除以6呢
因为我们匹配的是123456
我们只匹配了6个
所以我们考虑Precision的时候
只考虑匹配的Precision
并不考虑不匹配的位置的
Precision
大家注意一下
在计算过程当中
一定是考虑
符合专家评判时候的精度
同样这个也是一样的
只考虑这几个
所以两种算法
我们算出来
一个是0.78,一个是0.52
显然
这两种算法经过MAP的对比分析
0.78是比较好的
我们也可以说
这种排序算法的性能
在MAP指标下显示的比较好
这个例子同样
也是5个查询词
方法是一样的
我们把对应的五个位置找出来
它是5所以这个地方除以的是5
但是对第二个排序算法
我只找到了几个呢
我只找到了三个
所以把这三个单词
把这三个Precision取出来
我们得到的是0.44
这是两个查询词
这是两个查询词所产生Ranking
怎么来求平均呢
这个时候求平均也是
0.62加上0.44
去除以2等于0.53
所以在这两个例子当中
大家注意一下
当我们求MAP的时候
一定考虑的是
符合答案的文档所在的位置
它们的Precision
它们的精度是多少
接下来我们对MAP做一个总结
在这里我们可以看到
If a relevant document
never gets retrieved
we assume the precision
corresponding to
that relevant doc to be zero
也就是说如果一个相关的文档
没有作为结果被返回
对于这个文档来说
我们的精度就是零
我们没有很好的去预测它
MAP是一个比较
macro-averaging
each query counts equally
也就是说
在我们计算MAP的时候
大家看一下
每一个query
在计算平均值的时候
考虑的是同样的权重
并没有给它说
哪个query更重要的
哪个query不重要
是求的加权平均
所以这些问题
大家可以在后续的评价指标当中
去做一些改进
也可能在最近的研究过程当中
我们也有一些新的评价指标
比如说对于Web Search
搜索引擎这样的检索应用
MAP这样的指标合适吗
所以这些问题都可以
大家作为大家课后的一些思考
或者查阅一些文件
来获取更详细的资料
那最后我们看一下
实际上我们前面多次提到了搜索
返回相关的结果给用户
推荐系统是做什么呢
也是返回用户可能感兴趣的东西
将要买的东西
这两种Web服务都有相似的情况
它们的共同点是在什么
都是把不相关的物品过滤掉
在大量的数据当中
把相关的物品返回给用户
所以在我们的推荐系统当中
我们也可以用
Precision和Recall
这样的指标
也就是我们前面所介绍的
当然在我们推荐系统当中
还有关于具体的
值得这样一个误差的计算
因为有时候推荐系统
它可能是预测这个打分
5分、6分还是7分
所以在这个里面
也许有的推荐系统
会采用RMSE这样一种指标
当然具体是用MAP
用Precision、用Recall
还是用RMSE来衡量你的算法
这个取决于大家面临不同的数据
所采用的方法
大家在看论文的时候
也会看到很多论文
把这四种指标都列了出来
以便于全面地去评价
一个推荐系统、一个搜索引擎
这就是今天这节课的主要内容
感谢同学们的观看
-第1讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题



