你来我们毒蛇帮总部干什么|

asdio

园龄:4年6个月粉丝:1关注:0

【无监督机器学习】9.推荐系统

推荐系统

推荐系统的定义

推荐系统是利用用户产生的行为数据,对用户的兴趣进行建模,从而给用户推荐可能感兴趣的物品。

推荐系统的应用

  • 电商网站
  • 新闻网站
  • 流媒体平台

协同过滤

协同过滤是一种基于用户行为的推荐算法,它的基本思想是利用用户的历史行为数据,计算用户之间的相似度,然后根据相似度为用户生成推荐列表。

以电影网站预测为例,有以下数据:

电影名称 用户1 用户2 用户3 用户4 x1(爱情) x2(动作)
电影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

对于每一个电影可能的类型,我们可以定义一个特征,比如x1表示爱情,x2表示动作。记为x(i),其中i表示电影的编号。

以电影1为例,x(1)=(0.9,0),表示电影1的类型为爱情。

参数WWb的学习

预测用户对电影评分的公式为:

y^(i,j)=W(j)x(i)+b(j)

其中,W(j)表示用户j的参数,b(j)表示用户j的偏置。

评分预测的损失函数为:

J(W(1),...,W(nu),b(1),...,b(nu))=12j=1nui:r(i,j)=1((W(j)x(i)+b(j))y(i,j))2+λ2j=1nuk=1n((Wk(j))2)

其中,nu表示用户的数量,n表示特征的数量,r(i,j)表示用户j是否对电影i评分。

参数XX的学习

电影类型预测是的损失函数为:

J(X(1),...,X(nm))=12i=1nmj:r(i,j)=1((W(j)x(i)+b(j))y(i,j))2+λ2i=1nmk=1n((Xk(i))2)

其中,nm表示电影的数量,n表示特征的数量,r(i,j)表示用户j是否对电影i评分。

协同过滤算法

协同过滤的损失函数

将上面两个损失函数合并,得到协同过滤的损失函数:

J(X,W,b)=12(i,j):r(i,j)=1((W(j)x(i)+b(j))y(i,j))2+λ2i=1nmk=1n((Xk(i))2)+λ2j=1nuk=1n((Wk(j))2)

协同过滤的梯度下降

对于参数XWb,它们的梯度分别为:

JXk(i)=j:r(i,j)=1((W(j)x(i)+b(j))y(i,j))Wk(j)+λXk(i)JWk(j)=i:r(i,j)=1((W(j)x(i)+b(j))y(i,j))Xk(i)+λWk(j)Jbk(j)=i:r(i,j)=1((W(j)x(i)+b(j))y(i,j))

梯度下降的更新公式为:

Xk(i):=Xk(i)αJXk(i)Wk(j):=Wk(j)αJWk(j)bk(j):=bk(j)αJbk(j)

二元标签分类

二元标签分类中,用户对电影的评价只有两种情况,例如:是否点赞、是否收藏等。

分类公式

预测用户二元评价的公式为:

y^(i,j)=σ(W(j)x(i)+b(j))

其中,σ表示Sigmoid函数。

损失函数

损失函数为:

J(W(1),...,W(nu),b(1),...,b(nu))=1mj=1nui=1m(y(i,j)log(y^(i,j))+(1y(i,j))log(1y^(i,j)))+λ2j=1nuk=1n((Wk(j))2)

均值归一化

对于未评分的新用户,利用原始数据(0-5分)进行预测,会导致预测结果均为0分。

为了解决这个问题,我们可以对原始数据进行均值归一化。

原始数据的计算公式为:

Y=Yμ,μ=1ni=1nYi

用户的预测公式为:

y^(i,j)=σ(W(j)x(i)+b(j))+μi

相似度计算

相似度计算是协同过滤算法的核心,它的目的是计算用户之间的相似度,从而为用户生成推荐列表。

欧式距离

欧式距离是最常用的相似度计算方法,它的计算公式为:

d(x,y)=i=1n(xiyi)2

协同过滤求相似度的缺点

  1. 冷启动问题
    对于新用户,由于没有历史行为数据,无法计算用户之间的相似度。

  2. 无法使用用户的其他信息
    对于用户的其他信息,比如年龄、性别等,无法利用这些信息计算用户之间的相似度。

基于内容的推荐系统

基于内容的推荐系统是一种基于物品的推荐算法,它的基本思想是利用物品的特征,计算物品之间的相似度,然后根据相似度为用户生成推荐列表。

基于内容的推荐系统和协同过滤的区别在于,基于内容的推荐系统是基于物品或用户的特征,而协同过滤是基于用户的评分数据。

基于内容的推荐系统的过程

  1. 特征提取
    对于物品,我们可以定义一些特征,比如电影的类型、电影的导演、电影的演员等。
  2. 特征向量维度压缩
    不同的向量之间进行点积运算,须保持向量的维度一致,通过特征向量压缩,可以减少向量的维度,从而提高运算效率。
    img
  3. 特征相似度计算

深度学习在推荐系统中的应用

维度压缩

为了将特征向量压缩到相同低维度,我们可以使用深度学习实现。
img

相似度计算

深度学习的损失函数为:

J=i,j:r(i,j)=1(vu(j)vi(i)y(i,j))2+λi=1nm||vi(i)||2+λj=1nu||vu(j)||2

其中,vu(j)表示用户j的特征向量,vi(i)表示物品i的特征向量,y(i,j)表示用户j对物品i的评分。

相似度计算的公式为:

d=||vu(k)vu(i)||2

预测过程如图所示:
img

大型数据集的处理

系统中可能被推荐的数目往往是非常大的,比如电商网站可能有上百万的商品,流媒体平台可能有上万部电影。

对于这种大型数据集,可以使用检索和排名的方法进行推荐

检索

  • 生成一系列候选物品

    以电影推荐为例,可选的候选方式有:用户看过最接近的电影、用户最喜欢题材中的热门电影,所在地区最热门的电影等。

  • 合并候选物品:去除重复的物品以及用户已经看过的物品

排名

+利用深度学习计算用户对候选物品的评分
+对评分进行排序,得到最终的推荐列表

本文作者:asdio

本文链接:https://www.cnblogs.com/agitm/p/17778669.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   asdio  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起