<?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>::SinRain&#039;s Blog:: &#187; 关联法则</title>
	<atom:link href="http://www.sinrain.cn/tag/%e5%85%b3%e8%81%94%e6%b3%95%e5%88%99/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sinrain.cn</link>
	<description>Simple Dream Easy Go~</description>
	<lastBuildDate>Wed, 11 Jan 2012 09:00:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>说点关联法则</title>
		<link>http://www.sinrain.cn/2009/08/12/association_rule/</link>
		<comments>http://www.sinrain.cn/2009/08/12/association_rule/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 07:04:42 +0000</pubDate>
		<dc:creator>Rain</dc:creator>
				<category><![CDATA[Algorithms]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[赛先生]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[关联法则]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.sinrain.cn/2009/08/12/%e8%af%b4%e7%82%b9%e5%85%b3%e8%81%94%e6%b3%95%e5%88%99/</guid>
		<description><![CDATA[Association Rule Learning是一种用来发掘目前的数据库里的变量之间潜在的关系的例子，这里最有名的例子当属“啤酒与纸尿布”的故事了，实际就是 做了A，然后又会去做B 。 一个直接的应用就是... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Association_rule_learning" target="_blank">Association Rule Learning</a>是一种用来发掘目前的数据库里的变量之间潜在的关系的例子，这里最有名的例子当属“啤酒与纸尿布”的故事了，实际就是 做了A，然后又会去做B 。</p>
<p>一个直接的应用就是购物篮分析，或者更流行的，推荐系统( recommendation system )。这些都是能很快想到的应用。可能用到的场所比如沃尔玛（也是之前的啤酒尿布的故事来源）、<a href="http://www.douban.com/" target="_blank">豆瓣</a>儿（我猜，我猜，我猜猜猜）、<a href="http://www.amazon.com" target="_blank">Amazon</a>、<a href="http://www.taobao.com" target="_blank">Taobao</a>或者<a href="http://www.netflixprize.com" target="_blank">NetFlix</a>之类的。</p>
<p>提到关联规则几乎第一个跳出来的要讲的就是Apriori系列的算法，此算法是前IBM Lab的<a href="http://rakesh.agrawal-family.com/" target="_blank">Rakesh Agrawal</a>大牛在94的VLDB的一篇叫《<a href="http://rakesh.agrawal-family.com/papers/vldb94apriori.pdf" target="_blank">Fast Algorithms for Mining Association Rules</a>》的paper里提出来的，该算法在2006年的ICDM里被评选为Top 10 algorithms in data mining. 这个paper也有超过8k的引用，可谓是非常非常的seminal了。</p>
<p>这儿有个八卦，2006年的时候微软偷偷挖走了Rakesh，IBM一看急了，你这个把我们数据组核心专家挖走了以后日子还怎么过啊！而且IBM之前也是给了有超过70万美金的股票期权等来试图以这种方式留人，结果二月份时候Rakesh先是把期权给卖了，然后才加入了M$。IBM就直接一纸诉状给他告上了法庭。结果不了了之，搞技术的挖墙角的事儿见多了。</p>
<p>回到正题，Apriori要解决的是：找出出现的次数大于一个指定的threshold的项集(itemSet)。直接暴力解决的复杂性是不言而喻的，单一个n元素的集合的不同的子集的个数就有{2^n}个，就别说再搭配了。而Apriori的算法的核心思想就是化大为小，从item很小开始做起，慢慢变大。</p>
<blockquote><p>“老鼠的爸爸也是老鼠”原理：非频繁项集的超集也是非频繁的<br />
if an itemset is not frequent, any of its superset is never frequent</p></blockquote>
<p>很容易理解吧，因为超集的support（支撑度def: Freq/Obs）肯定小于等于子集嘛。理解了这么多基本就可以猜出算法啦：</p>
<p><a rel="lightbox" href="http://www.sinrain.cn/wp-content/uploads/138/13847/2009/08/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.sinrain.cn/wp-content/uploads/138/13847/2009/08/image-thumb.png" border="0" alt="image" width="568" height="482" /></a></p>
<p>第三行的函数Apriori-gen函数分两步走：</p>
<ol>
<li> 
<ol>
<li>连接步: R_{k+1}，连接所有的满足前{k-1}个元素相同的P_k和R_k生成一个k+1元的itemset<br />
e.g.:P_k={ a_1, a_2, …a_{k-1}, a_k},  R_k={ a_1, a_2, …a_{k-1}, a_k’ }<br />
      ---&gt; R_{ k+1 }={ a_1, .. a_{k-1}, a_k, a_k’ }</li>
<li>剪枝步: 如果R_{k+1}中有任一k元子集R’不是频繁集，那么直接剪去该枝，如前所言，必须要是所有的自己都是频繁的，那么超集本身才可能是频繁的。</li>
</ol>
</li>
</ol>
<p>与此同时，Apriori的缺点也是一堆啦，频繁的扫描数据库，必然带来算法效率的低下，下篇给一个算法Demo和潜在的改进。</p>
<p>&copy;2012 <a href="http://www.sinrain.cn">::SinRain&#039;s Blog::</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.sinrain.cn/2009/08/12/association_rule/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

