推荐算法-lfm

推荐算法

lfm -latent factor model

隐语义模型

它是个啥?

点击矩阵:
item 1item 2item 3
user 1100
user 2010
user 3110

user i 表示第i号用户,item j表示第j号产品
矩阵表示,用户对产品是否有点击,若点击,则为1,未点击,则为0
我们从这个矩阵分解出每个 item 的向量和每个 user 的向量:

u s e r 1 = [ 0.325 , 0.456....0.768 ] i t e m 1 = [ 0.215 , 0.569...0.568 ] u s e r 1 ∗ i t e m 1 = 常 数 这 个 常 数 表 明 u s e r 1 对 i t e m 1 的 喜 好 程 度 user 1=[0.325,0.456....0.768]\\ item 1=[0.215,0.569...0.568]\\ user1*item1=常数\\ 这个常数表明user1对item1的喜好程度 user1=[0.325,0.456....0.768]item1=[0.215,0.569...0.568]user1item1=user1item1

算法的应用:

知道了简单原理后,我们便可以理解一下应用:

计算用户的toplike:可计算特定用户对每一个item的喜爱程度
计算item的topsim:计算特定item与其他item的相似程度,
计算item的topic:聚类方法,把不同的item聚成不同的类
我们如何从矩阵中分解向量?

采用“监督学习”的思想,初始化时对向量设置随机值
列出损失函数,然后梯度下降,得到各个item及user的向量。

分解的具体流程

设置隐特征数量F个,随机初始化所有item及user 的向量
计算loss函数:u表示user,i表示item,D表示样本集
p(u,i)表示实际情况下u对i是否有点击
P_lfm(u,i)表示用u和i向量计算得到的预测值
p_u表示u的向量
q_i表示i的向量
p_uf表示u的向量第f维(是一个我们想求的数,也就是在下面的式子中是一个自变量)
l o s s = ∑ ( u , i ) ∈ D { ( P ( u , i ) − P l f m ( u , i ) ) 2 + λ ∣ p u ∣ 2 + λ ∣ q i ∣ 2 } loss=\sum_{(u,i)\in D}\{(P(u,i)-P_{lfm}(u,i))^2+\lambda |p_u|^2+\lambda |q_i|^2\} loss=(u,i)D{(P(u,i)Plfm(u,i))2+λpu2+λqi2}

P l f m ( u , i ) = p u T ∗ q i = ∑ f = 1 F p u f ∗ q i f P_{lfm}(u,i)=p_u^T*q_i=\sum_{f=1}^Fp_{uf}*q_{if} Plfm(u,i)=puTqi=f=1Fpufqif

δ l o s s δ p u f = ∑ ( u , i ) ∈ D δ l o s s δ P l f m ( u , i ) ∗ δ P l f m ( u , i ) δ p u f + 2 α ∣ p u f ∣ \frac{\delta loss}{\delta p_{uf}}=\sum_{(u,i)\in D}\frac{\delta loss}{\delta P_{lfm}(u,i)}*\frac{\delta P_{lfm}(u,i)}{\delta p_{uf}}+2\alpha|p_{uf}| δpufδloss=(u,i)DδPlfm(u,i)δlossδpufδPlfm(u,i)+2αpuf

= − 2 ∗ ( P ( u , i ) − p u f ∗ q i f ) ∗ q i f + 2 α ∣ p u f ∣ =-2*(P(u,i)-p_{uf}*q_{if})*q_{if}+2\alpha|p_{uf}| =2(P(u,i)pufqif)qif+2αpuf

p u f = p u f + β ∗ δ l o s s δ p u f p_{uf}=p_{uf}+\beta*\frac{\delta loss}{\delta p_{uf}} puf=puf+βδpufδloss

δ l o s s δ q i f = ∑ ( u , i ) ∈ D δ l o s s δ P l f m ( u , i ) ∗ δ P l f m ( u , i ) δ q i f + 2 α ∣ p u f ∣ \frac{\delta loss}{\delta q_{if}}=\sum_{(u,i)\in D}\frac{\delta loss}{\delta P_{lfm}(u,i)}*\frac{\delta P_{lfm}(u,i)}{\delta q_{if}}+2\alpha|p_uf| δqifδloss=(u,i)DδPlfm(u,i)δlossδqifδPlfm(u,i)+2αpuf

= − 2 ∗ ( P ( u , i ) − p u f ∗ q i f ) ∗ p u f + 2 α ∣ q i f ∣ =-2*(P(u,i)-p_{uf}*q_{if})*p_{uf}+2\alpha|q_{if}| =2(P(u,i)pufqif)puf+2αqif

q i f = q i f + β ∗ δ l o s s δ q i f q_{if}=q_{if}+\beta*\frac{\delta loss}{\delta q_{if}} qif=qif+βδqifδloss

构建模型需要注意的自定义参数
隐特征个数(通常设置为10-32个)
学习速率β
正则参数α(0.01-0.05)
评价该算法
理论基础:

监督学习思想,理论基础较为完备

离线计算空间复杂度:

O(物品数目*特征数+商品数目*特征数)

计算时间复杂度:

M个用户,N个商品,S次迭代,F个隐特征
离线计算时:O(F*(N+M))
训练模型时:O(S*M*N)

在线推荐:

用户有新行为时,无法即时召回重新训练
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本教程为官方授权出品伴随着大数据时代的到来,作为发掘数据规律的重要手段,机器学习已经受到了越来越多的关注。而作为机器学习算法在大数据上的典型应用,推荐系统已成为各行业互联网公司营销体系中不可或缺的一部分,而且已经带来了真实可见的收益。目前,推荐系统和机器学习已经成为各大公司的发力重点,众多知名公司(如亚马逊、netflix、facebook、阿里巴巴、京东、腾讯、新浪、头条等)都在着眼于将蕴含在庞大数据中的宝藏发掘出来,懂机器学习算法的大数据工程师也成为了新时代最紧缺的人才。精心打造出了机器学习与推荐系统课程,将机器学习理论与推荐系统项目实战并重,对机器学习和推荐系统基础知识做了系统的梳理和阐述,并通过电影推荐网站的具体项目进行了实战演练,为有志于增加大数据项目经验、扩展机器学习发展方向的工程师提供更好的学习平台。本课程主要分为两部分,机器学习和推荐系统基础,与电影推荐系统项目实战。第一部分主要是机器学习和推荐系统基础理论的讲解,涉及到各种重要概念和基础算法,并对一些算法用Python做了实现;第二部分以电影网站作为业务应用场景,介绍推荐系统的开发实战。其中包括了如统计推荐、基于LFM的离线推荐、基于模型的实时推荐、基于内容的推荐等多个模块的代码实现,并与各种工具进行整合互接,构成完整的项目应用。通过理论和实际的紧密结合,可以使学员对推荐系统这一大数据应用有充分的认识和理解,在项目实战中对大数据的相关工具和知识做系统的回顾,并且可以掌握基本算法,入门机器学习这一前沿领域,为未来发展提供更多的选择,打开通向算法工程师的大门。谁适合学:1. 有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2. 有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3. 有较好的数学基础,希望学习机器学习和推荐系统相关算法的求职人员

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值