我对TopK和预测RMSE的看法

557 views
Skip to first unread message

xlvector

unread,
Aug 3, 2009, 10:35:56 AM8/3/09
to Resys
很多人都困惑与TopK和RMSE的评测的区别,我感觉其实这两种评测方法解决的是不同的两个问题。

在设计实际的推荐系统时,我们不可能计算一个用户对所以电影的评分,然后排序,找出topK。在BellKor的论文中,他用TopK评测预测问题时,
是随机选出1000个电影,然后评分排序,得出TopK。

实际的系统中,我们需要用binary data首先找出一个候选集,这个过程其实是TopK的过程(这个过程其实不需要评分,只需要关系0-1矩
阵),然后我们计算用户对候选集中电影的评分,然后对候
选集用评分排序。所以说,topk和netflix其实不是一个问题,而是推荐系统中两个不同的问题,所以用不同的评测方法也是应该的。

在Netflix中,我不需要做TopK,因为候选集已经给定了,就是quiz。在实际系统中,我们需要先做TopK,然后用评分对TopK中的K个候
选物品评分排序。

不知道大家是否有同样的看法。

gary

unread,
Aug 3, 2009, 11:05:26 AM8/3/09
to Resys
我基本同意你的看法。
不过有一点不同意见:在实际问题中,Top-K的寻找过程也是一个进行分值Ranking的过程,尽管不需要Rating,但是我想这个候选集就已经是
排序好的了,如果需要打分,即约束到一个分值范围内,可以进行打分预测或者scale。所以不需要专门为了排序而进行评分。

xlvector

unread,
Aug 3, 2009, 11:10:49 AM8/3/09
to Resys

On Aug 3, 11:05 pm, gary <gary.wang1...@gmail.com> wrote:
> 我基本同意你的看法。
> 不过有一点不同意见:在实际问题中,Top-K的寻找过程也是一个进行分值Ranking的过程,尽管不需要Rating,但是我想这个候选集就已经是
> 排序好的了,如果需要打分,即约束到一个分值范围内,可以进行打分预测或者scale。所以不需要专门为了排序而进行评分。

对,我的意思就是,如果没有rating,我们已经可以做推荐了,有了rating可以更好的改善topk。其实,举个简单的例子。
topk是找到用户最可能看的电影,他的排名是根据用户看电影的可能性排名的,而rating是在用户可能看的电影中找出用户喜欢的电影,因为有的时候
用户也会对不喜欢的电影评分。

所以这两者结合的结果就是,找出用户最可能看,且看了之后会喜欢的电影。

gary

unread,
Aug 3, 2009, 11:19:24 AM8/3/09
to Resys
很有道理——binary数据如果看做是看/不看,评分数据作为喜欢程度。

> > > 不知道大家是否有同样的看法。- 隐藏被引用文字 -
>
> - 显示引用的文字 -

clickstone

unread,
Aug 4, 2009, 12:35:10 AM8/4/09
to Resys
welcome gray!

你可以用你做的那个东西试试 GitHub Contest,这个是 TopK 的推荐,呵呵。

On Aug 3, 11:19 pm, gary <gary.wang1...@gmail.com> wrote:
> 很有道理----binary数据如果看做是看/不看,评分数据作为喜欢程度。

Gary Wang

unread,
Aug 4, 2009, 4:27:04 AM8/4/09
to re...@googlegroups.com
呵呵,不过看上去它需要开源,即时现在不开,恐怕以后是不是也需要开放?

Shoukun Wang

unread,
Aug 6, 2009, 10:30:51 AM8/6/09
to Resys
我是这样看这个问题的,

纯粹从逻辑的角度讲,RMSE包含TopK,解决了RMSE就解决了TopK,解决了TopK未必能解决RMSE。即便是0-1数据也可以把RMSE作
为优化指标啊。实际系统中,预测评分也只是预测与用户相关的条目,并且,相关条目的选择和预测评分往往是同一个过程。

差异在于这两种方式的优化目标不同,RMSE可以认为是在优化一个连续函数,TopK的优化有些用 precision/recall作优化指标,有些
用逆序数作指标,还有其他各种各样的指标,这些指标往往不是连续变化的,因此各种优化技术可施展的空间也不大。

实际用起来也是各有利弊,TopK倾向于给出保险但是平庸的推荐,用RMSE作指标会比较灵活,因为我可以自己选候选集,但犯错(比如给用户推荐他不喜
欢的东西)的可能性也要大一些。

On 8月3日, 下午10时35分, xlvector <xlvec...@gmail.com> wrote:

