缘起:

  • 在阅读Facebook论文DLRM时,涉及到了潜在因子(LF)算法,通过查询阅读有了初步了解:通过对稀疏矩阵(稀疏的原因是有未知值)R进行uv分解,得到u、v矩阵,再通过u\v中向量乘积估计R矩阵中未知值。下面转载通俗易懂的知乎帖,并对帖子中没有说清楚的部分进行了补充并以粗体形式标记。
  • 原帖标题:
    网易云音乐的歌单推荐算法是怎样的?
  • 回答内容:
    这里我想给大家介绍另外一种推荐系统,这种算法叫做潜在因子(Latent
    Factor)算法
    。这种算法是在NetFlix(没错,就是用大数据捧火《纸牌屋》的那家公司)的推荐算法竞赛中获奖的算法,最早被应用于电影推荐中。这种算法在实际应用中比现在排名第一的 @邰原朗 所介绍的算法误差(RMSE)会小不少,效率更高。我下面仅利用基础的矩阵知识来介绍下这种算法。
    算法的思想是这样:每个用户(user)都有自己的偏好,比如A喜欢带有小清新的、吉他伴奏的、王菲等元素(latent factor),如果一首歌(item)带有这些元素,那么就将这首歌推荐给该用户,也就是用元素去连接用户和音乐。每个人对不同的元素偏好不同,而每首歌包含的元素也不一样。我们希望能找到这样两个矩阵:
    一,用户-潜在因子矩阵Q,表示不同的用户对于不用元素的偏好程度,1代表很喜欢,0代表不喜欢。比如下面这样:

二,潜在因子-音乐矩阵P,表示每种音乐含有各种元素的成分,比如下表中,音乐A是一个偏小清新的音乐,含有小清新这个Latent Factor的成分是0.9,重口味的成分是0.1,优雅的成分是0.2……

利用这两个矩阵,我们能得出张三对音乐A的喜欢程度是:张三对小清新的偏好音乐A含有小清新的成分+对重口味的偏好音乐A含有重口味的成分+对优雅的偏好音乐A含有优雅的成分+……


即:0.6
0.9+0.80.1+0.10.2+0.10.4+0.70=0.69
每个用户对每首歌都这样计算可以得到不同用户对不同歌曲的评分矩阵R~\widetilde{R}R。(注,这里的破浪线表示的是估计的评分,接下来我们还会用到不带波浪线的RRR表示实际的评分):

因此我们队张三推荐四首歌中得分最高的B,对李四推荐得分最高的C,王五推荐B。

如果用矩阵表示即为:
R~=QPT\widetilde{R}=QP^TR=QPT

我们所说的“潜在因子”指的就是以上例子中的QQQ和PTP^TPT矩阵,那么
下面问题来了,以上的潜在因子(latent factor)是怎么得到的呢?由于面对海量的让用户自己给音乐分类并告诉我们自己的偏好系数显然是不现实的,事实上我们能获得的数据只有用户行为数据。我们沿用 @邰原朗的量化标准:单曲循环=5, 分享=4, 收藏=3, 主动播放=2 , 听完=1, 跳过=-2 , 拉黑=-5,在分析时能获得的实际评分矩阵R,也就是输入矩阵大概是这个样子:

事实上这是个非常非常稀疏的矩阵,因为大部分用户只听过全部音乐中很少一部分。如何利用这个矩阵去找潜在因子呢?这里主要应用到的是矩阵的UV分解(即将矩阵RRR通过矩阵UV分解分解成矩阵QQQ、PTP^TPT的矩阵乘积,这里QQQ、PTP^TPT的乘积记为R~\widetilde{R}R只是矩阵RRR的近似)。也就是将上面的评分矩阵分解为两个低维度的矩阵,用Q和P两个矩阵的乘积去估计实际的评分矩阵,而且我们希望估计的评分矩阵R~\widetilde{R}R

和实际的评分矩阵不要相差太多(指的是与矩阵RRR非缺失值部分值接近),也就是求解下面的目标函数:

这里涉及到最优化理论,在实际应用中,往往还要在后面加上2范数的罚项,然后利用梯度下降法就可以求得这P,Q两个矩阵的估计值。这里我们就不展开说了。例如我们上面给出的那个例子可以分解成为这样两个矩阵:

这两个矩阵相乘就可以得到估计的得分矩阵:

将用户已经听过的音乐剔除后,选择分数最高音乐的推荐给用户即可(红体字)。

在这个例子里面用户7和用户8有强的相似性:

从推荐的结果来看,正好推荐的是对方评分较高的音乐:

