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

目录


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

数据介绍

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

已经采集到的数据如下:

用户 复仇者 钢铁侠 爱情故事 雷神
小明 5 4 - 2
小红 4 5 3 -
小刚 1 2 5 4

目标:

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

数据映射

数组:

\[ 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分),相似度低。

  • 结论:小红和小明兴趣最接近。

补充

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

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

看图理解,

两根绿线的夹角较小,表示更相似。

一个绿线和蓝线所形成的夹角大,就相对没那么相似。

扩展

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

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

预测偏好

简单预测

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

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

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

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

采用加权(多用户加权)

加权平均的原理

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

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

总结

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

  • 二维矩阵
  • 余弦相似
  • 加权平均
相关推荐
叫我:松哥1 天前
基于 Flask 框架开发的在线学习平台,集成人工智能技术,提供分类练习、随机练习、智能推荐等多种学习模式
人工智能·后端·python·学习·信息可视化·flask·推荐算法
叫我:松哥2 天前
基于Flask框架开发的智能旅游推荐平台,采用复合推荐算法,支持管理员、导游、普通用户三种角色
python·自然语言处理·flask·旅游·数据可视化·推荐算法·关联规则
虫小宝2 天前
电商AI导购系统设计:基于深度学习的商品推荐算法与架构实践
人工智能·深度学习·推荐算法
计算机学姐2 天前
基于SpringBoot的高校体育场馆预约系统【个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
邴越2 天前
深度解析TikTok运营的流量池推荐算法
算法·机器学习·推荐算法
叫我:松哥3 天前
基于Spark智能推荐算法的农业作物推荐系统,推荐算法使用Spark ML风格推荐引擎
大数据·python·机器学习·spark-ml·spark·flask·推荐算法
2501_941879813 天前
在迪拜跨地域业务场景中构建多活数据中心架构的工程实践与系统治理思路
模拟退火算法·推荐算法
叫我:松哥3 天前
基于 Flask 的音乐推荐与可视化分析系统,包含用户、创作者、管理员三种角色,集成 ECharts 进行数据可视化,采用混合推荐算法
开发语言·python·信息可视化·flask·echarts·pandas·推荐算法
2501_941866373 天前
在班加罗尔大规模微服务场景中构建动态监控与服务治理平台的工程设计实践经验分享
支持向量机·推荐算法
2501_941822754 天前
面向资源配额与公平调度机制的互联网系统设计思路与多语言工程实现实践分享
支持向量机·宽度优先·推荐算法