最好走的路越走越难,最难走的路越走越容易

Follow guwendong on Web
  • Subscribe to Beyond Search via RSS
  • Follow @clickstone on SinaWeibo
  • Join Resys Google Group
  • Follow @clickstone on Douban
  • Follow @clickstone on Twitter

Tag Archives: algorithm

Google 吴军:数学之美系列

目前看来,谷歌给我带来的最大价值,就是研究员吴军的两个系列文章:《数学之美》和《浪潮之巅》。因此,我把这两个系列整理一下,保持更新。

来源:google china blog
作者:吴军,http://www.cs.jhu.edu/~junwu/

数学之美 一 统计语言模型
数学之美 二 谈谈中文分词
数学之美 三 隐含马尔可夫模型在语言处理中的应用
数学之美 四 怎样度量信息?
数学之美 五 简单之美:布尔代数和搜索引擎的索引
数学之美 六 图论和网络爬虫 (Web Crawlers)
数学之美 七 信息论在信息处理中的应用
数学之美 八 贾里尼克的故事和现代语言处理
数学之美 九 如何确定网页和查询的相关性
数学之美 十 有限状态机和地址识别
数学之美 十一 Google 阿卡 47 的制造者阿米特.辛格博士
数学之美 十二 余弦定理和新闻的分类
数学之美 十三 信息指纹及其应用
数学之美 十四 谈谈数学模型的重要性
数学之美 十五 繁与简 自然语言处理的几位精英
数学之美 十六(上)不要把所有的鸡蛋放在一个篮子里 最大熵模型
数学之美 十六(下)不要把所有的鸡蛋放在一个篮子里 最大熵模型
数学之美 十七 闪光的不一定是金子 谈谈搜索引擎作弊问题(Search Engine Anti-SPAM)
数学之美 十八 矩阵运算和文本处理中的分类问题
数学之美 十九 马尔可夫链的扩展 贝叶斯网络 (Bayesian Networks)
数学之美 二十 自然语言处理的教父 马库斯
数学之美 二十一 布隆过滤器(Bloom Filter)
数学之美 二十二 由电视剧《暗算》所想到的 — 谈谈密码学的数学原理

还有一点感谢谷歌,就是这个改自黑板报的主题。^_^

 

推荐系统:关联规则(2)

Apriori Algorithm 是关联规则领域里最具影响力的基础算法。它是由 Rakesh Agrawal 在 1994 年提出的,详细的介绍在这里《Fast Algorithms for Mining Association Rules》。十几年过去了,不少学者围绕着 Apriori 进行了诸多改良。但与 1994 年相比,目前基于互联网的应用,数据量大了几十倍甚至是几百倍,因此,基于 Apriori 的算法逐渐暴露出其运算成本过高的问题。但不管怎样,对于大师及其做出的贡献,我们也只有高山仰止的份儿。

Apriori 是一种广度优先算法,通过多次扫描数据库来获取支持度大于最小支持度的频繁项集。它的理论基础是频繁项集的两个单调性原则:频繁项集的任一子集一定是频繁的;非频繁项集的任一超集一定是非频繁的。晦涩的理论我这里就不多写了,有兴趣的可以去看论文。我把里面的例子给翻译一下,图文并茂,简明易懂。
某数据库 DB 里有 4 条事务记录,取最小支持度(min support)为 0.5,则计算频繁项集的过程如下:

TID Items
100 A, C, D
200 B, C, E
300 A, B, C, E
400 B, E

扫描DB
Itemset Support
{A} 2 (0.5)
{B} 3 (0.75)
{C} 3 (0.75)
{D} 1 (0.25)
{E} 3 (0.75)

取满足
最小支持度
项集
Itemset Support
{A} 2
{B} 3
{C} 3
{E} 3

Itemset
{A, B}
{A, C}
{A, E}
{B, C}
{B, E}
{C, E}

扫描DB
Itemset Support
{A, B} 1 (0.25)
{A, C} 2 (0.5)
{A, E} 1 (0.25)
{B, C} 2 (0.5)
{B, E} 3 (0.75)
{C, E} 2 (0.5)