xlvector

unread,
Aug 6, 2009, 10:57:11 AM8/6/09
to Resys
从实际效果看,如果在0-1数据上用SVD效果反而不如KNN,在Github contest上是这个结果,别的数据集没有试过。

我从模式识别的角度看,在rating data上,我们是有正样本和负样本的,>3的可以看作正样本,反之是负样本。所以他的学习是有监督学习。而所
有的missing value的值的期望应该是在3附近的

但在0-1问题上,我们只有正样本,给了1的表示用户会看,但给0的全部是missing value,因为给0不代表不看,而是代表不知道。所以
binary的问题上是没有负样本的,如果用SVD之类的学习,效果不会很好。

Ensemble的Aron在Github Contest上用KNN和SVD做了一个实验,他用SVD(1看作正样本,0看作副样本)结果小于
10%,但用KNN结果>20%。

clickstone

unread,
Aug 6, 2009, 1:17:25 PM8/6/09
to Resys
说实话,这个问题我之前确实没仔细考虑过。上次和gary聊天的时候,也讨论到了这个问题,我当时的想法和Shoukun类似,TopK可以看成是
RMSE的特例,调好了RMSE之后,按得分排下序就得到TopK了。而且以我的体会,我认为实际的系统通常都不能简单的弄成0/1这样的数据,还是要
拉大数据的区别度的,系统会有区别对待的用户的行为,比如举个例子,看过->顶-> 收藏,这些操作反应到得分上一定是有区别的,另外还有类似像点击数
什么的,还有时间因素也可以算进来。这样进行数据的预处理之后,像SVD之类的方法是可以发挥作用的了。单纯的用0/1来算,能用的方法实在有限啊,效
果也不可能太好。

xlvector

unread,
Aug 6, 2009, 8:34:22 PM8/6/09
to Resys
是,我的观点就是,单纯的0-1只能算出用户看的概率,而有了评分(不一定是评分,比如用户停留时间,或者用户言语中表示出的喜好,或者其他隐形的表
示)才能学习出用户的喜好。

所以我感觉,应该是先用0-1数据选出候选集,然后如果是有评分信息的,再用评分信息学习出的模型(SVD等)对候选集重新排序,这样可能比较靠谱。

BellKor的论文中也是这么做的,只不过他的候选集是随机选择的,不是用0-1数据上的KNN选择,所以他最终的效果也是比用了TopK选候选集要
差。

Gary Wang

unread,
Aug 7, 2009, 12:30:24 AM8/7/09
to re...@googlegroups.com
我试过用0-1来选在候选集合,在netflix数据中,特别密集,所以候选集没有太大的实际意义。不过同意shoukun的意见,解决了RMSE就解决了TopK,解决了TopK未必能解决RMSE。TopK倾向于给出保险但是平庸的推荐,不过就是实际应用中的隐含交互数据的分值确定以及优化有可能会带来更大的成本问题,包括时间成本和风险成本。
2009/8/7 xlvector <xlve...@gmail.com>

晨醒

unread,
Aug 7, 2009, 1:14:08 AM8/7/09
to Resys
但是实际使用中,TopK比RMSE更有价值啊,很多时候网站之需要推荐少量的物品,比如5个,并且刻意突出最推荐个1个,这个时候能准确预测Top1
和Top5就很有价值了,而具有较好RMSE的算法最后还是要回归到TopK的问题上,将分值转换成Rank。所以,是否能过回避RMSE这个衡量标
准,直接以TopK预测效果作为衡量以及目标?我想应该有这方面的论文吧。
SIGIR'08上有篇文章讲的是Ranking-Oriented的协同过滤,里面提到具有好的RMSE的推荐结果在顺序上也可能是错误的。

On 8月7日, 下午12时30分, Gary Wang <gary.wang1...@gmail.com> wrote:
> 我试过用0-1来选在候选集合,在netflix数据中,特别密集,所以候选集没有太大的实际意义。不过同意shoukun的意见,解决了RMSE就解决了To pK,解决了TopK未必能解决RMSE。TopK倾向于给出保险但是平庸的推荐,不过就是实际应用中的隐含交互数据的分值确定以及优化有可能会带来更大的成本 问题,包括时间成本和风险成本。

> 2009/8/7 xlvector <xlvec...@gmail.com>

晨醒

unread,
Aug 7, 2009, 1:18:16 AM8/7/09
to Resys
阿里巴巴在浙大搞了一个LengedCode,测试结果里,PLSA、SVD和关联规则挖掘都败给了Neighborhood-based算法,前三者
的命中率只有Neighborhood-based的一半左右
那个数据集是密度只有万分之2.4的用户/物品点击数据。

