【Python机器学习】利用SVD简化数据——基于协同过滤的推荐引擎

有很多方法可以实现推荐功能,其中协同过滤是通过将用户和其他用户的数据进行对比来实现推荐的。

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

在上述场景下,唯一所需要的数学方法就是相似度的计算。

相似度计算

我们希望拥有一些物品之间相似度的定量方法,我们不利用专家所给出的重要属性来描述物品从而计算它们之间的相似度,而是利用用户对它们的意见来计算相似度。这就是协同过滤中所使用的方法。它并不关心物品的描述属性,而是严格的按照许多用户的观点来计算相似度。

下图给出了由一些用户及其对部分菜肴的评级信息所组成的矩阵。

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

\sqrt{(4-4)^{2}+(3-3)^{2}+(2-1)^{2}}=1

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值