<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>超群.com的博客 &#187; netflix prize</title>
	<atom:link href="http://www.fuchaoqun.com/tag/netflix-prize/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fuchaoqun.com</link>
	<description></description>
	<lastBuildDate>Thu, 08 Sep 2011 15:08:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>slope one算法在Netflix Prize上的表现</title>
		<link>http://www.fuchaoqun.com/2009/01/slope-one-on-netflix-prize/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=slope-one-on-netflix-prize</link>
		<comments>http://www.fuchaoqun.com/2009/01/slope-one-on-netflix-prize/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 09:40:58 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[netflix prize]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[slope one]]></category>
		<guid isPermaLink="false">http://chaoqun.17348.com/?p=125</guid>
		<description><![CDATA[本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享，转载请保留链接http://chaoqun.17348.com/2009/01/slope-one-on-netflix-prize/ 前段时间做了个slope one算法在Netflix Pirze上的测试，关于slope one算法可以参考我之前写的文章:Slope one:简单高效的推荐算法，Netflix Prize是DVD在线租赁商Netflix于2006年10月2日发起一项竞赛：任何组织或个人只要能够提交比它现有电影推荐系统Cinematch效果好10%的新方法，就可以获得100万美元的奖金。竞赛最多持续到2011年10月2日。同时，NetflixPrize还提供每年5万美元的年度进步奖。为什么是五万美元的年度进步奖呢？因为100万美元大奖存银行，每年的利息是5万美元，看来老外是挺有意思的。 Netflix Pirze采用RMSE作为评测的标准，RMSE中文的意思是均方根误差，计算的公式：  其中Ot是原始数据，Ft是预测数据，n是样本数。 目前最好的成绩是有BellKor in BigChaos创造的0.8598（2009.01.05数据），比官方数据提高9.63％，这样可以推算出官方的数据应该是0.9492左右，BellKor in BigChaos也是2008年度进步奖的获得者，他们更新数据的频率很高，如不出意外，最后的大奖应该是他们的。 目前的方向大多是SVD奇异值分解，可以参见BellKor in BigChaos他们的文章http://www.netflixprize.com/community/viewtopic.php?id=1193，这里有一个开源的项目nprize，也是一个SVD处理Netflix Prize的模型，大部分代码是Python的（国外很多用Python做数据挖掘和自然语言处理的案例），成绩到了0.9046，折算比官方数据要高4.70％，如果你想拿SVD热热手，可以看看这个开源项目，过些日子我会写一些SVD应用在推荐系统方面的文章，着急的可以阅读吴军的文章数学之美 系列十八 － 矩阵运算和文本处理中的分类问题。 由于对slope one算法比较熟悉，决定看看slope one算法在netflix pirze上的表现如何，netflix prize训练数据太大，大概有1亿多条的打分记录，OpenSlopeOne在运行效率方面不是很好，OpenSlopeOne处理几百万上千万的打分数据还是非常不错的，更多的话需要更多的机器水平扩展，如果有好的Mysql DBA可以尝试优化一下mysql server的参数，估计效果会很好，当然也需要有好的机器配合，我这里是用Python写的一个程序，多进程＋多线程＋手工Map-Reduce，需要源代码的话可以找我拿。 跑出来的结果不是很好，我的得分是0.9829，比官方数据差0.0337，大概差3.55％，分析原因可能是用户打分的数据普遍偏高，人们大多给自己喜欢的电影打分，对于不喜欢的数据打分就少很多了，下面是打分数据的分布情况： mysql&#62; select rating,count(*) as times from nf_log group by rating; +--------+----------+ &#124; rating &#124; times    &#124; +--------+----------+ &#124;      1 &#124;  4617904 &#124; &#124;      2 &#124; [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>本博客所有原创文章采用<a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" target="_blank"><span style="color: #356aa0;">知识共享署名-非商业性使用-相同方式共享</span></a>，转载请保留链接<a href="http://chaoqun.17348.com/2009/01/slope-one-on-netflix-prize/">http://chaoqun.17348.com/2009/01/slope-one-on-netflix-prize/</a></p></blockquote>
<p>前段时间做了个slope one算法在<a href="http://www.netflixprize.com/" target="_blank">Netflix Pirze</a>上的测试，关于slope one算法可以参考我之前写的文章:<a href="http://chaoqun.17348.com/2008/09/slope_one/" target="_blank">Slope one:简单高效的推荐算法</a>，Netflix Prize是DVD在线租赁商<a href="https://www.netflix.com" target="_blank">Netflix</a>于2006年10月2日发起一项竞赛：任何组织或个人只要能够提交比它现有电影推荐系统Cinematch效果好10%的新方法，就可以获得100万美元的奖金。竞赛最多持续到2011年10月2日。同时，NetflixPrize还提供每年5万美元的年度进步奖。为什么是五万美元的年度进步奖呢？因为100万美元大奖存银行，每年的利息是5万美元，看来老外是挺有意思的。</p>
<p>Netflix Pirze采用RMSE作为评测的标准，RMSE中文的意思是均方根误差，计算的公式： </p>
<p><img class="alignnone" src="http://farm2.static.flickr.com/1194/3171843795_1251bcff35.jpg" alt="" /></p>
<p>其中O<sup>t</sup>是原始数据，F<sup>t</sup>是预测数据，n是样本数。</p>
<p>目前最好的成绩是有<a href="http://www.commendo.at/prize08/team.html" target="_blank">BellKor in BigChaos</a>创造的0.8598（2009.01.05数据），比官方数据提高9.63％，这样可以推算出官方的数据应该是0.9492左右，BellKor in BigChaos也是2008年度进步奖的获得者，他们更新数据的频率很高，如不出意外，最后的大奖应该是他们的。</p>
<p>目前的方向大多是SVD奇异值分解，可以参见BellKor in BigChaos他们的文章<a href="http://www.netflixprize.com/community/viewtopic.php?id=1193" target="_blank">http://www.netflixprize.com/community/viewtopic.php?id=1193</a>，这里有一个开源的项目<a href="http://code.google.com/p/nprize/" target="_blank">nprize</a>，也是一个SVD处理Netflix Prize的模型，大部分代码是Python的（国外很多用Python做数据挖掘和自然语言处理的案例），成绩到了0.9046，折算比官方数据要高4.70％，如果你想拿SVD热热手，可以看看这个开源项目，过些日子我会写一些SVD应用在推荐系统方面的文章，着急的可以阅读吴军的文章<a href="http://www.googlechinablog.com/2007/01/blog-post.html" target="_blank">数学之美 系列十八 － 矩阵运算和文本处理中的分类问题</a>。</p>
<p>由于对slope one算法比较熟悉，决定看看slope one算法在netflix pirze上的表现如何，netflix prize训练数据太大，大概有1亿多条的打分记录，<a href="http://code.google.com/p/openslopeone/" target="_blank">OpenSlopeOne</a>在运行效率方面不是很好，OpenSlopeOne处理几百万上千万的打分数据还是非常不错的，更多的话需要更多的机器水平扩展，如果有好的Mysql DBA可以尝试优化一下mysql server的参数，估计效果会很好，当然也需要有好的机器配合，我这里是用Python写的一个程序，多进程＋多线程＋手工Map-Reduce，需要源代码的话可以找我拿。</p>
<p>跑出来的结果不是很好，我的得分是0.9829，比官方数据差0.0337，大概差3.55％，分析原因可能是用户打分的数据普遍偏高，人们大多给自己喜欢的电影打分，对于不喜欢的数据打分就少很多了，下面是打分数据的分布情况：</p>
<blockquote>
<pre>mysql&gt; select rating,count(*) as times from nf_log group by rating;
+--------+----------+
| rating | times    |
+--------+----------+
|      1 |  4617904 |
|      2 | 10131945 |
|      3 | 28810978 |
|      4 | 33750581 |
|      5 | 23167830 |
+--------+----------+</pre>
</blockquote>
<p>一目了然，用户对不喜欢的电影打分甚少，而且用户的平均打分达到了3.6043，所以最后算出来的打分值普遍偏高，RMSE的表现当然差了，<a href="http://www.daniel-lemire.com/fr/documents/publications/lemiremaclachlan_sdm05.pdf" target="_blank">Slope one算法</a>里面有个BI-POLAR SLOPE ONE来应对这种问题，有兴趣的可以尝试一下。</p>
<p>尽管得分情况不是很好，我用probe的数据测试看，slope one算法对用户喜欢的电影预测还是很好的，不擅长的是对用户不喜欢的电影的预测，对用户打分为1的预测普遍在3以上，拖累了它的表现。</p>
<p>我们一般要做的是对用户喜欢的东西进行推荐，slope one还是一个很不错的选择。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/01/slope-one-on-netflix-prize/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
