[推荐系统]--协同过滤算法和隐语义模型

协同过滤

协同过滤主要包含基于用户的协同过滤基于商品的协同过滤

1. 基于用户的协同过滤

a. 找到和用户最近的其它用户,找到他们看/买过但当前用户没看/买过的item,根据距离加权打分。
b.找得分最高的items进行推荐

基于用户的协同过滤和基于物品的协同过滤相似

步骤:
a. 对每个用户的所有评分减去其均值,将某用户未打分的item设为0
b. 计算当前用户评分和其余用户的Person相似度
c. 选取TopK个为正的相似度,加权得分

2. 基于物品的协同过滤

根据用户对商品/内容的行为,计算item之间的相似度,找到和当前item最近的进行推荐。

示例:


步骤:
a. 对每场电影的评分减去其均值,将某用户未打分的item设为0
b. 计算当前电影评分和其余电影的Person相似度
c. 选取TopK个为正的相似度,加权得分

在工业界,绝大数为基于item的协同过滤。
a.因为用户太多了,相似度计算量太大。
b.item是固定不变的,user的变化性较强,itemCF的稳定性高

3.相似度/距离度量
  • 欧氏距离
    D1,2=(x1x2)2+(y1y2)2D1,2=(x1−x2)2+(y1−y2)2
  • Jaccard相似度
    J(A,B)=|AB|AB|J(A,B)=|A∩B|A∪B|

    狭义Jaccard相似度,计算两个集合之间的相似程度,元素的“取值”为0或1
  • 余弦相似度
    cos(θ)=aTb|a|·|b|cos(θ)=aTb|a|·|b|
  • Pearson相似度
    ρX,Y=cov(X,Y)σXσYρX,Y=cov(X,Y)σXσY
4.冷启动“问题”

对于新用户:
a. 推荐hot
b. 用户注册,勾选感兴趣的item
c.用户注册完,用一些互动游戏等确定喜欢和不喜欢。
对于新商品
根据当前item的属性,求与其它item的相似性

隐语义模型

现有一个用户对电影评分矩阵,通过预测,尽量将未打分的项进行打分。
我们假定:应该有一些隐藏因子,影响用户的评分,隐藏因子小于user和item数。
因此,我们首先想到的就是SVD矩阵分解,过程如下:

1.SVD矩阵分解

假设R为打分矩阵,有K个隐含变量,我们需要找到矩阵P(U*K)和Q(D*K)

采用梯度下降:
a. 定义目标函数:

b. 求梯度和偏导,更新迭代公式:

c. 还原回矩阵乘积,即可补充未打分项

2.隐语义模型进一步优化

μμ为用户的平均打分
bxbx为用户偏置:有一部分用户就喜欢打很高或很低的分
bibiitem偏置:这部电影很多人打了5分,很少人打了3分
则加上偏置后的隐语义模型的损失函数为:

对上述公式求偏导,并用梯度下降法更新迭代公式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值