取满足
最小支持度
项集
Itemset Support
{A, C} 2
{B, C} 2
{B, E} 3
{C, E} 2

Itemset
{A, B, C}
{A, B, E}
{A, C, E}
{B, C, E}

扫描DB
Itemset Support
{A, B, C} 1 (0.25)
{A, B, E} 1 (0.25)
{A, C, E} 1 (0.35)
{B, C, E} 2 (0.5)

取满足
最小支持度
项集
Itemset Support
{B, C, E} 2 (0.5)

如上可以看出,在海量数据的情况下,Apriori 算法的运算过程有 2 个问题:

  1. 需要多次扫描数据库,时间成本很高;
  2. 运算过程中需要产生大量的候选集,空间成本也非常高。

针对 Apriori 算法所做的改进也基本上是围绕着解决这两个问题进行的,如在扫描DB前首先进行以便事务合并和压缩,数据分区或抽样等。

Weka 里有 Apriori 算法的 Java 实现,非常值得一看。

貌似 wikipedia 已经解封了,呵呵!

预报:关联规则(3),关于 FP-Growth 算法。

 

推荐系统:关联规则(1)

说到推荐系统,就不能不说关联规则。基于关联规则的推荐,是入门级的推荐技术实现,也是目前应用最广泛的一种推荐形式。

就拿刚上线的“蚂蚁”来说吧,打开《引爆流行》的页面,稍微滚动两下鼠标,你就可以看到这个了——“喜欢此宝贝的会员还喜欢”。豆瓣上也有类似的形式,还看《引爆流行》,豆瓣的是——“喜欢引爆流行的人也喜欢”。是不是很像?但别被形式迷惑了,这两个用的是完全不同的技术实现。豆瓣的之前我说过了,他是
Item-Based
方法;蚂蚁的这个应该就是关联规则方法了。当然我是猜的,不过也不是乱猜。有兴趣的可以刷刷上面那两个《引爆流行》的页面,看一下两个推荐区域的内容会有什么不同。

关联规则起源于数据挖掘领域,人们用它来发现大量数据中项集之间(有趣/有用)的关联。它本身是数据挖掘领域中一个重要的研究课题,近些年来更是由于被业界广泛应用而倍受重视。Rakesh
Agrawal
是关联规则领域的大牛,他于 1993 年发表的一篇
paper,《Mining
Association Rules between Sets of Items in Large Databases
》,是被引用最多的一篇大作。不过让
google fans 们失望的是,他目前就职于 microsoft 的搜索实验室!^_^

关联规则的最典型例子就是购物篮分析。在一家超市里,有一个有趣的现象:尿布和啤酒赫然摆在一起出售。但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。这不是一个笑话,而是发生在美国沃尔玛连锁店超市的真实案例,并一直为商家所津津乐道。原来,美国的妇女们经常会嘱咐她们的丈夫下班以后要为孩子买尿布。而丈夫在买完尿布之后又要顺手买回自己爱喝的啤酒,因此啤酒和尿布在一起购买的机会还是很多的。这个故事听起来是不是很酷?没错,这就是技术的力量!

但是,和任何其他经典的故事一样——这事儿听起来带劲儿,做起来很难!真正做过关联规则挖掘的人,一定都有这样的体会:想从浩瀚的记录集里,挖掘一条带劲儿的关联规则出来,简直太难了。(什么,你问有多难?请参照朱广沪~~~)

对于挖掘得到的关联规则,都会制定一些指标来衡量它们的有效程度,最经典的包括,支持度和置信度。简单来讲,

  1. 支持度是指,商品A、商品B在全部销售订单中所占的比例。
  2. 置信度是指,购买商品A并且同时购买了商品B的订单,在所有包含商品A的订单中所占的比例。

当然,这里的商品和订单是个泛化的概念,具体指代是的什么,就得具体问题具体分析了。

 

ResysChina 发起人
1. 持续关注 个性化推荐 技术;
2. 持续关注 Semantic Web 技术;
3. 评论与上两项相关的互联网业务与产品;

我相信技术的力量!
wendell.gu@GMail.com

Archives