矩阵分解模型

矩阵分解模型矩阵分解模型做如下假设:1.每个用户可描述为n个属性或特征。比如,第一个特征可以对应某个用户对动作片的喜好程度。2.每个物品可描述为n个属性或特征。比如,接上一点,第一个特征可以用对应某部电影与动作片的接近程度。3.将用户和物品对应的属性相乘后求和,该值可能很接近用户会对该物品的评级。 1.显式矩阵分解当要处理的数据是由用户所提供的自身的偏好数据时,这些数据被称作显式偏好数…

大家好,又见面了,我是你们的朋友全栈君。

矩阵分解模型做如下假设:

1.每个用户可描述为n个属性或特征。比如,第一个特征可以对应某个用户对动作片的喜好程度。

2.每个物品可描述为n个属性或特征。比如,接上一点,第一个特征可以用对应某部电影与动作片的接近程度。

3.将用户和物品对应的属性相乘后求和,该值可能很接近用户会对该物品的评级。

 

1.显式矩阵分解

当要处理的数据是由用户所提供的自身的偏好数据时,这些数据被称作显式偏好数据。这类数据包括如物品评级、赞、喜欢等用户对物品的评价。

这些数据大都可以转换用户为行、物品为列的二维矩阵。矩阵的每一个数据表示为某个用户对特定物品的偏好。大部分情况下用户只会和少数物品接触,所以该矩阵只有少部分数据非零,即该矩阵很稀疏。

矩阵分解模型

对这个矩阵分解,找到他的两个低阶矩阵。假设我们的用户和物品数目分别是U和I,那对应的“用户-物品”矩阵的维度为U*I。那对应的两个低阶矩阵分别是用户的U*k矩阵,和物品的I*k矩阵。这两个矩阵也被称为因子矩阵。因子矩阵通常是稠密的。

 

由于对“用户-物品”矩阵直接建模,用这些模型进行预测也相对直接:要计算给定用户对某个物品的预计评级,就从用户因子矩阵和物品因子矩阵分别选取相应的行(用户因子向量)与列(物品因子向量),然后计算两者的点积即可。

 

而对于物品之间相似度的计算,可以直接用物品矩阵中的因子向量做相似度计算。

 

因子分解类模型的的利弊:

利:求解容易,表现出色

弊:不好解释,吃资源(因子向量多,训练阶段计算量大)

 

2.隐式矩阵分解

隐式矩阵就是针对隐式反馈数据。在这类数据中,用户对物品的偏好不会直接给出,而是隐含在用户与物品的交互之中。二元数据(比如用户是否观看了某部电影或是否购买了某个商品)和计数数据(比如用户观看某部电影的次数)便是这类数据。

 

处理隐式数据的方法相当多。SparkMllib实现了一个特定的方法。它将输入的评级数据视为两个矩阵:一个二元偏好矩阵P和一个信心权重矩阵C。

矩阵分解模型

隐式模型仍然会创建一个用户因子矩阵和一个物品因子矩阵。但是,模型所求解的是偏好矩阵而非评级矩阵的近似。

 

从根本上说,矩阵分解从评级情况,将用户和物品表示为因子向量。若用户和物品因子之间高度重合,则可表示这是一个好推荐。两种主要的数据类型为显示反馈和隐式反馈,其中前者比如评级(用稀疏矩阵表示),后者比如购物历史、搜索记录、浏览历史和点击数据(用密集矩阵表示)。

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146449.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ADO数据库C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter

    ADO数据库C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter用于执行增,删,改的方法,支持存储过程1.ExecuteNonQuery数据库连接字符串:privatereadonlystaticstringconnectionString=ConfigurationManager.ConnectionStrings["MyConnection"].ToString();连接字符串,自满足,请用SqlHelper.con…

    2022年6月20日
  • vim复制粘贴_vim怎么复制粘贴到其他程序

    vim复制粘贴_vim怎么复制粘贴到其他程序Vim复制粘贴探秘Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情。每当学会了vim的一个新功能,就会很大地提高工作效率。有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim的强大。而这样何尝不是一件好事呢,只要有的学习,就有的提高。最近使用Vim来写博客,发现在Vim中粘贴Python代码后,缩进就全乱了。仔细研究了以下,原来是自动缩进的缘故,于是做如下设置::setnoainosi取消了自动缩进和智能缩进,这样粘贴就不会错行了。但

    2022年9月13日
  • 【生信技能树2020-10-31】单细胞数据挖掘学习笔记-1.1 下载、探索数据

    【生信技能树2020-10-31】单细胞数据挖掘学习笔记-1.1 下载、探索数据生信技能树-单细胞数据挖掘学习笔记2.1

    2022年10月25日
  • 秒杀系统设计的 5 个要点:前端三板斧+后端两条路!(建议收藏)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 秒杀系统涉及到的知识点: 高并发,cache,锁机制 基于缓存架构redis,Memcached的先进先出队列。 稍…

    2021年6月23日
  • 设计模式之代理模式XXOO

    设计模式之代理模式XXOO定义代理模式可以分为两种,一种是静态代理,一种是动态代理。静态代理:代理类一般会持有一个被代理的对象引用,且对于不关心的方法全部委托给被代理的对象处理。自己处理关心的方法。这种代理方式是死板的,它不是在运行时动态创建,它就是硬编码,你代码编译前写的是什么,编译后就是什么。换句话就是你按下CTRL+S的那一刻,就会被代理对象生成一个不可动态改变的代理类。静态代理一般对于代理的对象是单个或者多个固定的类(数量不会太多)使用。效果会比动态代理要好。动态代理:动态代理又分为JDK动

    2022年7月17日
  • windows无exe

    windows无exewindows无exe加载脚本方式恶意脚本加载powershellmshta.exeCScript.exe&WScript.exeWindows原生工具加载regsvr32.exedllsctcertutil.exewinrm.vbsmsiexec.exewmic.exepubprn.vbs参考加载脚本方式利用Windows自带的解析器:PowerShell、VBScript、批处理文件和JavaScript,对应的应用程序分别为powershell.exe、cscript.exe、cmd.ex

    2022年7月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号