《Programming Collective Intelligence》笔记之 Chapter 2

对欧几里德距离(Euclidean Distance)的理解

假设主体为 a, 对主体的评价为 a1, a2, a3

假设主体为 b, 对主体的评价为 b1, b2, b3

设某坐标系有 x1, x2, x3 三条坐标轴,则 a, b 在此坐标系中的坐标可以表示为 (a1, a2, a3) 和 (b1, b2, b3)

而 a 与 b 的距离即可作为它们的相似程度,距离越近越相似。

通常情况下,a与b的相似度取距离的倒数:Similarity(a,b) = 1/Distance(a, b)

优点

  • 方便理解,日后凡是要求2种物品的相似度,都可以先在脑海中想像一个坐标系上的2个点,然后再去思考它们的维度应该是什么。对于电影来说,维度为评分,对于链接来说,维度是访问量。

缺点

  • 可参考维度越多,相似度越小。
    • 假设平面上2个点 a(0,0), b(1,1) 此时它们的相似度是 1/(1+2) = 1/3
    • 假设增加一个维度后,变成 a(0,0,0), b(1,1,1),则此时它们的相似度是 1/(1+3) = 1/4
    • 显然,维度增加后,它们的相似度变小了。除非新增的维度值相差为0.

对皮尔森相关系数(Pearson Correlation Coefficient)的理解

同样计算 a, b 两个产品的相似度,分别以 a, b 的评价为 x, y 坐标轴,则可得到3个点 (a1, b1), (a2, b2), (a3, b3) 通过计算这3个点在坐标系中的相关系数,可得到相似度。

优点

  • 相对于 Euclidean Distance 来说,数据越多越准确

所谓 User-based Filtering 和 Item-Based Filtering

设产品数量为 m, 用户数量为 n, 现需要为用户推荐他感兴趣,但还没购买的产品。

User-based Filtering 的做法

  1. 算出其他用户与当前用户的相似度
    1. 遍历用户
      1. 遍历产品
  2. 以其他用户为媒介,算出对未购买产品的兴趣度
    1. 遍历用户
      1. 遍历未购买产品

Item-based Filtering 的做法

  • 算出所有产品的相似度
    • 遍历产品
      • 遍历产品
  • 以已购买产品为媒介,算出未购买产品的兴趣度
    • 遍历已购买产品
      • 遍历未购买产品

总结

  • 两者都需要3个要素,(用户,用户,产品),或(用户,产品,产品)
  • 一个利用用户与用户之间的相似度,计算出产品的兴趣度
  • 另一个利用产品与产品之间的相似度,计算出产品的兴趣度
  • User-based 仅适用于紧致型(dense)数据,计算量大,不可分步骤计算
  • Item-based 可适用于稀疏型(sparse)数据,计算量小,并可分步骤计算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的安徒生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值