itemKNN发展史----推荐系统的三篇重要的论文解读
itemKNN发展史----推荐系统的三篇重要的论文解读
本文用到的符号标识
1、Item-based CF
基本过程:
- 计算相似度矩阵
- Cosine相似度
- 皮尔逊相似系数
- 参数聚合进行推荐
根据用户项目交互矩阵 \(A\) 计算相似度矩阵 \(W\):
这样,用户对整个项目列表的偏好值可以如下计算:
\[{ {\tilde a_i}^T}={ a_i^T} \times W\]
例如,对于 j 号物品,用户的偏好值如此计算:
\[{ {\tilde a_{(u,j)}}}=\sum_{i\in { a_u^T}}{ { a_{(u,i)}}}W_{(i,j)}\]
由于交互矩阵 \(A\) 的稀疏性,矩阵 \(W\) 也应该是稀疏的。
2、SLIM: Sparse Linear Methods for Top-N Recommender Systems
- 现有的两种推荐系统
- 基于邻居的协同过滤(代表,item-based CF)
【特点】:能快速生成推荐,推荐质量不高,没有从数据中学习。 - 基于模型的方法(代表,矩阵分解 MF 模型)
【特点】:模型训练慢,推荐质量高。
- 基于邻居的协同过滤(代表,item-based CF)
相比于以上两种方法,SLIM 既高效,推荐质量又高。
- SLIM 关键思想
- 保留 item-KNN 的稀疏矩阵 \(W\) 的特点。
- 通过从 \(A\) 中自学习矩阵 \(W\) 来提高推荐性能。
- 学习过程
\[L(\cdot) =\frac{1}{2} ||A-AW||_F^2+\frac{\beta}{2} ||W||_F^2+\lambda||W||_1 \]\[ {subject\ \ to\ \ }W\geq0, {diag}(W)=0\]
其中:- \({diag} = 0\) 约束同一项目与自己的相似度不加入计算。
- \(l1\) 正则化约束使得矩阵$ W $稀疏
- 弗罗贝尼乌斯范数类似于矩阵的平方,用来防止数据过拟合
可以看到,实际上这个过程是可以并行执行的。
SLIM 的 paper 中使用了坐标下降和软阈值的方法来实现问题的求解。
使用特征选择可以减少 SLIM 的计算量。文章中使用了item-KNN 的方式选择了与待估项目相似度靠前的作为特征选择方式。
3、FISM:Factor item Similarity Models for Top-N Recommender Systems
论文主要完成了以下四个工作:
- 将基于项目的隐因子的方法扩展到 top-N 问题,这使得它们能够有效地处理稀疏数据集;
- 使用结构方程建模方法评估基于项目的隐因子方法。
- 同时使用均方误差和排名误差来评估该模型
- 观察各种参数的影响,因为与偏置,邻居协议和引起模型的稀疏性有关。
- 相关工作
- SLIM
- NSVD(rating prediction)
\[\hat r_{ui}=b_u+b_i+\sum_{j\in \mathbb{R}_u^+} {p}_j q_i^T\]
扩展了item-kNN,学习item之间的相似度。使用每个项目的隐因子内积作为相似度。 - SVD++
- 动机与模型比较
- 传统的 item-KNN 包括 SLIM 对交互矩阵 \(A\) 的处理按行或列独立,因此,如果两个 item 都没有评价记录,则这两个处理方法都会将两个 item 的相似度置为 0 ,这是不合理的。
- MF 模型考虑到了这个问题,但是它的效果不如 SLIM。
与 NSVD 和 SVD++ 比较:
- FISM 解决 Top-N;SVD 解决 rating prediction
- FISM 采用基于结构方程建模的回归方法。
- 评估某个 item 时,不使用用户对于该 item 的评分信息。
P.S. 这影响了相似度矩阵对角线元素对评估的影响,FISM评估时去掉了对角线元素,而SVD等保留了,这使得隐因子很大的情况下FISM表现得比 SVD 好
itemKNN发展史----推荐系统的三篇重要的论文解读的更多相关文章
- CVPR 2020 三篇有趣的论文解读
作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 视频预测.时空序列预测 目录 AdderNet - 其实不需要这么多乘法 Deep Snake for Real-Time Insta ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 第三篇 Entity Framework Plus 之 Query Cache
离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...
- 我的屌丝giser成长记-研三篇
进入研三以来,基本都是自己的自由时间了,从导师的项目抽离出来,慢慢的都交给师弟他们来负责.研三的核心任务就是找工作以及写毕业论文,因为有导师科研基金项目成果作为支撑,所以自己的论文没什么可担心,一切都 ...
- javascript面向对象系列第三篇——实现继承的3种形式
× 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...
- 前端工程师技能之photoshop巧用系列第三篇——切图篇
× 目录 [1]切图信息 [2]切图步骤 [3]实战 前面的话 前端工程师除了使用photoshop进行测量之外,更重要的是要使用该软件进行切图.本文是photoshop巧用系列的第三篇——切图篇 切 ...
- 解剖SQLSERVER 第三篇 数据类型的实现(译)
解剖SQLSERVER 第三篇 数据类型的实现(译) http://improve.dk/implementing-data-types-in-orcamdf/ 实现对SQLSERVER数据类型的解 ...
随机推荐
- 【Thread】CountdownEvent任务并行[z]
System.Threading.CountdownEvent 是一个同步基元,它在收到一定次数的信号之后,将会解除对其等待线程的锁定. CountdownEvent 专门用于以下情况:您必须使用 ...
- java8 LocalDateTime转unix时间戳(带毫秒,不带毫秒)
转载自:LocalDateTime To Timestamp Epoch Seconds And Milliseconds Convert LocalDateTime to seconds since ...
- 基于Linux环境,创建PHP后台守护进程(转载)
应用场景:某些情况下,我们需要持续的周期性的提供一些服务,比如监控内存或cpu的运行状况,这些应用与客户端是没有关系的,不是说客户端(如web界面,手机app等)关闭了,我们就不监控内存或cpu了,为 ...
- 微信小程序覆盖自定义组件样式
小程序官方文档明确指出,引入的第三方自定义组件,是不可以对其进行CSS样式覆盖的,但是我们还想要修改怎么办呢?自定义组件时会之定义个外部类,通过这个外部类来修改样式. 修改https://weapp. ...
- 微信小程序实战[01]
接触微信小程序也有一段时间了,以天气预报练一下手. 主要实现了以下功能: (1) 首页图标式菜单,便于以后扩展功能 (2)首页顶部滚动消息 (3)页面右上角三点菜单转发功能,便于小程序的传播 (4)天 ...
- Docker 容器连接
前面我们实现了通过网络端口类访问运行在 diocker 容器内的服务.下面我们来实现通过端口连接到了一个 dokcer 容器. 网络端口映射 我们创建一个python应用的容器. runoob@run ...
- Unity - Photon PUN 本地与网络同步的逻辑分离 (二)
上篇实现了事件系统的设计,这篇就来结合发送RPC消息 并且不用标记 [PunRPC] 先来看下上编的代码 GameEnvent.cs private static Dictionary<Comm ...
- JavaScript中的闭包永远都存储在内存中,除非关闭浏览器
//閉包實現累加功能 function fn1() { var n = 1; add = function() { n += 1; } function fn2() { n += 1; console ...
- linux中tomcat startup.sh出现commond not found
问题: 前些天,再Linux提交更新代码启动tomcat时报commond not found 过程: 查了下百度,http://code2care.org/2015/-bash:-startup.s ...
- ASP.NET MVC4添加区域视图 找到多个与名为“home”的控制器匹配的类型
今天在项目中遇到一个问题,在MVC下想建立一个区域的后台Boss视图,出现了"找到多个与名为“home”的控制器匹配的类型"的问题,希望下面的解决方案能够帮助到大家 这是网站的整体 ...