【配套博客】《集体智慧编程》推荐系统

集体智慧编程 是一本比较老的书,距今发布已经过去了14年,但是其中讲解的内容却是非常的偏实践,笔者之前主要是写业务代码,几乎很少接触算法内容,读此书时,觉得非常有收获。笔者会本书的基础之上,额外结合数学知识,代码实现,以及目前业界更先进的算法实现方式,跟大家一起来详细探讨一下本书的内容,我不会生搬硬套,只是单纯的做书籍内容的搬运,而是采用更详细和生动的例子作补充。笔者本人水平有限,难免出现纰漏,有问题请私信或留言 我会在24h内处理,请勿在评论区引战or开喷。

背景介绍

第一性原则 :推荐算法的核心应用场景,无所谓就是给什么样的人看什么样的东西,在这个基础上保证好所推荐的事物的相关度和顺序。因此 我们可以得知 一个推荐工程的算法,肯定会包含两部分 获得推荐集和排序。下面我们将围绕着这两点介绍一下 09年一个主流的推荐系统是怎样进行设计和运行的。

场景介绍

我们首先思考一个这样的场景,我们是一个视频播放网站,现在我们要对一个用户提供一份推荐的电影列表。

如果让做工程的同学来进行思考,这个其实也并不是一个无法完成的任务,因为电影的数量是非常多的,但是我们能从一些其他知识库非常轻松的获得一份电影评分,我们可以利用排序算法或者topk算法简单的获得一个榜单,并且把这个榜单推送给所有用户。

如果不借助任何高深的算法,我们可以很容易的给出一份工程上的推荐时间,但是如果我们现在能够额外获得一些用户的知识,我们是否能够做到对每个用户进行更加个性化的推荐呢,这其实 也并非是难以做到的,我们后面需要用到一些简单高中数学和数理统计的知识,来实现一些能够帮助我们进行 协同过滤 的算法,从而帮助我们实现这个功能。

协同过滤:这个概念非常的好理解,正如我们前文所提到的,推荐工程中一定要首先获得一个推荐集,那么如何实现这个过程,我们可以使用协同过滤的工具,我们尝试对我们的全部搜索集进行搜索,应用算法找到和我们的taget_item 相似度最高的一个物品集合,然后针对这个集合做好排序,我们就完成了推荐系统

算法介绍

ps 所有的代码都可以在这里找到:
https://github.com/orikey0/Programming-Collective-Intelligence-Source-Code
由于09年基本上还用的是python2,这里笔者将按照python3和python的代码规范进行了一定改造,并且添加了原书中没有代码实现的算法。笔者承诺 建设完成中所有代码开箱即用。

下面我们结合一个具体的场景,介绍常见的几种计算相关型的算法。
我们现在有一批观影网站用户的评分信息,我们把他们组合成如下形式

critics = {
   'Lisa Rose': {
   'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5,
                         'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5,
                         'The Night Listener': 3.0},
           'Gene Seymour': {
   'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5,
                            'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0,
                            'You, Me and Dupree': 3.5},
           'Michael Phillips': {
   'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0,
                                'Superman Returns': 3.5, 'The Night Listener': 4.0},
           'Claudia Puig': {
   'Snakes on a Plane': 3.5, 'Just My Luck': 3.0,
                            'The Night Listener': 4.5, 'Superman Returns': 4.0,
                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值