会员中心 |  会员注册  |  兼职信息发布    浏览手机版!    精选9.9元!    人工翻译    英语IT服务 贫困儿童资助 | 留言板 | 设为首页 | 加入收藏  繁體中文
当前位置:首页 > 机翻技术 > 识别技术 > 正文

基于协同过滤的推荐引擎

发布时间: 2023-04-01 09:47:00   作者:etogether.net   来源: 网络   浏览次数:
摘要: 协同过滤是通过将用户和其他用户的数据进行对比来实现推荐的。


近十年来,推荐引擎对因特网用户而言已经不是什么新鲜事物了。Amazon会根据顾客的购买历史向他们推荐物品,Netflix会向其用户推荐电影,新闻网站会对用户推荐新闻报道,这样的例子还有很多很多。当然,有很多方法可以实现推荐功能,这里我们只使用一种称为协同过滤(collaborative filtering)的方法。协同过滤是通过将用户和其他用户的数据进行对比来实现推荐的。


这里的数据是从概念上组织成了类似图1所给出的矩阵形式。当数据采用这种方式进行组织时,我们就可以比较用户或物品之间的相似度了。这两种做法都会使用我们很快就介绍到的相似度的概念。当知道了两个用户或两个物品之间的相似度,我们就可以利用已有的数据来预测未知的用户喜好。例如,我们试图对某个用户喜欢的电影进行预测,推荐引擎会发现有一部电影该用户还没看过。然后,它就会计算该电影和用户看过的电影之间的相似度,如果其相似度很高,推荐算法就会认为用户喜欢这部电影。


图1.png

在上述场景下,唯一所需要的数学方法就是相似度的计算,这并不是很难。接下来,我们首先讨论物品之间的相似度计算,然后讨论在基于物品和基于用户的相似度计算之间的折中。最后,我们介绍推荐引擎成功的度量方法。


1. 相似度计算

我们希望拥有一些物品之间相似度的定量方法。那么如何找出这些方法呢?倘若我们面对的是食品销售网站,该如何处理?或许可以根据食品的配料、热量、某个烹调类型的定义或者其他类似的信息进行相似度的计算。现在,假设该网站想把业务拓展到餐具行业,那么会用热量来描述一个叉子吗?问题的关键就在于用于描述食品的属性和描述餐具的属性有所不同。倘若我们使用另外一种比较物品的方法会怎样呢?我们不利用专家所给出的重要属性来描述物品从而计算它们之间的相似度,而是利用用户对它们的意见来计算相似度。这就是协同过滤中所使用的方法。

它并不关心物品的描述属性,而是严格地按照许多用户的观点来计算相似度。图2 给出了由一些用户及其对前面给出的部分菜肴的评级信息所组成的矩阵。


图2.png

图2 用于展示相似度计算的简单矩阵


我们计算一下手撕猪肉和烤牛肉之间的相似度。一开始我们使用欧氏距离来计算。手撕猪肉和烤牛肉的欧氏距离为:


式1.png

而手撕猪肉和鳗鱼饭的欧氏距离为:


式2.png


在该数据中,由于手撕猪肉和烤牛肉的距离小于手撕猪肉和鳗鱼饭的距离,因此手撕猪肉与烤牛肉比与鳗鱼饭更为相似。我们希望,相似度值在0到1之间变化,并且物品对越相似,它们的相似度值也就越大。我们可以用“相似度=1/(1+距离)”这样的算式来计算相似度。当距离为0时,相似度为1.0。如果距离真的非常大时,相似度也就趋近于0。


第二种计算距离的方法是皮尔逊相关系数(Pearson correlation)。度量回归方程的精度时会用到过这个量,它度量的是两个向量之间的相似度。该方法相对于欧氏距离的一个优势在于,它对用户评级的量级并不敏感。比如某个狂躁者对所有物品的评分都是5分,而另一个忧郁者对所有物品的评分都是1分,皮尔逊相关系数会认为这两个向量是相等的。在NumPy中,皮尔逊相关系数的计算是由函数corrcoef()进行的,后面我们很快就会用到它了。皮尔逊相关系数的取值范围从-1到+1,我们通过0.5+0.5*corrcoef()这个函数计算,并且把其取值范围归一化到0到1之间。



微信公众号

[1] [2] [下一页] 【欢迎大家踊跃评论】
我来说两句
评分: 1分 2分 3分 4分 5分
评论内容:
验证码:
【网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。】
评论列表
已有 0 条评论(查看更多评论)