没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
像许多事情一样,该话题源于沮丧和僵硬的鸡尾酒。这是一个星期六,两个年轻人晚上依旧没有和女生约会。他们坐在一起喝了很多酒,相互分享了很多悲伤的事情,渐渐地这两个哈佛大一新生开始思考一个问题。如果不是依靠随机的机会,而是使用一个电脑算法来发现合适的女孩,这会怎么样?他们觉得匹配人的关键是创建一组问题。每个人都会在头几次尴尬的约会上寻找一些信息,而这组问题就是为大家提供这样的信息。使用这些问卷进行候选人的匹配,那么没有任何希望的约会就被消灭在萌芽之中。这个过程将是相当有效的。想法是向波士顿和全国的大学生推销他们的新服务。马上,他们就这么做了。不久之后,他们建立的数字配对服务取得了巨大的成功。它受到全国媒体的关注,并在后面的几年内生成了数万的匹配。事实上,这家公司是如此的成功,一家更大的公司为了使用其技术,最终将其收购。。。。。。
资源推荐
资源详情
资源评论































构建推荐引擎
像许多事情一样
,该话题源于沮丧和僵硬的鸡尾酒。这是一个星期六,两个年轻人晚
上依旧没有和女生约会。他们坐在一起喝了很多酒,相互分享了很多悲伤的事情,渐渐地
这两个哈佛大一新生开始思考一个问题。如果不是依靠随机的机会,而是使用一个电脑算
法来发现合适的女孩,这会怎么样?
他们觉得匹配人的关键是创建一组问题。每个人都会在头几次尴尬的约会上寻找一些
信息,而这组问题就是为大家提供这样的信息。使用这些问卷进行候选人的匹配,那么没
有任何希望的约会就被消灭在萌芽之中。这个过程将是相当有效的。
想法是向波士顿和全国的大学生推销他们的新服务。马上,他们就这么做了。
不久之后,他们建立的数字配对服务取得了巨大的成功。它受到全国媒体的关注,并
在后面的几年内生成了数万的匹配。
事实上,这家公司是如此的成功,一家更大的公司为了使用其技术,最终将其收购。
如果你认为我可能在谈论 OkCupid,那么你会错了——差不多有 40 年的误差。我所说
的公司是在 1965 年开始的——当时,匹配的计算是通过 IBM 1401 大型机上的穿孔卡来实
现的。它花了三天时间来运行计算。
奇怪的是,OkCupid 和 1965 年的前辈,Compatibility Research 公司,之间是有关联的。
Compatibility Research 的联合创始人是 Jeff Tarr,他的女儿 Jennifer Tarr 是 OkCupid 联合创
始人 Chris Coyne 的妻子。世界真的很小。
为什么这些与构建推荐引擎的内容相关?这是因为该系统很可能是第一个推荐引擎。
虽然大多数人认为推荐引擎作为工具,是用于寻找和他们喜好紧密相关的产品、音乐和电
影,但最原始的应用是找到潜在的伴侣。关于这些系统如何工作,它提供了一个很好的参

10.1 协同过滤
229
考框架。
在本章中,我们将探讨不同类型的推荐系统。我们将了解它们的商业化实现,以及内
部的工作原理。最后,我们会实现自己的推荐引擎,找到适合的 GitHub 资料库。
本章将讨论以下主题。
•协同过滤。
•基于内容的过滤。
•混合系统。
•构建推荐引擎。
10.1 协同过滤
在 2012 年初,爆出了这样一则新闻故事:一位男子进入一家Target
①
对于怀孕的高中生这个案例,当她购买了无味的乳液、棉球和维生素补充剂
商店,挥舞着手中
的一叠优惠券,这些都是Target邮寄给他还在读高中的女儿的。他来的目的是谴责经理,因
为这套优惠券都是诸如婴儿服装、配方奶和幼儿家具这类商品专享的。
听到顾客的投诉,经理再三道歉。他感觉很糟糕,想在几天后通过电话跟进,解释这
是怎么回事。这个时候,反而是这位父亲在电话里进行了道歉。看来他的女儿确实是怀孕
了。她的购物习惯泄露了她的这个秘密。
出卖这位女生的算法很可能是,至少部分是,基于协同过滤。
那么,什么是协同过滤?
协同过滤(collaborative filtering)是基于这样的想法,在某处总有和你趣味相投的人。
假设你和趣味相投的人们评价方式都非常类似,而且你们都已经以这种方式评价了一组特
定的项目,此外,你们每个人对其他人尚未评价的项目也有过评价。正如已经假设的那样,
你们的口味是类似的,因此可以从趣味相投的人们那里,提取具有很高评分而你尚未评价
的项目,作为给你的推荐,反之亦然。在某种程度上,这点和数字化配对非常相像,但结
果是你喜欢的歌曲或产品,而不是与异性的约会。
②
①译者注:Target 是美国知名的零售连锁店。
②译者注:这些是刚刚怀孕的母亲会经常购买的。
之后,

