在学习任何技术,我们都在思考一个问题,有没有这个行业最好的,能解决所有问题的呢?
就如武侠小说里,所有人都在幻想一种顶级武功,简单易学,克敌制胜,分分钟秒杀敌人那种。
现实是不可能有。我们遇到的各种问题千奇百怪,针对每一件事我们都需要经过辩证的思考,又怎么会有一种技术站在行业的金字塔顶,解决一切呢?
对于推荐算法,作为小白鼠的我,也一直幻想我能不能学一种最NB的,而不用再看其他的,哈哈~
看完本书,基本了解各个推荐算法的基本原理。
1. 基于人口统计学的推荐算法
针对用户定义各种属性,针对特定属性进行分析,比如年龄相近,地域相近,我们可以说这是同一类用户。
但是现实中的情况如此复杂,用户的很多定义也是无法通过属性去定义的,比如三观。所以基于人口统计学的推荐算法,不够严谨,并且后续扩展不易(每时每刻都要增加用户的属性定义)
2. 基于内容的推荐算法
同人口统计学推荐算法一样,不同的仅仅是把人口换成了内容。比如一本书,定义这本书的基本属性,作者,类别等等。通过这些基本属性来找到相似的图书。
算法缺点同人口统计学是一样的。很多产品的属性定义没有那么明确,就会导致推荐系统的不准确。
3. 协同过滤算法
协同过滤算法,是目前最流行的推荐算法。而协同过滤算法也分为两种方式。
第一种,基于物品的协同过滤。基本思想就是:用户购买了IPhone,系统利用庞大的用户数据,计算物品的相似度,即很多购买了IPhone同时购买了IPhone外壳。使用余弦函数。(物品A购买次数 ∩ 购买物品A同时购买物品B的次数)/ (物品A购买次数 ∪ 购买物品A同时购买物品B的次数)。这样就计算出两个物品相似度的余弦值,然后通过排名该余弦值,推荐用户没有购买过的物品给予用户。
基于物品的协同算法,适合于购物网站,例如亚马逊。因为物品本身不多,并且物品的属性不易变更。
第一种,基于用户的系统过滤。基本思想,是计算两个用户之间的相似度。通过用户购买的物品的交集 / 用户购买物品的并集。 来计算两个用户之间的相似度,然后推荐给相关用户喜爱的信息。
基于用户的系统算法,适合于新闻网站,物品相对来讲非常多,且具有非常强的时效性,而用户相对来讲是比较少的
4. 基于标签的推荐算法
基于标签的推荐算法,是利用标签把用户和物品结合起来的算法,很好均衡了用户和物品之间的关系。
基本思想是:用户有经常使用的标签数据。 而每个物品都有标签,在每个标签下就会有最热门的物品。利用用户的标签数据,来匹配最热门的标签物品,推荐给用户信息。
不同的推荐算法,适合于不同的应用。或者需要结合多种推荐算法一起使用才能达到最后的效果。
了解这些推荐算法的类型,只是入门级别。进一步还需要深入进行研究,例如推荐算法的惩罚因素等等。
共勉。
永远没有“银弹”!
《推荐系统实践》热门书评
-
附上Reference 中的干货 (Paper,Blog等资料的链接)
191有用 2无用 wacow 2012-07-21
这只是一本197页的书 我想你未必过瘾 但作者附上了诸多好资料 无论是paper, blog文章,wikipedia词条,数据集还是开源项目等 你可以选择拥有附上我收集的资料链接,格式基本按照‘URL+资料名称+出现在书中的页数’,某些链接可能需要你翻过一道‘墙’,某些重复引用的我就没重复贴上链接了...
-
自己来冒个泡
83有用 1无用 xlvector 2012-06-24
这本书大约写了10个月的时间,如果一定要自己评价一下这本书,只能说还行。这本书基本达到了写作目标:1. 帮助刚毕业的学生迅速了解如何将他们学到的理论用于实际2. 帮助程序员迅速将他们的编程能力应用到推荐系统中来3. 强调数据分析的重要性,淡化算法4. 运用多种评测方法,强调全面评测的重要性不过本书也...
-
比较失望,远远没有宣传的那么好
19有用 11无用 晓东 2012-07-05
本来书还不到200页,大部分章节还是泛泛而言,真正涉及技术讲解的只有第二章的最后三小节,其它章节基本没什么干货,真正有用的内容不超过50页。里面的程序也感觉插入的比较生硬,和内容感觉像两张皮,没有有机结合在一起。价格居然要49块,性价比太低,书商太坑爹了,为了捞钱这么宣传误人子弟。总之比较失望,建议...
-
诚意推荐
16有用 3无用 clickstone 2012-06-17
2009年8月,我和项亮一起发起了 ResysChina —— 一个面向推荐系统领域的专业社区。建立初衷,是想为业内关注推荐系统领域的朋友提供一个交流讨论的社区。迄今为止,业内朋友给予了 ResysChina 热情的鼓励与支持,我们组织了多次线下分享会,在嘉宾们为大家带来精彩观点的同时,ResysC...
-
书中的代码没有必要这样贴出来
10有用 0无用 弘仔 2013-02-05
这种贴代码的讲解方法只学到了《集体智慧编程》的一半,这里仅仅是简单的张贴出来代码,却没有给出在Python的交互式环境下运行结果,这样会让读者很疑惑,只能够整段整段的跳过代码不看了。如果还有下一版的话希望能够改进,否则很多代码里面包含了一些错误都不能够被辨别出来。...