摘自:http://www.cnblogs.com/kobedeshow/p/3651833.html
本文将要讨论基于矩阵分解的推荐算法,这一类型的算法通常会有很高的预测精度,也活跃于各大推荐系统竞赛上面,前段时间的百度电影推荐最终结果的前10名貌似都是把矩阵分解作为一个单模型,最后各种ensemble,不知道正在进行的阿里推荐比赛(http://102.alibaba.com/competition/addDiscovery/index.htm),会不会惊喜出现。。。。好了,闲话不扯了,本文打算写一篇该类型推荐算法的入门篇
一,基于矩阵分解的推荐算法相关理论介绍
我们知道,要做推荐系统,最基本的一个数据就是,用户-物品的评分矩阵,如下图1所示
图1
   矩阵中,描述了5个用户(U1,U2,U3,U4 ,U5)对4个物品(D1,D2,D3,D4)的评分(1-5分),- 表示没有评分,现在目的是把没有评分的 给预测出来,然后按预测的分数高低,给用户进行推荐。
如何预测缺失的评分呢?对于缺失的评分,可以转化为基于机器学习的回归问题,也就是连续值的预测,对于矩阵分解有如下式子,R是类似图1的评分矩阵,假设N*M维(N表示行数,M表示列数),可以分解为P跟Q矩阵,其中P矩阵维度N*K,P矩阵维度K*M。
式子1
对于P,Q矩阵的解释,直观上,P矩阵是N个用户对K个主题的关系,Q矩阵是K个主题跟M个物品的关系,至于K个主题具体是什么,在算法里面K是一个参数,需要调节的,通常10~100之间。
式子2
对于式子2的左边项,表示的是R^ 第i行,第j列的元素值,对于如何衡量,我们分解的好坏呢,式子3,给出了衡量标准,也就是损失函数,平方项损失,最后的目标,就是每一个元素(非缺失值)的e(i,j)的总和 最小
式子3
OK,目前现在评分矩阵有了,损失函数也有了,该优化算法登场了,下面式子4是,基于梯度下降的优化算法,p,q里面的每个元素的更新方式
式子4
    然而,机器学习算法都喜欢加一个正则项,这里面对式子3稍作修改,得到如下式子5,beita 是正则参数
式子5
相应的p,q矩阵各个元素的更新也换成了如下方式
式子6
至此,P,Q矩阵元素求出来了之后,计算某个用户i对某个物品j的评分计算就是p(i,1)*q(1,j)+p(i,2)*q(2,j)+....+p(i,k)*q(k,j)。

转载于:https://www.cnblogs.com/bonelee/p/7126144.html

基于矩阵分解的推荐算法,简单入门相关推荐

  1. 基于矩阵分解的推荐算法

    https://www.toutiao.com/a6656899746516435469/ 2019-02-12 08:10:52 1.算法介绍 在推荐算法中,主要解决的问题是找到用户对物品的偏好得分 ...

  2. 基于矩阵分解的CF算法实现(一):(Funk SVD)LFM

    基于矩阵分解的CF算法实现(一):LFM LFM也就是前面提到的Funk SVD矩阵分解 LFM原理解析 LFM(latent factor model)隐语义模型核心思想是通过隐含特征联系用户和物品 ...

  3. 基于矩阵分解的CF算法实现(二):BiasSvd

    基于矩阵分解的CF算法实现(二):BiasSvd BiasSvd其实就是前面提到的Funk SVD矩阵分解基础上加上了偏置项. BiasSvd 利用BiasSvd预测用户对物品的评分, k k k表示 ...

  4. 基于python 的电影推荐算法_基于python语言编程的矩阵分解电影推荐算法

    [实例简介]一种基于矩阵分解方法的电影推荐算法 [实例截图] [核心代码] import numpy as np from numba import cuda, float64, jit from s ...

  5. 基于矩阵分解的CF算法实现(一):LFM

    LFM也就是前面提到的Funk SVD矩阵分解 LFM原理解析 LFM(latent factor model)隐语义模型核心思想是通过隐含特征联系用户和物品,如下图: P矩阵是User-LF矩阵,即 ...

  6. 矩阵点乘和叉乘的区别_矩阵点乘推荐算法预测图书推荐

    推荐系统 GreedyAIAcademy/Machine-Learning​github.com 推荐系统,顾名思义,就是用于根据用户的喜好,进行对象的推荐 当然,我们这里说的对象不是来预测你会喜欢什 ...

  7. 基于矩阵分解的推荐系统

    基于矩阵分解的推荐算法 1.概述    基于用户和基于项的协同过滤推荐算法,难以实现大数据量下的实时推荐.这时我们可以使用基于模型的协同过滤算法,矩阵分解(Matrix Factorization,M ...

  8. 基于矩阵分解的协同过滤算法

    基于矩阵分解的协同过滤算法 基于矩阵分解的CF算法实现(一):LFM LFM原理解析 损失函数 随机梯度下降法优化 基于矩阵分解的CF算法实现(二):BiasSvd BiasSvd 损失函数 随机梯度 ...

  9. 《推荐系统笔记(十四)》矩阵分解(MF)以及基于矩阵分解的topN推荐

    前言 用户评分矩阵往往十分稀疏,为了对这种稀疏矩阵进行补全,充分利用已有数据,我们可以采用矩阵分解办法.实际上,一旦矩阵补全,相当于预测出用户对未购买物品的评分,基于这些评分,我们就可以对任何用户进行 ...

最新文章

  1. 防火墙iptables介绍
  2. java软件设计模式只单例设计模式
  3. 新近爆出的runC容器逃逸漏洞,用户如何面对?
  4. 谨以此片,献给你身边的产品经理
  5. Linux常用命令(整理)
  6. css相关笔记(五)
  7. 网络与IO知识扫盲(四):C10K问题、BIO的弊端与NIO的引入
  8. c语言排序系统代码怎么写,排序概述(c语言)(示例代码)
  9. wordpress 怎么获取站点标题
  10. java中bash应用_在bash脚本中查找java应用程序的进程ID(以查看目标应用程序是否已在运行)...
  11. 频繁使用花呗、借呗、微粒贷、京东白条会影响在银行的信用吗?
  12. 【Qt教程】1.11 - Qt5 标准对话框QMessageBox(关于、错误、信息、警告、问题、颜色、字体、文件对话框)
  13. 清除所有多余的桌面右键菜单
  14. 天涯怎么引流到qq?天涯社区如何靠发帖子引流?
  15. 程序、算法和数据结构的关系
  16. 【学习笔记】C语言 随机数的生成原理分析和各类随机数公式
  17. 使用画图软件更改图片大小
  18. 使用SSH服务管理远程主机(RHEL8)
  19. Java 解析复杂表格excel
  20. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第十一集

热门文章

  1. Linux下C的线程同步机制
  2. python打印mysql版本信息
  3. github 下载单个文件夹_从Github上下载单个文件夹的快速方式
  4. dos配置java_windows dos命令配置JAVA环境变量
  5. 每天一个linux命令(2):cd命令
  6. 「高并发秒杀」java课程设计报告模板
  7. 【响应式Web前端设计】CSS后代选择器和子代选择器
  8. python【数据结构与算法】一维前缀和与差分
  9. 【Web安全】提权—使用中国菜刀和iis6.exe在目标服务器创建Administrators用户
  10. python【蓝桥杯vip练习题库】ALGO-50 数组查找及替换