【无监督机器学习】9.推荐系统
推荐系统
推荐系统的定义
推荐系统是利用用户产生的行为数据,对用户的兴趣进行建模,从而给用户推荐可能感兴趣的物品。
推荐系统的应用
- 电商网站
- 新闻网站
- 流媒体平台
协同过滤
协同过滤是一种基于用户行为的推荐算法,它的基本思想是利用用户的历史行为数据,计算用户之间的相似度,然后根据相似度为用户生成推荐列表。
以电影网站预测为例,有以下数据:
电影名称 | 用户1 | 用户2 | 用户3 | 用户4 | (爱情) | (动作) |
---|---|---|---|---|---|---|
电影1 | 5 | 5 | 0 | 0 | 0.9 | 0 |
电影2 | 5 | ? | ? | 0 | 1 | 0 |
电影3 | ? | 4 | 0 | ? | 0.99 | 0 |
电影4 | 0 | 0 | 5 | 4 | 0 | 1 |
电影5 | 0 | 0 | 5 | ? | 0 | 0.9 |
对于每一个电影可能的类型,我们可以定义一个特征,比如表示爱情,表示动作。记为,其中表示电影的编号。
以电影1为例,,表示电影1的类型为爱情。
参数W和的学习
预测用户对电影评分的公式为:
其中,表示用户的参数,表示用户的偏置。
评分预测的损失函数为:
其中,表示用户的数量,表示特征的数量,表示用户是否对电影评分。
参数X的学习
电影类型预测是的损失函数为:
其中,表示电影的数量,表示特征的数量,表示用户是否对电影评分。
协同过滤算法
协同过滤的损失函数
将上面两个损失函数合并,得到协同过滤的损失函数:
协同过滤的梯度下降
对于参数,,,它们的梯度分别为:
梯度下降的更新公式为:
二元标签分类
二元标签分类中,用户对电影的评价只有两种情况,例如:是否点赞、是否收藏等。
分类公式
预测用户二元评价的公式为:
其中,表示Sigmoid函数。
损失函数
损失函数为:
均值归一化
对于未评分的新用户,利用原始数据(0-5分)进行预测,会导致预测结果均为0分。
为了解决这个问题,我们可以对原始数据进行均值归一化。
原始数据的计算公式为:
用户的预测公式为:
相似度计算
相似度计算是协同过滤算法的核心,它的目的是计算用户之间的相似度,从而为用户生成推荐列表。
欧式距离
欧式距离是最常用的相似度计算方法,它的计算公式为:
协同过滤求相似度的缺点
-
冷启动问题
对于新用户,由于没有历史行为数据,无法计算用户之间的相似度。 -
无法使用用户的其他信息
对于用户的其他信息,比如年龄、性别等,无法利用这些信息计算用户之间的相似度。
基于内容的推荐系统
基于内容的推荐系统是一种基于物品的推荐算法,它的基本思想是利用物品的特征,计算物品之间的相似度,然后根据相似度为用户生成推荐列表。
基于内容的推荐系统和协同过滤的区别在于,基于内容的推荐系统是基于物品或用户的特征,而协同过滤是基于用户的评分数据。
基于内容的推荐系统的过程
- 特征提取
对于物品,我们可以定义一些特征,比如电影的类型、电影的导演、电影的演员等。 - 特征向量维度压缩
不同的向量之间进行点积运算,须保持向量的维度一致,通过特征向量压缩,可以减少向量的维度,从而提高运算效率。
- 特征相似度计算
深度学习在推荐系统中的应用
维度压缩
为了将特征向量压缩到相同低维度,我们可以使用深度学习实现。
相似度计算
深度学习的损失函数为:
其中,表示用户的特征向量,表示物品的特征向量,表示用户对物品的评分。
相似度计算的公式为:
预测过程如图所示:
大型数据集的处理
系统中可能被推荐的数目往往是非常大的,比如电商网站可能有上百万的商品,流媒体平台可能有上万部电影。
对于这种大型数据集,可以使用检索和排名的方法进行推荐
检索
- 生成一系列候选物品
以电影推荐为例,可选的候选方式有:用户看过最接近的电影、用户最喜欢题材中的热门电影,所在地区最热门的电影等。
- 合并候选物品:去除重复的物品以及用户已经看过的物品
排名
+利用深度学习计算用户对候选物品的评分
+对评分进行排序,得到最终的推荐列表
本文作者:asdio
本文链接:https://www.cnblogs.com/agitm/p/17778669.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」