<?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; 歌曲推荐</title>
	<atom:link href="http://www.fuchaoqun.com/tag/%e6%ad%8c%e6%9b%b2%e6%8e%a8%e8%8d%90/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的相关歌曲推荐算法</title>
		<link>http://www.fuchaoqun.com/2009/02/slope-one-for-music-recommender-system/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=slope-one-for-music-recommender-system</link>
		<comments>http://www.fuchaoqun.com/2009/02/slope-one-for-music-recommender-system/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 10:55:29 +0000</pubDate>
		<dc:creator>超群.com</dc:creator>
				<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[recommender system]]></category>
		<category><![CDATA[slope one]]></category>
		<category><![CDATA[数据挖掘]]></category>
		<category><![CDATA[歌曲推荐]]></category>
		<guid isPermaLink="false">http://chaoqun.17348.com/?p=142</guid>
		<description><![CDATA[本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享，转载请保留链接http://chaoqun.17348.com/2009/02/slope-one-for-music-recommender-system/ 不知不觉，研究歌曲相关推荐快半年了，第一篇文章利用orange进行关联规则挖掘完成于2008.08.26，到现在基本搞定基于矩阵奇异值分解(SVD)的协同过滤算法，期间得到了很多朋友的帮助，在此致谢。有些收获，将逐步的分享出来，有兴趣的可以参照研习。 对于Slope One算法，不熟悉的可以参照我之前的文章：Slope one:简单高效的推荐算法，已经被很多人证明有很好的推荐效果。 Slope one算法中有一个很重要的步骤是获取用户的打分数据，这个对很多网站都很费劲，很多用户都会听歌，但大多懒得去给歌曲打分，另外用户打分的时候会比较困惑，该打多少分呢？喜欢这首歌，是打4分还是5分呢？费劲。 我这里给出的是另外一种方法，做法是分析用户的听歌记录，一般网站都会记录这样的记录，统计一段时间内用户的听歌记录，我们得到下面格式的数据： 用户ID    歌曲ID    听歌次数 比如某个片段： 3389    9527    23 3389    9528    56 3306    1211    78 3306    9527    45 表示用户3389听歌曲9527的次数是23，听9528的次数是56，诸如此类。这样的数据当然不能直接用来做Slope one，需要把数据格式化到某个区间。我们分析一下用户听歌的行为，一般来说最喜欢的歌曲听的最多，越喜欢的歌曲听的越多，听的少的歌曲自然不那么喜欢。所以我们可以简单的模拟用户对歌曲的打分： 用户对歌曲的打分 ＝ 用户听此歌曲的次数 / 用户听单首歌曲的最大次数 这样就可以把打分数据规整到0～1之间，还是上面的数据： 3389    9527    23/56 3389    9528    56/56 3306    1211    78/78 3306    9527    45/78 用户听的最多的歌曲打分是1，其他歌曲的打分等于听歌次数除以最大次数，我们就获得了用户的打分数据了。剩下的工作就是按照标准的Slope One流程走了，程序代码可以参考：http://code.google.com/p/openslopeone/ 贴出几个实例大家看看，第一次做的结果，再去做的话应该比这个要好一些： 歌曲 推荐歌曲 南无大悲观世音菩萨   刘小茜 梵音大悲咒   齐豫 大悲咒   齐豫 [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享，转载请保留链接<a href="http://chaoqun.17348.com/2009/02/slope-one-for-music-recommender-system/" target="_blank">http://chaoqun.17348.com/2009/02/slope-one-for-music-recommender-system/</a></p></blockquote>
<p>不知不觉，研究歌曲相关推荐快半年了，第一篇文章<a href="http://chaoqun.17348.com/2008/08/data-mining-with-python-orange-association_rule/" target="_blank">利用orange进行关联规则挖掘</a>完成于2008.08.26，到现在基本搞定基于矩阵奇异值分解(SVD)的协同过滤算法，期间得到了很多朋友的帮助，在此致谢。有些收获，将逐步的分享出来，有兴趣的可以参照研习。</p>
<p>对于Slope One算法，不熟悉的可以参照我之前的文章：<a href="http://chaoqun.17348.com/2008/09/slope_one/" target="_blank">Slope one:简单高效的推荐算法</a>，已经被很多人证明有很好的推荐效果。</p>
<p>Slope one算法中有一个很重要的步骤是获取用户的打分数据，这个对很多网站都很费劲，很多用户都会听歌，但大多懒得去给歌曲打分，另外用户打分的时候会比较困惑，该打多少分呢？喜欢这首歌，是打4分还是5分呢？费劲。</p>
<p>我这里给出的是另外一种方法，做法是分析用户的听歌记录，一般网站都会记录这样的记录，统计一段时间内用户的听歌记录，我们得到下面格式的数据：</p>
<blockquote><p>用户ID    歌曲ID    听歌次数</p></blockquote>
<p>比如某个片段：</p>
<blockquote><p>3389    9527    23<br />
3389    9528    56<br />
3306    1211    78<br />
3306    9527    45</p></blockquote>
<p>表示用户3389听歌曲9527的次数是23，听9528的次数是56，诸如此类。这样的数据当然不能直接用来做Slope one，需要把数据格式化到某个区间。我们分析一下用户听歌的行为，一般来说<strong>最喜欢的歌曲听的最多，越喜欢的歌曲听的越多，听的少的歌曲自然不那么喜欢</strong>。所以我们可以简单的模拟用户对歌曲的打分：</p>
<blockquote><p><strong>用户对歌曲的打分 ＝ 用户听此歌曲的次数 / 用户听单首歌曲的最大次数</strong></p></blockquote>
<p>这样就可以把打分数据规整到0～1之间，还是上面的数据：</p>
<blockquote><p>3389    9527    23/56<br />
3389    9528    56/56<br />
3306    1211    78/78<br />
3306    9527    45/78</p></blockquote>
<p>用户听的最多的歌曲打分是1，其他歌曲的打分等于听歌次数除以最大次数，我们就获得了用户的打分数据了。剩下的工作就是按照标准的Slope One流程走了，程序代码可以参考：<a href="http://code.google.com/p/openslopeone/" target="_blank">http://code.google.com/p/openslopeone/</a></p>
<p>贴出几个实例大家看看，第一次做的结果，再去做的话应该比这个要好一些：</p>
<table style="border: 1px solid black; width: 400px;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-right:1px solid #000;border-bottom:1px solid #000">歌曲</td>
<td style="border-bottom:1px solid #000">推荐歌曲</td>
</tr>
<tr>
<td style="border-right:1px solid #000;border-bottom:1px solid #000">南无大悲观世音菩萨   刘小茜</td>
<td style="border-bottom:1px solid #000">梵音大悲咒   齐豫<br />
大悲咒   齐豫<br />
观世音菩萨发愿偈.大悲咒   齐豫<br />
大悲咒   邝美云<br />
般若波罗蜜多心经   齐豫<br />
大悲咒   齐豫<br />
清净法身佛   齐豫<br />
阿弥陀佛在心间   小娟<br />
吉祥如意   凤凰传奇</td>
</tr>
<tr>
<td style="border-right:1px solid #000;border-bottom:1px solid #000">好一朵茉莉花   朱昌耀</td>
<td style="border-bottom:1px solid #000">理查德-克莱德曼《梦中的婚礼》   合辑（欧美）<br />
茉莉花（汉族民歌）   雷佳<br />
好一朵茉莉花-笛子   合辑（内地）<br />
最浪漫的事   赵咏华<br />
沧海一声笑   罗文<br />
how can i keep from singing   Enya<br />
生死不离   成龙<br />
羞答答的玫瑰静悄悄地开   孟庭苇</td>
</tr>
<tr>
<td style="border-right:1px solid #000">过三关   吴卓羲</td>
<td>别怪她   吴卓羲<br />
生命有一种绝对   五月天<br />
春日(电视剧&#8217;春日&#8217;主题曲)   吴卓羲<br />
爱玛仕小姐   吴卓羲<br />
别人问起   吴卓羲<br />
别怪她(Dance Remix)   吴卓羲<br />
别怪她 &#8211; 吴卓羲   合辑<br />
米老鼠   五月天<br />
One Last Dance   Craig David<br />
新不了情   薛凯琪</td>
</tr>
</tbody>
</table>
<p>Tips:</p>
<p>做Slope one之前最好过滤掉那些超热门的歌曲，因为很多人都听过了，会让这些歌曲经常出现在推荐结果里面，我的感觉是过滤掉Top100就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuchaoqun.com/2009/02/slope-one-for-music-recommender-system/feed/</wfw:commentRss>
		<slash:comments>2</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! -->
