Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4587517
  • 博文数量: 1214
  • 博客积分: 13195
  • 博客等级: 上将
  • 技术积分: 9105
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-19 14:41
个人简介

C++,python,热爱算法和机器学习

文章分类

全部博文(1214)

文章存档

2021年(13)

2020年(49)

2019年(14)

2018年(27)

2017年(69)

2016年(100)

2015年(106)

2014年(240)

2013年(5)

2012年(193)

2011年(155)

2010年(93)

2009年(62)

2008年(51)

2007年(37)

分类:

2012-04-20 11:46:04

January 6th, 2009 | by 超群.com | ,转载请保留链接。

本博客所有原创文章采用,转载请保留链接

前段时间做了个slope one算法在上的测试,关于slope one算法可以参考我之前写的文章:,Netflix Prize是DVD在线租赁商于 2006年10月2日发起一项竞赛:任何组织或个人只要能够提交比它现有电影推荐系统Cinematch效果好10%的新方法,就可以获得100万美元的 奖金。竞赛最多持续到2011年10月2日。同时,NetflixPrize还提供每年5万美元的年度进步奖。为什么是五万美元的年度进步奖呢?因为 100万美元大奖存银行,每年的利息是5万美元,看来老外是挺有意思的。

Netflix Pirze采用RMSE作为评测的标准,RMSE中文的意思是均方根误差,计算的公式: 

其中Ot是原始数据,Ft是预测数据,n是样本数。

目前最好的成绩是有创造的0.8598(2009.01.05数据),比官方数据提高9.63%,这样可以推算出官方的数据应该是0.9492左右,BellKor in BigChaos也是2008年度进步奖的获得者,他们更新数据的频率很高,如不出意外,最后的大奖应该是他们的。

目前的方向大多是SVD奇异值分解,可以参见BellKor in BigChaos他们的文章,这里有一个开源的项目, 也是一个SVD处理Netflix Prize的模型,大部分代码是Python的(国外很多用Python做数据挖掘和自然语言处理的案例),成绩到了0.9046,折算比官方数据要高 4.70%,如果你想拿SVD热热手,可以看看这个开源项目,过些日子我会写一些SVD应用在推荐系统方面的文章,着急的可以阅读吴军的文章数学之美 系列十八 - 矩阵运算和文本处理中的分类问题

由于对slope one算法比较熟悉,决定看看slope one算法在netflix pirze上的表现如何,netflix prize训练数据太大,大概有1亿多条的打分记录,在 运行效率方面不是很好,OpenSlopeOne处理几百万上千万的打分数据还是非常不错的,更多的话需要更多的机器水平扩展,如果有好的Mysql DBA可以尝试优化一下mysql server的参数,估计效果会很好,当然也需要有好的机器配合,我这里是用Python写的一个程序,多进程+多线程+手工Map-Reduce,需要 源代码的话可以找我拿。

跑出来的结果不是很好,我的得分是0.9829,比官方数据差0.0337,大概差3.55%,分析原因可能是用户打分的数据普遍偏高,人们大多给自己喜欢的电影打分,对于不喜欢的数据打分就少很多了,下面是打分数据的分布情况:

mysql> select rating,count(*) as times from nf_log group by rating; +--------+----------+ | rating | times    | +--------+----------+ |      1 |  4617904 | |      2 | 10131945 | |      3 | 28810978 | |      4 | 33750581 | |      5 | 23167830 | +--------+----------+

一目了然,用户对不喜欢的电影打分甚少,而且用户的平均打分达到了3.6043,所以最后算出来的打分值普遍偏高,RMSE的表现当然差了,Slope one算法里面有个BI-POLAR SLOPE ONE来应对这种问题,有兴趣的可以尝试一下。

尽管得分情况不是很好,我用probe的数据测试看,slope one算法对用户喜欢的电影预测还是很好的,不擅长的是对用户不喜欢的电影的预测,对用户打分为1的预测普遍在3以上,拖累了它的表现。

我们一般要做的是对用户喜欢的东西进行推荐,slope one还是一个很不错的选择。

阅读(993) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~