Gary Wang

unread,
Aug 7, 2009, 1:23:43 AM8/7/09
to re...@googlegroups.com
阿里可以搞一个netflix的比赛阿,他的数据更接近于实际。
2009/8/7 晨醒 <chenxi...@gmail.com>

xlvector

unread,
Aug 7, 2009, 1:24:35 AM8/7/09
to Resys
是的,在Github任务里,在解决topk任务时,KNN是最好的算法,SVD什么的都不行。

LengedCode是个什么东西?有相关数据集吗?

clickstone

unread,
Aug 7, 2009, 3:08:50 AM8/7/09
to Resys
是啊,LengedCode 是什么东东?晨醒可否透露一下?

晨醒

unread,
Aug 7, 2009, 3:48:39 AM8/7/09
to Resys
这是阿里巴巴上半年在浙江大学校内举办的一个比赛,有三个题目,其中一个就是推荐引擎,提供的数据也不知道是淘宝的还是B2B的数据,数据有大约80万
行,每行是一个三元组,日期、用户、物品,用户大约5万,物品6万,时间跨度是8天。测试集合据说是之后8天的数据,测试Top10的命中率。我和同学
分别用PLSA和SVD,两者命中数是800多,而第一名用的Item-based的方法,命中数大约1800。因为比赛要求的是提交算法程序,所以我
不知道他们测试PLSA的时候用了多少个隐变量,不过即使这样,测试结果差距这么大应该这样也能说明问题了。
目前比赛已经结束了,数据集可能还可以弄到。据说他们有想法将来扩大比赛到华东地区或者长三角,不过还不知道明年有没有。

> > > > > > 不知道大家是否有同样的看法。- Hide quoted text -
>
> - Show quoted text -

xlvector

unread,
Aug 7, 2009, 4:18:12 AM8/7/09
to Resys
其实可以把所有算法都实现了,然后融合,这样命中率更高

Gary Wang

unread,
Aug 7, 2009, 4:24:03 AM8/7/09
to re...@googlegroups.com
呵呵,前提是各种算法的的准确率超过50%。

2009/8/7 xlvector <xlve...@gmail.com>

晨醒

unread,
Aug 7, 2009, 4:24:14 AM8/7/09
to Resys
融合的时候是用线性相加吗?一般用什么方法来优化融合所用的参数?梯度下降还是智能优化方法?

> > > - Show quoted text -- Hide quoted text -

raullew

unread,
Aug 7, 2009, 4:29:41 AM8/7/09
to Resys
这个数据集比较奇怪,其信息少到了只剩下关联关系,所以基于关联的算法胜出。。。

> > - Show quoted text -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

clickstone

unread,
Aug 7, 2009, 5:17:43 AM8/7/09
to Resys
raullew 手上有数据集吗?上传到group里面吧。

raullew

unread,
Aug 7, 2009, 5:33:23 AM8/7/09
to Resys
没有
我是根据这句话这么说的“每行是一个三元组,日期、用户、物品”

> > > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Yuan Quan

unread,
Aug 7, 2009, 5:48:20 AM8/7/09
to Resys
嗯,因为只有8天的数据,感觉用矩阵分解从中分出个user-feature可能不是很有意义,所以最简单的关联效果最好,item-based就是重
点挖掘了item之间的关联性。

另外,也许可以试试加入time factor的矩阵分解,看会不会有提高。

On Aug 7, 4:29 pm, raullew <raul...@hotmail.com> wrote:

晨醒

unread,
Aug 7, 2009, 6:03:10 AM8/7/09
to Resys
那就是说短期行为预测上item-based方法会比较好咯?
我想加入时间动态的SVD应该是在原有基础上有一个小的提高,并不会本质上有一个飞跃。
所以,实际使用上或许应该用item-based来预测短期行为(短期内的数据应该还是很稀疏的),用svd来预测长期行为,然后融合一下。

张亮

unread,
Aug 7, 2009, 6:06:18 AM8/7/09
to re...@googlegroups.com
http://www.cadal.zju.edu.cn/plugins/legendcode.zip

不知道如何上传,就放这个链接吧。
--
张亮
Tensor Zhang

xlvector

unread,
Aug 7, 2009, 6:16:26 AM8/7/09
to Resys
我来上传

