协同过滤推荐算法的入门案例


推荐算法的核心是预测用户可能喜欢的内容,并据此进行推荐。这里用一个非常简单的电影推荐案例,解释最常见的协同过滤原理。

协同过滤是通过分析用户或者事物之间的相似性(“协同”),来预测用户可能感兴趣的内容并将此内容推荐给用户。这里的相似性可以是人口特征(性别、年龄、居住地等)的相似性,也可以是历史浏览内容的相似性(比如都关注过和中餐相关的内容),还可以是个人通过一定机制给予某个事物的回应(比如一些教学网站会让用户对授课人进行评分)。

比如,用户A和B都是居住在北京的年龄在20-30岁的女性,并且都关注过化妆品和衣物相关的内容。这种情况下,协同过滤可能会认为,A和B相似程度很高。于是可能会把A关注B没有关注的内容推荐给B,反之亦然。

数据介绍

假设有3个用户(小明、小红、小刚)对4部电影的评分(1~5分),未评分的用“-”表示:

已经采集到的数据如下:

用户复仇者钢铁侠爱情故事雷神
小明54-2
小红453-
小刚1254

目标:
为小明推荐他可能感兴趣的电影(比如小明对《雷神》评分低,是否要推荐给小红?小明对《爱情故事》未评分,是否需要推荐给他?)

数据映射

数组:
[[ 5, 4, 0, 2]
[ 4, 5, 3, 0]
[ 1, 2, 5, 4]]

计算相识度

推荐的原理就是计算目标用户和其他用户的相识度,推荐相识度高的用户喜欢的作品给他。

找到相似用户的步骤:(常用方法:余弦相似度)

  • 小明 vs 小红:共同评分的电影是《复仇者》《钢铁侠》。

    • 小明的评分向量:[5, 4]
    • 小红的评分向量:[4, 5]
    • 余弦相似度 = (5×4 + 4×5) / (√(5²+4²) × √(4²+5²)) ≈ 0.98(非常相似)
  • 小明 vs 小刚:共同评分的电影是《雷神》,但小明和小刚对《雷神》评分差异大(小明2分,小刚4分),相似度低。

  • 结论:小红和小明兴趣最接近。
    余弦相似度越接近1,说明两个向量的方向越一致,即“偏好模式”越相似。

补充

余弦相似度(Cosine Similarity)是一种衡量两个向量方向相似程度的指标,常用于推荐系统、文本分析等领域。它的核心思想是:通过计算两个向量之间的夹角余弦值,判断它们的方向是否接近。方向越接近,余弦值越接近1;方向相反则接近-1;垂直则为0。

image

余弦相似度 = A * B / ||A|| * ||B|| = (5×4 + 4×5) / (√(5²+4²) × √(4²+5²)) ≈ 0.98(非常相似)

看图理解,下图数据和上面的案例无关,只做理解。
image

A,B 所形成的夹角较小,表示更相似。
A,C 所形成的夹角较大,就相对没那么相似。

image

扩展

  • 基于内容的推荐:分析电影特征(如类型、导演),推荐相似属性的电影(如喜欢《钢铁侠》→ 推荐科幻片)。

  • 混合推荐:结合协同过滤和内容过滤,提高准确性。

预测偏好

简单预测

假设要预测小明对《爱情故事》的评分,已知:

  • 小红与小明相似度 0.98,对《爱情故事》评分为 3;

  • 小刚与小明相似度 1.0,对《爱情故事》评分为 5。

则直接取平均:(3+5)/2=4 (但未考虑相似度差异。)

采用加权(多用户加权)

加权平均的原理
核心思想:相似度高的用户意见更重要,应赋予更高权重。

image

image

预测小明对《爱情故事》电影的评分是 4.01分,评分较高,值得推荐。

总结

案例很简单,主要用到如下数学概念:

  • 二维矩阵
  • 余弦相似
  • 加权平均
原创作者: mysticbinary 转载于: https://www.cnblogs.com/mysticbinary/p/18842437
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值