SVD recommendation systems

SVD recommendation systems

为什么在推荐系统中使用SVD

一个好的推荐系统一定有小的RMSE
R M S E = 1 m ∑ i = 1 m ( Y i − f ( x i ) 2 RMSE = \sqrt{\frac{1}{m} \sum_{i=1}^m(Y_i-f(x_i)^2} RMSE=m1i=1m(Yif(xi)2
希望模型能够在已知的ratings上有好的结果的同时,也希望在未知ratings上能够表现很好(比如用户还没有见过一部电影)。ratings的意思见:GLOCAL-K
假设有m个items,n个users,我们可以对rating matrix R进行近似,这里R有m行,n列
R ≈ Q ⋅ P T R \approx Q \cdot P^T RQPT
其中Q为mk,P^T为kn,这个可以理解为隐空间是k维。
这样我们就可以利用Q和P去预测R中的缺失值。
r ^ x i = q i ⋅ p x T = ∑ f q i f ⋅ p x f \hat{r}_{xi} = q_i \cdot p_x^T = \sum_fq_{if} \cdot p_{xf} r^xi=qipxT=fqifpxf
SVD的介绍SVD
在这里
A = R , Q = U , P T = Σ V T A = R,\\ Q=U,\\ P^T=\Sigma V^T A=R,Q=U,PT=ΣVT
我们知道SVD可以得到最小的重建损失(Sum of Squared Errors):
min ⁡ U , V , Σ ∑ i , j ∈ A ( A i j − [ U Σ V T ] i j ) 2 \min_{U,V,\Sigma}\sum_{i,j\in A}(A_{ij}-[U\Sigma V^T]_{ij})^2 U,V,Σmini,jA(Aij[UΣVT]ij)2

  • SSE和RMSE是相关的
    R M S E = 1 c S S E RMSE = \frac{1}{c}\sqrt{SSE} RMSE=c1SSE
    也就是说SVD也最小化RMSE
  • 但是SVD是所有entrys的,目前R是有缺失值,所以做出改变。
    目标函数:
    m i n P , Q ∑ ( i , x ) ∈ R ( r x i − q i ⋅ p x T ) 2 min_{P,Q}\sum_{(i,x)\in R}(r_{xi}-q_i \cdot p^T_x)^2 minPQ(i,x)R(rxiqipxT)2
    防止过拟合,需要正则化
    m i n P , Q ∑ ( i , x ) ∈ R ( r x i − q i ⋅ p x T ) 2 + λ [ ∑ x ∣ ∣ p x ∣ ∣ 2 + ∑ i ∣ ∣ q i ∣ ∣ 2 ] min_{P,Q}\sum_{(i,x)\in R}(r_{xi}-q_i \cdot p^T_x)^2+\lambda [\sum_x||p_x||^2+\sum_i||q_i||^2] minPQ(i,x)R(rxiqipxT)2+λ[x∣∣px2+i∣∣qi2]

增加偏执的SVD

每个人都有自己的打分准则,有的人打分就很高,有的人打分偏低,同样的像一些经典电影就会有很高的评分,所以需要增加偏置来解决这个问题。
r ^ u i = μ + b i + b u + p u ⋅ q i T \hat{r}_{ui} = \mu + b_i+ b_u+p_u \cdot q_i^T r^ui=μ+bi+bu+puqiT
其中, μ \mu μ表示全局均值,bu表示用户偏见,bi表示物品偏见。
如果一个用户比网站全局评分小0.5分,那么bu=-0.5,u=3.5,泰坦尼克号的平均分比全局平均分要高1分bi=1.

SVD++

最特别的是加了隐式反馈,不仅考虑评分值,还考虑用户对哪些电影进行了评分,1表示评分,0表示未评分
r ^ u i = μ + b i + b u + ( p u + ∣ N ( u ) ∣ − 0.5 ∑ i ∈ N ( u ) y i ) ⋅ q i T \hat{r}_{ui} = \mu + b_i+ b_u+(p_u+|N(u)|^{-0.5}\sum_{i \in {N(u)}}y_i) \cdot q_i^T r^ui=μ+bi+bu+pu+N(u)0.5iN(u)yiqiT
其中 ∣ N ( u ) ∣ |N(u)| N(u)表示行为物品集,y_j表示物品j所表达的隐式反馈。

timeSVD++

增加了时间的考虑,因为对电影的喜爱会根据时间变化,同时一个电影也会随着时间变化,变得更受欢迎或不受欢迎。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228684.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Rust】所有权的认识

所有权 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存;在另一些语言中,程序员必须亲自分配和释放内存。 Rust 则选择了第三种方式:通过所有权系统管理内…

【浅尝C++】C++类的6大默认成员函数——构造、析构及拷贝构造函数

🎈归属专栏:浅尝C 🚗个人主页:Jammingpro 🐟记录一句:好想摆烂,又好想学习~~ 文章前言:本篇文章简要介绍C类的构造函数、析构函数及拷贝构造函数,介绍每个小点时&#xf…

Mysql中的引擎介绍(InnoDB,MyISAM,Memory)

MySQL引擎就是指表的类型以及表在计算机上的存储方式。 MySQL数据库及其分支版本主要的存储引擎有三种,分别是 InnoDB、MyISAM、 Memory,还有一些其他的,CSV、Blackhole等,比较少见,可以使用SHOW ENGINES语句来查看。结…

【ShardingSphere专题】SpringBoot整合ShardingSphere(一、数据分片入门及实验)

目录 前言阅读对象笔记正文一、ShardingSphere介绍1.1 ShardingSphere-JDBC:代码级别1.2 ShardingSphere-Proxy:应用级别1.3 横向对比图 二、ShardingSphere之——数据分片2.1 基本介绍2.2 分片的形式2.2.1 垂直分片2.2.2 水平分片 2.3 数据分片核心概念…

揭开 BFC 的神秘面纱:前端开发必知必会

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

DS八大排序之直接插入排序和希尔排序

前言 我们前面几期介绍了线性和非线性的基本数据结构。例如顺序表、链表、栈和队列、二叉树等~!本期和接下来的几期我们来详解介绍各个排序的概念、实现以及性能分析! 本期内容 排序的概念以及其运用 常见的排序算法 直接插入排序 希尔排序 一、排序的…

利用Spring Boot构建restful web service的详细流程

本文档构建一个简单的restful webservice, 在官网原文Getting Started | Building a RESTful Web Service (spring.io)的基础上进行操作 文章目录 一、项目创建流程1.1 创建项目1.2 创建资源表示类1.3 创建资源控制类 二、项目运行参考资料 一、项目创建流程 本文的…

Android flutter项目 启动优化实战(一)使用benchmark分析项目

背景描述 启动时间是用户对应用的第一印象,较慢的加载会对用户的留存和互动造成负面影响 在刚上线的B端项目中: 1.提高启动速度能提高整体流程的效率 2.提高首次运行速度能提高应用推广的初体验效果 问题描述 项目刚上线没多久、目前存在冷启动过程存在…

前端面试灵魂提问

1.自我介绍 2.在实习中,你负责那一模块 3.any与unknow的异同 相同点:any和unkonwn 可以接受任何值 不同点:any会丢掉类型限制,可以用any 类型的变量随意做任何事情。unknown 变量会强制执行类型检查,所以在使用一个…

【古月居《ros入门21讲》学习笔记】07_创建工作空间和功能包

目录 说明: 1. 工作空间(workspace) 结构: 2. 创建工作空间和功能包 创建工作空间 编译工作空间 创建功能包 设置环境变量 3. 注意 同一个工作空间下,不能存在同名的功能包; 不同工作空间下,可以存在同名的功…

【模电】晶闸管

晶闸管 结构和等效模型工作原理晶闸管的伏安特性晶闸管的主要参数额定正向平均电流 I F I\tiny F IF维持电流 I H I\tiny H IH触发电压 U G U\tiny G UG和触发电流 I G I\tiny G IG正向重复峰值电压 U D R M U\tiny DRM UDRM反向重复峰值电压 U R R M U\tiny RRM URRM 晶体闸流…

WIN10 x86环境部署ARM虚拟机(银河麒麟)

我们经常使用的是x86架构的cpu,而对于不同cpu架构的arm架构的操作系统,我们可以通过QEMU模拟器来进行模拟一个arm环境 1、部署前的准备 arm的镜像: 以此镜像为例:Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso QE…