On Aug 7, 6:06 pm, 张亮 <cddb.zh...@gmail.com> wrote:
> http://www.cadal.zju.edu.cn/plugins/legendcode.zip
>
> 不知道如何上传,就放这个链接吧。
>

> 2009/8/7 clickstone <wendell...@gmail.com>

Yuan Quan

unread,
Aug 7, 2009, 6:37:03 AM8/7/09
to Resys
应该还不能直接得出"短期行为预测上item-based方法会比较好" 这个结论。 我觉得主要还是时间太短,item的空间又比较多,数据的
sparsity度到了99.976%造成的。这个时候分解出个user-feature就不大有效了,倒不如就抹掉user这个维度,直接关心
item之间的相关性,这样对数据的利用更有效些。

张亮

unread,
Aug 7, 2009, 6:48:50 AM8/7/09
to re...@googlegroups.com
反正我觉得,数据过于稀疏的时候,用类降维模型去拟合数据,随机性过大,全局的pattern找不准,就比knn的还差了。
不知道这个稀疏度的界是多少。


2009/8/7 Yuan Quan <quany...@gmail.com>



--
张亮
Tensor Zhang

xlvector

unread,
Aug 7, 2009, 7:07:30 AM8/7/09
to Resys
是的,8天时间的数据,时间效应机会没有作用。不过也许可以学习出用户早中晚的评分习惯(周期熟悉)。
但是用户在8天里兴趣不会有多大变化。

晨醒

unread,
Aug 7, 2009, 7:08:31 AM8/7/09
to Resys
抹掉user只剩item……感觉就是knn吧……

Shoukun Wang

unread,
Aug 7, 2009, 11:37:06 PM8/7/09
to Resys
的确,我在实际做的时候也发现在很多时候用RMSE或者precision/recall做指标衡量算法的时候,基于矩阵分解和其他一些优化技术的方法
往往并不比knn好多少,有时候还要差。不过对于实际的系统,往往不能一概而论。急于knn的topk倾向于作出保险而平庸的推荐,比如你收藏了《射雕
英雄传》,肯定会给你推荐《神雕侠侣》、《倚天屠龙记》,乃至金庸所有的武侠小说。你收藏了哈1,肯定会给你推荐哈23456。这样做从概率上讲是最优
的,从统计上讲是最相关的,但是对用户来讲,基本没用。用SVD之类的MF技术,即便是对0-1数据,可以找到一些很有趣的feature,比如给程序
员推荐王小波的小说;我甚至可以通过调整参数,给用户推荐那些新的,跨界的书或电影。这些用RMSE或precision/recall来衡量,都不是
最优的,但对用户价值更大,更有惊喜,当然,随之而来的副作用也大,不靠谱的推荐也更多。

实际系统最大的特点是面对的一个一个的用户,而不是优化指标。无论是RMSE还是topk,目前的优化指标有几个问题都需要小心面对:
1. 用户重要程度是不同的,一个持续访问的用户和来一次就走的用户所期望的到的服务是不一样的。
2. 推荐的重要程度也不同,一个惊喜的推荐可能会得到一个忠实用户,一个不靠谱的推荐可能会赶走一个用户
3. 推荐作为产品(而不是技术)的目标不应该是预测,而是发现

On 8月6日, 下午10时57分, xlvector <xlvec...@gmail.com> wrote:

xlvector

unread,
Aug 8, 2009, 6:57:13 AM8/8/09
to Resys
你这个是diversity的问题了,应该是涉及到推荐系统的另一个评价体系了。

wanght

unread,
Aug 8, 2009, 10:38:47 AM8/8/09
to Resys
有可能,dangdang的应用也发现类似的情况

但,这个也跟应用场景有很大关系,对item比较强调的场景(单品页面关联展示时),neighborhood的推荐可能没那么有效

> > > > 不知道大家是否有同样的看法。- 隐藏被引用文字 -
>
> - 显示引用的文字 -

wanght

unread,
Aug 8, 2009, 10:47:13 AM8/8/09
to Resys
goood idea
我看看能否让当当出1万¥+真实数据的话,在北京搞一把这个比赛。。。。。。

On 8月7日, 下午1时23分, Gary Wang <gary.wang1...@gmail.com> wrote:
> 阿里可以搞一个netflix的比赛阿,他的数据更接近于实际。
> 2009/8/7 晨醒 <chenxing.y...@gmail.com>

clickstone

unread,
Aug 8, 2009, 11:07:41 AM8/8/09
to Resys
哈哈,这是个好事儿!
当当如果搞这个事情,收益一定远超打1w广告!

xlvector

