第六章:推荐算法

目录

第一部分:我们如何了解用户?(数据基础)

第二部分:协同过滤 (Collaborative Filtering)

[1. 基于用户 (UserCF): "你的邻居喜欢啥,我就推给你啥"](#1. 基于用户 (UserCF): “你的邻居喜欢啥,我就推给你啥”)

[2. 基于物品 (ItemCF): "你买了 X,通常大家也会买 Y"](#2. 基于物品 (ItemCF): “你买了 X,通常大家也会买 Y”)

[UserCF vs ItemCF 一图胜千言](#UserCF vs ItemCF 一图胜千言)

[第三部分:隐语义模型 (LFM) ------ 挖掘潜规则](#第三部分:隐语义模型 (LFM) —— 挖掘潜规则)

核心思想:矩阵分解

怎么算出来的?

[进阶:考虑偏差 (Bias) 的推荐](#进阶:考虑偏差 (Bias) 的推荐)

第四部分:如何评价推荐系统好不好?

总结


你的手机比你更懂你?揭秘推荐系统背后的算法逻辑

在这个信息爆炸的时代,互联网每分钟都在产生海量的数据:数百万条搜索、几十万条推文、海量的订单 。我们面临的问题不再是"找不到信息",而是"信息太多,找不到我感兴趣的"。

这就是推荐系统(Recommendation System)存在的意义。从今日头条的新闻,到京东的商品,再到豆瓣的电影,推荐系统无处不在,它占据了亚马逊35%的销售额,贡献了巨额的转化率。

今天,我们就来扒一扒推荐系统背后的核心算法:协同过滤隐语义模型


第一部分:我们如何了解用户?(数据基础)

推荐系统不是算命,它需要依据。我们通常通过收集用户的行为来构建用户画像(User Profile)。这些行为分为两类:

  1. 显式反馈(Explicit):用户明确表达喜好。例如给电影打5星(评分)、点赞(投票)。这种数据最精确,但很难获取。

  2. 隐式反馈(Implicit):用户没有明确说"喜欢",但通过行为表现出来了。例如购买、转发、甚至只是保存书签。虽然不如评分精确,但数据量巨大。


第二部分:协同过滤 (Collaborative Filtering)

这是推荐系统中最经典、应用最广泛的算法。它的核心思想很简单:物以类聚,人以群分

在进行协同过滤前,我们首先要解决数学问题:如何计算相似度?

  • 欧几里得距离:计算空间中两点的距离,距离越近越相似。

  • 皮尔逊相关系数 (Pearson):衡量两个变量变化趋势的相关性,适合处理评分偏差(比如有人习惯都打高分,有人习惯都打低分)。

  • 余弦相似度 (Cosine):衡量向量方向的差异。

协同过滤主要分为两大流派:

1. 基于用户 (UserCF): "你的邻居喜欢啥,我就推给你啥"

假设用户 A 和用户 C 的口味很像(都买了物品 A 和 C),那么用户 C 买了物品 D,我们猜测用户 A 也会喜欢物品 D。

  • 适用场景:实时新闻、社交网络(如今日头条)。

  • 原因:用户的兴趣变化快,但群体的兴趣相对稳定;而且新闻等物品更新太快,难以维护物品相似度矩阵。

  • 缺点:新用户很难推荐(冷启动),且用户量过大时计算困难。

2. 基于物品 (ItemCF): "你买了 X,通常大家也会买 Y"

这不是看用户像不像,而是看物品像不像。如果很多人在买啤酒的同时都买了尿布,那这两个物品就是"相似"的。当你买了啤酒,系统就推荐尿布。

  • 适用场景:电商(亚马逊、京东)、电影。

  • 原因:物品的数量通常远少于用户数量,且物品之间的关系比较稳定(买了手机通常会买手机壳,这个规律很久不变),适合预先计算。

  • 优势:由于是基于你自己的历史行为推荐,理由更容易解释("因为你购买了...")。

UserCF vs ItemCF 一图胜千言

特性 UserCF (基于用户) ItemCF (基于物品)
性能 适合用户较少的场合 适合物品数少于用户数的场合
领域 时效性高(新闻) 长尾物品丰富(电商)
冷启动 新物品上线容易推荐给老用户 新用户只要有一个行为就能推荐
推荐理由 难解释 易解释

第三部分:隐语义模型 (LFM) ------ 挖掘潜规则

协同过滤虽然好用,但面对海量且稀疏的数据(比如几亿用户,几亿商品,绝大多数用户没买过绝大多数商品),矩阵会空得可怕。

这时,我们需要隐语义模型 (Latent Factor Model)

核心思想:矩阵分解

我们不需要强行找用户和物品的直接对应,而是通过一个"中介"------隐含因子 (Latent Factor)

假设我们把评分矩阵 分解为两个矩阵的乘积:

  • :用户-隐含因子矩阵(代表用户对各隐类别的喜好)。

  • :隐含因子-物品矩阵(代表物品属于各隐类别的权重)。

比如,我们设定 个隐含因子(可能是动作、爱情、科幻,虽然机器计算时并不知道具体名字,只知道是某种特征)。LFM 会自动学习出:用户 A 喜欢"因子 1",而电影 B 刚好"因子 1"的权重很高,所以推荐电影 B。

怎么算出来的?

主要通过梯度下降 (Gradient Descent) 来迭代求解。我们要最小化预测分与真实分之间的误差平方和,同时为了防止过拟合,会加入正则化项

进阶:考虑偏差 (Bias) 的推荐

现实中,有些用户就是爱打低分(User Bias),有些电影本身就是高分神作(Item Bias)。一个成熟的预测公式不仅仅看匹配度,还要考虑这些偏差:

  • :全局平均分。

  • :用户 x 的偏见(比如他总是比平均分低 1 分)。

  • :物品 i 的偏见(比如这电影总是比平均分高 0.5 分)。

  • :真正的用户与物品的交互匹配度。


第四部分:如何评价推荐系统好不好?

做好了推荐系统,怎么知道它准不准?我们有几个核心指标:

  1. 准确度 (RMSE):预测评分和真实评分差多少?越小越好。

  2. 召回率 (Recall):用户喜欢的东西,你推荐出来了多少?

  3. 覆盖率 (Coverage):能不能挖掘出长尾商品?如果只推荐热门商品,覆盖率就很低。

  4. 多样性 (Diversity):推荐列表里的东西是不是太单一了?


总结

推荐系统本质上是在解决连接问题。

  • 如果你有社交关系链,UserCF 是好选择;

  • 如果你是卖货的,关注商品关联,ItemCF 更稳健;

  • 如果你数据量巨大且稀疏,想要挖掘深层兴趣,隐语义模型 值得尝试。

相关推荐
Tisfy2 小时前
LeetCode 3510.移除最小数对使数组有序 II:有序集合
算法·leetcode·题解·设计·有序集合
汉克老师3 小时前
GESP2025年9月认证C++五级真题与解析(单选题9-15)
c++·算法·贪心算法·排序算法·归并排序·gesp5级·gesp五级
人工智能培训3 小时前
数字孪生应用于特种设备领域的技术难点
人工智能·机器学习·语言模型·数字孪生·大模型幻觉·数字孪生应用
张祥6422889043 小时前
误差理论与测量平差基础笔记七
线性代数·机器学习·numpy
lihao lihao3 小时前
c++红黑树
算法
Sarvartha3 小时前
递推与递归笔记
算法
TracyCoder1234 小时前
LeetCode Hot100(1/100)——1. 两数之和 (Two Sum)
算法·leetcode
进击的小头4 小时前
常用数字滤波器的特性与适用场景
c语言·算法
bst@微胖子4 小时前
LlamaIndex之Workflow工作流案例
人工智能·机器学习