230
第 10 章构建推荐引擎
她可能就和那些稍后继续购买婴儿床和尿布的人匹配上了。
10.1.1 基于用户的过滤
让我们通过一个例子来看看实践中这是如何运作的。
我们将从被称为效用矩阵(utility matrx)的东西开始。它和词条-文档矩阵相类似,不
过这里我们表示的是产品和用户,而不再是词条和文档。
这里,我们假设有顾客 A 到 D,以及他们所评分的一组产品,评分从 0 到 5,如表 10-1
所示。
表 10-1
Snarky'sPo
tato Chips
SoSoSmooth
Lotion
Duffly
Beer
BetterTap
Water
XXLargeLivin'
Football Jersey
SnowyCott
onBalls
Disposos'Di
apers
A
4 5 3 5
B
4 4 5
C
2 2 1
D
5 3 5 4
之前我们看到,当想要查找类似的项目时,可以使用余弦相似度。让我们在这里试试。
我们将为用户 A 发现最相似的其他顾客。由于这里的向量是稀疏的,包含了许多未评分的
项目,我们将在这些缺失的地方输入一些默认值。这里填入 0。我们从用户 A 和用户 B 的
比较开始。
fromsklearn.metrics.pairwise import cosine_similarity
cosine_similarity(np.array([4,0,5,3,5,0,0]).reshape(1,-1),\
np.array([0,4,0,4,0,5,0]).reshape(1,-1))
上述代码生成图 10-1 的输出。
我们可以看到,这两者没有很高的相似性,这是有道理的,因为他们没有多少共同的评分。
现在来看看用户 C 与用户 A 的比较。
cosine_similarity(np.array([4,0,5,3,5,0,0]).reshape(1,-1),\
np.array([2,0,2,0,1,0,0]).reshape(1,-1))
上述代码生成图 10-2 的输出。
图 10-1 图 10-2

10.1 协同过滤
231
这里,我们看到他们有很高的相似度(记住 1 是完美的相似度),尽管他们对同样产品
的评价有所不同。为什么得到了这样的结果?
①
问题在于我们对没有评分的产品,选择使用
0 分。它表示强烈的(负的)一致性。在这种情况下,0 不是中性的。
那么,如何解决这个问题?
我们可以做的是重新生成每位用户的评分,并使得平均分变为 0 或中性,而不是为缺失值
简单地使用 0。我们拿出每位用户的评分,将其减去该用户所有打分的平均值。例如,对于用户
A,他打分的平均值为 17/4,或 4.25。然后我们从用户 A 提供的每个单独评分中减去这个值。
一旦完成,我们继续找到其他用户的平均值,从他们的每个评分中减去该均值,直到
对每位用户完成该项操作。
这个过程后将产生表 10-2。请注意,每行的用户评分总和为 0 (这里忽略四舍五入带
来的问题)。
表 10-2
Snarky's
Potato Chips
SoSo
SmoothLotion
Duffly
Beer
BetterTap
Water
XXLargeLivin'
Football Jersey
SnowyCot
tonBalls
Disposos'
Diapers
A
-0.25 0.75 -1.25 0.75
B
-0.33 -0.33 0.66
C
0.33 0.33 -0.66
D
0.75 -1.25 0.75 -0.25
让我们在新的数据集上尝试余弦相似度。再次将用户 A 和用户 B、C 进行比较。
首先,A 和 B 之间的比较如下。
cosine_similarity(np.array([-.25,0,.75,-1.25,.75,0,0])\
.reshape(1,-1),\
np.array([0,-.33,0,-.33,0,.66,0])\
.reshape(1,-1))
上述代码生成图 10-3 的输出。
现在,我们试试看 A 和 C。
cosine_similarity(np.array([-.25,0,.75,-1.25,.75,0,0])\
.reshape(1,-1),\
①译者注:作者的意思是,A 和 C 对相同项目的评分有较大差距,他们不应该有如此高的相似度。
剩余23页未读,继续阅读
资源评论


好知识传播者
- 粉丝: 1694
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据对档案管理工作的影响与对策.docx
- 互联网思维教育学习模板.ppt
- 应急通信保障预案.doc
- 四教程网络工程师(版).doc
- pythonwebdriver自动化测试实战.doc
- 第一节Web技术与网站制作流程.doc
- 大数据分析技术在采集运维业务中的应用.docx
- 大规模Redis集群服务治理方案.pdf
- 水利工程信息化管理策略.docx
- 树突神经网络在前支点挂篮结构响应预测中的运用.docx
- 计算机技术在机械设计制造及其自动化中的应用.docx
- 论农村公路施工项目管理.docx
- C语言的学生成绩管理.doc
- 信息技术时代下网络语言发展现状研究.docx
- PLC课程设计方案报告三人抢答器.doc
- java语言基础重点知识0.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
