推荐系统(建设中进度20%)
集体智慧编程 是一本比较老的书,距今发布已经过去了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,

最低0.47元/天 解锁文章
1313

被折叠的 条评论
为什么被折叠?



