水熊虫
水熊虫
不认命,就拼命!
263文章 52分类

推荐搜索之指标体系

[{"source":{"position":2,"lines":["math"],"changePosition":null},"target":{"position":2,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":5,"lines":[],"changePosition":null},"target":{"position":5,"lines":["-- \\\\"],"changePosition":null},"type":"INSERT"},{"source":{"position":7,"lines":[""],"changePosition":null},"target":{"position":8,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":11,"lines":["a表示被检索出的与查询相关的 文献数量;b表示被检索出的与查询无关的文献数量;c表示与查询相 关,但是没有被检索出的文献数量","math"],"changePosition":null},"target":{"position":12,"lines":["a表示被检索出的与查询相关的 文献数量;","b表示被检索出的与查询无关的文献数量;","c表示与查询相 关,但是没有被检索出的文献数量",""],"changePosition":null},"type":"CHANGE"},{"source":{"position":19,"lines":[""],"changePosition":null},"target":{"position":22,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":23,"lines":["不知道你发现了没有,通过上面的评估我们是能够得到一个粗糙的评估,但是对于排序来讲,顺序十分重要,如果在数量上虽然占有,但是排序都是靠后的,那么这个质量也是不过关的,所以一般会采用下面的方式评估。"],"changePosition":null},"target":{"position":26,"lines":["不知道你发现了没有,通过上面的评估我们是能够得到一个粗糙的评估,但是对于排序来讲,顺序十分重要,如果在数量上虽然占优,但是排序都是靠后的,那么这个质量也是不过关的,所以一般会采用下面的方式评估。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":26,"lines":["MRR(Mean Reciprocal Rank)是指多个查询的排名的均值,是国 际上通用的对搜索结果进行评价的指标。假设有两次查询,第一次查 询的第一个相关文档的排序是2,第二次查询的第一个相关文档的排序 是5,那个根据这两次查询对搜索结果进行评价,计算方法是: 1/2(1/2+1/5)=0.35。"],"changePosition":null},"target":{"position":29,"lines":["MRR(Mean Reciprocal Rank)是指多个查询的排名的均值,是国际上通用的对搜索结果进行评价的指标。假设有两次查询,第一次查询的第一个相关文档的排序是2,第二次查询的第一个相关文档的排序是5,那个根据这两次查询对搜索结果进行评价,计算方法是: 1/2(1/2+1/5)=0.35。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":28,"lines":["math"],"changePosition":null},"target":{"position":31,"lines":[],"changePosition":null},"type":"DELETE"},{"source":{"position":32,"lines":["","$$rank_{i}$$表示第i个查询的第一个正确答案的排名,Q表示查询的次数。"],"changePosition":null},"target":{"position":34,"lines":[],"changePosition":null},"type":"DELETE"},{"source":{"position":35,"lines":[],"changePosition":null},"target":{"position":35,"lines":["$rank_{i}$表示第i个查询的第一个正确答案的排名,Q表示查询的次数。",""],"changePosition":null},"type":"INSERT"},{"source":{"position":37,"lines":["这种方法基于两个假设:1) 高相关性的文档比边缘相关的文档更重要;2)一个相关文档的排序越 靠后,对用户的价值就越低,因为它们很少被用户查看。"],"changePosition":null},"target":{"position":39,"lines":["这种方法基于两个假设:","1) 高相关性的文档比边缘相关的文档更重要;","2) 一个相关文档的排序越靠后,对用户的价值就越低,因为它们很少被用户查看。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":39,"lines":["在介绍DCG之前,先描述一下CG(Cumulative Gain),其表示前p个位置累计得到的增益,$$rel_{i}$$表示第i个文档的相关度等级,比如2表示非常相关,1 表示相关,0表示无关。"],"changePosition":null},"target":{"position":43,"lines":["在介绍DCG之前,先描述一下CG(Cumulative Gain),其表示前p个位置累计得到的增益,$rel_{i}$表示第i个文档的相关度等级,比如2表示非常相关,1 表示相关,0表示无关。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":41,"lines":["math"],"changePosition":null},"target":{"position":45,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":45,"lines":["","通过观察$$DG_{p}$$的计算过程能够看出其实这个方法对于排序的顺序仍然不敏感,所以比较直观的方法就是加上惩罚因子","math"],"changePosition":null},"target":{"position":49,"lines":["","通过观察$DG_{p}$的计算过程能够看出其实这个方法对于排序的顺序仍然不敏感,所以比较直观的方法就是加上惩罚因子",""],"changePosition":null},"type":"CHANGE"},{"source":{"position":51,"lines":[""],"changePosition":null},"target":{"position":55,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":53,"lines":["math"],"changePosition":null},"target":{"position":57,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":57,"lines":[""],"changePosition":null},"target":{"position":61,"lines":[],"changePosition":null},"type":"DELETE"},{"source":{"position":59,"lines":["由于每个查询语句所能检索到的结果文档集合长度不一,p值会对 DCG的计算有较大的影响,因此不能对不同查询语句的DCG求平均,需 要进行归一化处理。而nDCG是一个相对比值,这里使用DCG除以IDCG进 行归一化处理。"],"changePosition":null},"target":{"position":62,"lines":[],"changePosition":null},"type":"DELETE"},{"source":{"position":61,"lines":["math"],"changePosition":null},"target":{"position":63,"lines":["由于每个查询语句所能检索到的结果文档集合长度不一,p值会对 DCG的计算有较大的影响,因此不能对不同查询语句的DCG求平均,需要进行归一化处理。而nDCG是一个相对比值,这里使用DCG除以IDCG进行归一化处理。","",""],"changePosition":null},"type":"CHANGE"},{"source":{"position":65,"lines":[""],"changePosition":null},"target":{"position":69,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":69,"lines":["math"],"changePosition":null},"target":{"position":73,"lines":[""],"changePosition":null},"type":"CHANGE"},{"source":{"position":73,"lines":[""],"changePosition":null},"target":{"position":77,"lines":["# RMSE和R方","RMSE和MAE原来已经讲了很多啦,就不再多说啦。MAE是看平均偏差,而RMSE对相差比较大的比较敏感,也就是说RMSE是对模型靠谱程度衡量。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":75,"lines":[],"changePosition":null},"target":{"position":80,"lines":["$$\begin{gathered}","R^{2}=1-\\frac{\\sum(y-y_{r})^{2}}{\\sum (y_{r}-y_{m})^{2}}","\end{gathered}$$"],"changePosition":null},"type":"INSERT"},{"source":{"position":76,"lines":["# 总而言之","通过这样的介绍,你应该已经了解了对于排序算法的评估方法,在你的工作中遇到对非单一结果的问题是不是就能马上使用上呢?"],"changePosition":null},"target":{"position":84,"lines":["y是预测值,$y_{r}$是真实值,$y_{m}$则是均值.R2其实是用 平方误差/平方差。这样做的好处在于R2可以简单直接地评价预测值与"," ","真实值的耦合程度,即R2=0时,模型与真实结果几乎不拟合;R2=1时,","模型与真实结果几乎全拟合。同时,R2还解决了RMES和MAE中样本波动的问题。"],"changePosition":null},"type":"CHANGE"},{"source":{"position":79,"lines":[],"changePosition":null},"target":{"position":89,"lines":["# MAP和MRR"],"changePosition":null},"type":"INSERT"},{"source":{"position":80,"lines":[],"changePosition":null},"target":{"position":91,"lines":["MAP(Mean Average Precision,平均正确率),其中AP的计算方法"],"changePosition":null},"type":"INSERT"},{"source":{"position":81,"lines":[],"changePosition":null},"target":{"position":93,"lines":["$$\begin{gathered}","AP=\\frac{\\sum_{k=1}^{n}(P(k) \\times rel(k))}{N_{rel}}","\end{gathered}$$","","k为检索结果队列中的排序位置;P(k)为前k个结果的准确率$$\begin{gathered}\\frac{N_{rel}}{N}\end{gathered}$$,N表示总文档数量;rel(k)表示与位置k的文档是否相关,相关为1,不相关为0;$N_{rel}$表示相关文档数量。","","MAP即对将多个查询对应的AP求平均。MAP是反映系统在全部相关 文档上性能的单值指标。系统检索出来的相关文档越靠前,MAP就可能 越高。","","","$$\begin{gathered}","MAP=\\frac{\\sum_{q=1}^{Q}AP(q)}{Q}","\end{gathered}$$","","Q为查询的数量。","MRR(Mean Reciprocal Rank,平均倒数排名)是依据排序的准确 度,对查询请求响应的结果进行评估。","","# 推荐系统中AUC","这里在给出一个例子说明在推荐系统中AUC的指标是如何计算的。","","| 样本编号 | 真实分类 | 预测值 |","| -------- | -------- | -------- | ","| A | 1 | 0.4 | 2 |","| B | 1 | 0.8 | 5|","| C | 0 | 0.2 | ","| D | 0 | 0.4 | ","| E | 0 | 0.5 | ","","以真值A、B为例。","以A为正样本形成的正负样本对为(A, C), (A, D), (A, E),指示函数值分别为1,0.5,0;","以B为正样本形成的正负样本对为(B, C), (B, D), (B, E),指示函数值分别为1,1,1。","","当A为正例,且预测得分大于C的负例,那么积一分,相等记0.5分,错误记0分。","$$\begin{gathered}","AUC=\\frac{1+0.5+0+1+1+1}{2 \\times 3}=\\frac{3}{4}","\end{gathered}$$","这种方法就把模型的整体准确性记录下来啦。","","# GAUC","AUC反映整体样本间的排序能力,表示正样本得分比负样本得分高的概率,对样本不区分用户地计算整体样本的AUC。","GAUC实现了用户级别的AUC计算,在单个用户AUC的基础上,按照点击次数或展示次数进行加权平均,消除了用户偏差对模型的影响,更准确的描述了模型的表现效果:","","$$\begin{gathered}","GAUC=\\frac{\\sum_{i=1}^{n} w_{i} \\times AUC_{i}}{\\sum_{i=1}^{n} w_{i}}","\end{gathered}$$","其中权重w既可以是展示次数(impression)也可以是点击次数(clicks)。n是用户数量。","","举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.",""," 那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。所以能够看出来单纯看AUC是不能看清楚对于用户级别的模型优劣的。","","","# 多样性评估","推荐系统的评估除了关注普通的准确召回以外还关心结果的多样性,也就是对用户探索,这类评估的方法是计算所有推荐结果的相似度,相似度较低表示多样性的指标较好。","","","","","","# 总而言之","通过这样的介绍,你应该已经了解了对于排序算法的评估方法,在你的工作中遇到对非单一结果的问题是不是就能马上使用上呢?"],"changePosition":null},"type":"INSERT"}]

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×