unread,
Aug 8, 2009, 8:22:53 PM8/8/09
to Resys
其实可以放在网上,让中国人都参加一把,嘿嘿

On Aug 8, 10:47 pm, wanght <wangh...@gmail.com> wrote:

晨醒

unread,
Aug 9, 2009, 12:35:41 AM8/9/09
to Resys
为什么说neighborhood在对item更为强调的场景里不会那么有效呢?
我本以为在这种情况下依靠近邻信息会更有效……莫非dangdang测试过这种情况的效果?

P.S. wanght在dangdang工作?

huizi liang

unread,
Aug 9, 2009, 3:16:50 AM8/9/09
to re...@googlegroups.com
  Hi, all, I'm a research student of recommender systems. Happy to know everyone here.
  It's interesting to discuss these problems from various kinds of perspectives:)
  The evaluation can be divided into accuracy, diversity or something else. Top K or RMSE all belongs to the approach to measure the accuracy. It's comparable, I guess that's why they are so popular.
  Acturally, the survey of the end users are very important, and should be included. But, it's hard to handle and compare. Anyway, there are some work from the perspective of user behavious of using recommender systems.
 
  Shoukun Wang, do you think SVD can be used for 0-1 dataset? (Do you mean SVD++ or SVD?)
  Thanks.

 

Shoukun Wang

unread,
Aug 11, 2009, 12:25:49 AM8/11/09
to Resys
hi, huizi, I'm sure that SVD can be used to 0-1 matrix. I mean the
concept, not any particular algorithms. The Singular Value
Decomposition method can be treated as kind of dimension reduction
technique. Although the performances are dataset dependence, the
technique itself doesn't require any special format data except a non-
zero matrix.

huizi liang

unread,
Aug 12, 2009, 5:11:10 AM8/12/09
to re...@googlegroups.com
Hi, Shoukun, thanks!
I did some experiments of using SVD to reduce the dimension on a binary dataset to do user based recommendations. It performed worse than KNN approaches.  So, probably, it's not so useful for binary dataset.

--
The best material model of a cat is another, or preferably the same, cat
Message has been deleted

Zhiquan Liu

unread,
Nov 15, 2012, 7:15:20 AM11/15/12
to re...@googlegroups.com
RecSys 2012的这个论文 CLiMF: Learning to Maximize Reciprocal Rank with Collaborative Less-is-More Filtering
是binary data的top k recommendation吧。你可以看看。

On Thursday, November 15, 2012 11:59:26 AM UTC+8, Charles wrote:
在binary data上做Top K的recommendation,有没有相关比较好的paper?个人觉得TopK在工业界更实用些,我目前做的一个实验,在数据密度为6%%的数据集上,采用Item Based算法,Recall在3%左右,用的是归一化的余弦相似度~ :-)

在 2009年8月3日星期一UTC+8下午10时35分56秒,xlvector写道:

Rui Diao

unread,
Nov 15, 2012, 7:49:15 AM11/15/12
to re...@googlegroups.com
KDD CUP 2011 的 Track 2 是binary data
可以做参考


在 2012年11月15日 上午11:59,文石 陈 <wensh...@dianping.com>写道:
在binary data上做Top K的recommendation,有没有相关比较好的paper?个人觉得TopK在工业界更实用些,我目前做的一个实验,在数据密度为6%%的数据集上,采用Item Based算法,Recall在3%左右,用的是归一化的余弦相似度~ :-)

在 2009年8月3日星期一UTC+8下午10时35分56秒,xlvector写道:
很多人都困惑与TopK和RMSE的评测的区别,我感觉其实这两种评测方法解决的是不同的两个问题。

在设计实际的推荐系统时,我们不可能计算一个用户对所以电影的评分,然后排序,找出topK。在BellKor的论文中,他用TopK评测预测问题时,
是随机选出1000个电影,然后评分排序,得出TopK。

实际的系统中,我们需要用binary data首先找出一个候选集,这个过程其实是TopK的过程(这个过程其实不需要评分,只需要关系0-1矩
阵),然后我们计算用户对候选集中电影的评分,然后对候
选集用评分排序。所以说,topk和netflix其实不是一个问题,而是推荐系统中两个不同的问题,所以用不同的评测方法也是应该的。

在Netflix中,我不需要做TopK,因为候选集已经给定了,就是quiz。在实际系统中,我们需要先做TopK,然后用评分对TopK中的K个候
选物品评分排序。

不知道大家是否有同样的看法。

--
 
 
 

Reply all
Reply to author
Forward
0 new messages