推荐算法之潜在因子(Latent Factor)算法相关推荐

  1. 「从零入门推荐系统」08:召回算法之5类基础召回算法

    作者 | gongyouliu 编辑 | gongyouliu 我们在上一篇文章中介绍了规则策略召回算法,这类方法非常简单,只需要利用一些业务经验和基础的统计计算就可以实现了.本节我们来讲解一些基础的 ...

  2. 推荐算法——潜在因子(LatentFactor)算法

    文章转自: 作者:知乎用户 链接:https://www.zhihu.com/question/26743347/answer/34714804 潜在因子(LatentFactor)算法. 这种算法是 ...

  3. 多任务进化优化算法(二) 多因子进化算法(MFEA)的理论基础、多任务贝叶斯优化以及MFEAII简介

    摘要 ​ 此篇博客主要介绍了MFEA理论推导及其改进算法MFEA-II.在多任务优化的情景下,如果任务之间存在潜在关系,那么高质量的解在这些任务之间的转移可以显著提高算法的性能.然而有的时候缺乏关于任 ...

  4. matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 带压缩因 ...

  5. Just Waiting for You!个性化推荐带你领略不一样的算法之美

    2016年,SDCC·中国软件开发者大会相继走进了上海.深圳.成都.杭州各地.11月18日-20日将在北京完美收官,届时年度最受欢迎的企业.讲师将在这里齐聚一堂,约百位讲师将围绕电商架构.编程语言.前 ...

  6. 使用minitab18 做单因子方差分析达到算法指标之间多重比较的目的(One way ANOVA, Multiple comparison)

    输入格式 比如excel里统计了6中多目标优化算法在30个测试问题上的,独立运行20次的,GD指标均值.现在要分析算法之间两两之间的显著性差异.要将前面五个算法和我提出的第六列算法进行两两比较.显示我 ...

  7. 传统推荐模型(一)协同过滤算法_UserCF和ItemCF

    传统推荐模型(一)协同过滤算法_UserCF 1.UserCF 协同过滤就是协同大家的反馈.评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐过程. 物品1 物品2 物品3 ...

  8. 基于随机森林算法的多因子选股方法分析与实现(2,代码实现)

    摘要 量化投资中经常听到的"多因子模型"是个什么鬼?因子是影响因素的简称,或简单理解成指标.我们都知道股票收益受到多重因素的影响,比如宏观.行业.流动性.公司基本面.交易情绪等等. ...

  9. 基于随机森林算法的多因子选股方法分析与实现(1)

    前言 多因子量化体系在实践不断中形成了诸如 BARRA 模型的标准方法,在以往的研究报告中,有人对此进行了充分的研究其背后的金融理论及检验实践中能否获得有效的 ALPHA 因子.虽然标准化易于理解与管 ...

最新文章

  1. php 过滤特殊字符和sql防注入代码以及xss攻击等
  2. LTE小区选择和重选
  3. Redis运维和开发学习目录
  4. 如何在textarea中显示html代码
  5. 访问index.php跳转,打开index.php后,跳转到/user/login.html
  6. 我们都有冲动了的飞鸽传书2011
  7. vivo X Fold或首发国产最强屏幕:120Hz LTPO 3.0
  8. 【Q】【POJ 2560】【POJ 2031】
  9. 利用hugo生成静态站点
  10. java对excel加密_java 加密 excel
  11. VNPY_IB API封装
  12. 教你使用jmeter实现接口性能测试
  13. KPPW系统—开源免费的威客建站系统
  14. uvc和v4l2简介
  15. 主干分支开发模式_源代码主干分支开发四大模式
  16. Android 外置 SD 卡写入权限问题
  17. 热烈祝贺重庆大学75周年校庆
  18. 自己开发基于Web的打印控件,真正免费不是共享
  19. 用matlab求雅可比迭代法,基于matlab的jacobi(雅可比)迭代法求解线性方程组
  20. 嵌入式arm板linux路由表设置

热门文章

  1. 流程定义和部署管理——流程定义列表
  2. 《恒盛策略》暴跌97%,2023年第四只面值退市股是它
  3. Jaspersoft Studio软件使用
  4. python3 ..../%E7%9B%B8%E5%86%8C/ 把乱码部分改为汉字。编码。
  5. YOLO 9000论文翻译 | YOLO9000:Better, Faster, Stronger
  6. Dcmtk在PACS开发中的应用(基础篇)打印影像(胶片)
  7. 关于聚类(Clustering)
  8. 【报告分享】美妆行业新国货品牌数字营销系列研究报告(附下载)
  9. Kaggle竞赛中使用YOLOv5将目标检测的性能翻倍的心路历程
  10. 我在蚂蚁金服技术风险部做“医生” 1