矩阵分解模型

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

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

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

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

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

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

 

1.显式矩阵分解

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

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

矩阵分解模型

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

 

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

 

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

 

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

利:求解容易,表现出色

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

 

2.隐式矩阵分解

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

 

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

矩阵分解模型

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

 

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

 

 

 

 

 

 

 

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 阿里-中间件团队博客「建议收藏」

    阿里-中间件团队博客「建议收藏」阿里中间件团队博客地址:http://jm.taobao.org/截至2019-03-15日已发布的博客列表:2017双11专题10 2018广东云栖大会1 ACM3 AHAS1 APM1 ARMS8 AlibabaCloudToolkit1 Aliware1 ApacheRocketMQ1 BCP1 CNCF1 Docker1 Dubbo10 Dubbo…

  • urlopen error errno111(英雄联盟报错error)

    原因获取地址信息失败,通常是由于自动选择的DNS服务器不行解决方法更换DNS服务器控制面板(win+R+control)->网络和Internet2.打开网络共享中心3.打开当前连接的网络,以wifi为例4.打开属性5.打开Internet协议版本46.选择使用特定DNS服务器地址,并设置为114.114.114.1148.设置完成后,错误解决…

  • 处理:/var/redis/run/redis_6379.pid exists, process is already running or crashed「建议收藏」

    处理:/var/redis/run/redis_6379.pid exists, process is already running or crashed「建议收藏」命令;serviceredisstart/var/redis/run/redis_6379.pidexists,processisalreadyrunningorcrashed引起这类问题一般都是强制关掉电源或断电造成的,也是没等linux正常关机科学的处理办法2种1:可用安装文件启动redis-server/etc/re

  • Sublime Text3+常用插件汇总[通俗易懂]

    Sublime Text3+常用插件汇总[通俗易懂]SublimeTextSublimeText官网:https://www.sublimetext.com/下载所需要的SublimeText版本,根据提示安装。插件安装:直接下载安装包解压缩到Packages目录(preferences===>BrowsePackages显示已安装的插件)。 用PackageControl安装插件:1.按Ctrl+`(…

  • IO编程与线程概念

    IO编程与线程概念IO编程IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪

  • TDD与FDD技术对比

    TDD与FDD技术对比双工(Duplex)是一种在单一通信信道上实现双向通信的过程,包括两种类型,分别为半双工和全双工。  在半双工系统中,通信双方使用单一的共享信道轮流发送数据。双向广播就采用了这种方式。在一方发送数据时,另一方只能收听。数据发送方通常会发出“Over”的信号,表明本方数据发送结束,对方可以开始发送数据。在实际网络中,两台计算机可以使用一根通信电缆来轮流收发数据。  全双工则是指同时的双向通信

发表回复

您的电子邮箱地址不会被公开。

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