[2014.04.19] 用Ruby实现的简单推荐系统

原文: http://otobrglez.opalab.com/ruby/2014/03/23/simple-ruby-recommendation-system.html

我正在找工作,昨天我过了一下曾经做的Rails项目,想把它们更新到我的简历中。我惊奇得发现在老项目里我写了一个推荐系统。说来也简单,就是针对博客文章做得基于标签得推荐。我决定拿一部分代码出来记录到博客中。

用于推荐的基础算法是 Jaccard Index,它也被称为 Jaccard 相似系数。Jaccard Index是植物学教授 Paul Jaccard提出的,基于一个表现相似集合相似度的数字。

如何运作?
取一个对象(例如一篇博客文章),以及最能描述它的属性(标签,分类或者字数)。接着取其他的对象并且计算 intersection 的 division 。数学上的表述是这样的:
J( A, B ) = | A 交 B | / | A 并 B |
结果在0和1之间,也可以很容易得计算出它们之间得差异性:
dJ( A, B ) = 1 - J( A, B )= ( | A 并 B | - | A | )

推荐阅读更多精彩内容