SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高

1.背景知识

   在讲SVD++之前,我还是想先回到基于物品相似的协同过滤算法。这个算法基本思想是找出一个用户有过正反馈的物品的相似的物品来给其作为推荐。其公式为:

                            

  其中 rui 表示预测用户u对物品i的喜爱程度。wij 是物品i,j之间的相似度,N(u)代表用户曾经有过正反馈的物品的集合。

  就比如说我们现在有三个用户A,B和C,还有四本书:《红楼梦》,《史记》,《微积分导论》和《时间简史》。用户和书籍之间的阅读关系为:

 ABC
红楼梦1 1
史记   
微积分导论  1
线性代数 1 

  其中没有标注1的即表示用户没有阅读过此书籍。

  那么我们首先需要一种相似度度量方法可以测得任意两本书之间的相似度,暂时我们认为方法已经有了,并且已经把书籍两两之间的相似度计算出来了,其可以用一个对称方阵W表示(在我们这个例子中是4X4的矩阵)。其具体值假设如下:

   红楼梦    史记    微积分导论 线性代数 
红楼梦10.70.20.1
史记0.710.20.2
微积分导论0.20.210.8
线性代数0.10.20.81

  那根据公式,我们计算用户C对史记的喜欢程度就是 : ( 0.7 + 0.2)/ sqrt(2) 。

 

2. SVD++ 原理

   上面的方法有一个问题,就是相似度度量方法我们不太容易得到,也就是我们没法得到W这个矩阵。有一个想法就是我通过迭代优化的方法直接去计算整个W,其优化的lost function如下:

  

  这样的话就再不需要我们认为去定义一个相似度度量方法。但是一个新的问题又出现了。由于一般推荐系统中物品的个数往往都很多,所以W会是一个非常大的矩阵,那么这样会给存储和计算带来很大的麻烦。这里我们把条件放宽一点,假设W是由两个矩阵X和Y点乘得到的(其实就是矩阵分解)。那么预测的公式就变成了:

      

  其中Xi 和Yj 是矩阵X和Y中第i行和第j行。

  那么到此为止,我们用了迭代和矩阵分解的方法来处理相似度的信息,那么我们将这个相似度影响因素加入我们之前讲的隐因子的矩阵分解方法中去,就得到:

   

  可以看到,这个公式其实就是在隐因子的基础上多加了一项。

  但是,牛逼的dalao们又发现,如果让矩阵P(这个是用户的隐参数矩阵)和上面提到的W分解得到的X矩阵相等,可以防止模型过拟合,那么公式又变为:

  

  这个公式有点错误,其括号中的xi 应该是没有的。(太懒了,直接截图过来不想改==)

3.算法实现

  (INCOMING)

   https://github.com/ccienfall/RecommandSystem/blob/master/script/Factorize.py 先拿代码凑合着看吧。。。。

 

挖好坑,以后来填。(10.21)

前来填坑(11.2)

 

转载于:https://www.cnblogs.com/ccienfall/p/5979003.html

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

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

相关文章

Android插件化开发之动态加载的类型

https://segmentfault.com/a/1190000005113493 基本信息 Author:kaedea GitHub:android-dynamical-loading 现在网络上有许多关于动态加载的介绍的文章,谈及的关键词汇有动态加载、插件化、热部署、热修复等,对于一些刚接触这方…

UITableView的优化原理

2019独角兽企业重金招聘Python工程师标准>>> 当我们下啦一个 UITableView时,如果没有做优化,只是简单的实现功能代码如下,这样当我们有上百条tableviewcell的时候,我们滑动的非常快时会非常费内存,当然苹果…

深入浅出Mybatis系列(一)---Mybatis入门[转]

最近两年 springmvc mybatis 的在这种搭配还是蛮火的,楼主我呢,也从来没真正去接触过mybatis, 趁近日得闲, 就去学习一下mybatis吧。 本次拟根据自己的学习进度,做一次关于mybatis 的一系列教程, 记录自己的学习历程&…

C# 图像模板匹配并标注

01—需求这个是粉丝在我的技术群提的一个需求1、 模板匹配 :功能:(1)在一张大图像中,选取一小块区域作为模板(2)可在大图像中匹配到模板图像和位置。模板匹配是图像处理中最基本、最常用的匹配方…

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]

上篇《深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete》介绍了insert、update、delete的用法,本篇将介绍select、resultMap的用法。select无疑是我们最常用,也是最复杂的,mybatis通过resultMa…

北大保送、硕博连读!《西游记》红孩儿扮演者现成中科院博士!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:募格学术86版《西游记》可以说是很多人的记忆,男女老幼几乎都看过这个版本,虽然已经过去三十多年,但如今依旧是经典无法超越之作。看过86版《西游记》的小伙伴应该都还记得里面牛魔…

Android插件化开发之运行未安装apk的activity

1、介绍 我们知道PathClassLoader是一个应用的默认加载器(而且他只能加载data/app/xxx.apk的文件),但是我们加载插件一般使用DexClassLoader加载器,所以这里就有问题了,其实如果对于开始的时候,每个人都会认为很简单,…

理解UI线程——SWT, Android, 和Swing的UI机理

2019独角兽企业重金招聘Python工程师标准>>> 在做GUI的时候, 无论是SWT, AWT, Swing 还是Android, 都需要面对UI线程的问题, UI线程往往会被单独的提出来单独对待, 试着问自己, 当GUI启动的时候, 后台会运行几个线程? 比如 1. SWT 从Main函数启动 2. Swing 从Ma…

C#多线程开发-并发集合中的ConcurrentQueue

前言大家好,我是阿辉。上一篇博文简单介绍了C#中支持并发的数据字典,简单举例说明比较了常规集合与ConcurrentDictionary的读写速度。下来简单介绍其中一个线程安全队列ConcurrentQueue;ConcurrentQueue队列我们不陌生,在数据结构这门课中就有…

一个人动情之后的表现......

1 卖家能有什么坏心思呢(via.城与橙与澄,侵删)▼2 严重怀疑传了答案▼3 别说我还真没留意到(素材来源网络,侵删)▼4 领导说“辛苦了”,你要怎么回答▼5 哦吼(素材来源网络&#…

线性代数第五版吉尔伯特课后答_线性代数同济第五版第六章课后习题答案!

搜集 | 整理 | 测试 | 小愉免责声明:以下资源或软件均来自互联网,仅供学习和交流使用,如有侵权请联系删除,请勿用于商业和非法途径等,如有法律纠纷与本人无关!本文未经允许,不得转载&#xff0…

sql长整型_SQL 性能优化梳理

先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开。1 基本概念简述1.1 逻辑架构第一层:客户端通过连接服务,将要执行的sql指令传输过来第二层:服务器解析并优化sql,生成最终的执行计划并执行第三…

网络的东西南北

前一陣子連續出差, 加上許多的內部會議, 搞的差點想去撞牆把自己搞昏之後就可以休息一下. 但是家中還有嗷嗷待哺的嬰兒需要爸爸幫他洗屁屁, 所以只有咬牙繼續撐下去. 不過這兩個月來, 不過在公司內部還是外部, 我都收到一樣類似的老問題那就是:(認識我的…

K8s 中使用 cert-manager 申请免费 Https 证书

K8s 中使用 cert-manager 申请免费 Https 证书Intro最近在尝试将自己的应用从自己用 kind 部署的一个 k8s 集群迁移到 Azure 的 AKS 上,其中一个问题就是 https 证书,原来的 k8s 集群是放在 nginx 后端的并没有直接管理 https 证书,https 证书…

为什么要学数学?因为它真的没用啊!

全世界只有3.14 % 的人关注了爆炸吧知识数学之用无用之用有一天,表妹过来问了我两个问题:数学有什么用?那些深奥的公式对于普通人有什么意义?相信大多数人都有这个疑问,但总是找不到一个标准答案。问老师,他…

UI设计教程-界面设计构图

九宫格构图,圆心点放射形构图,三角形构图,SF字形构图。 1.九宫格网格构图 这种版式主要运用在分类为主的一级页面,起到功能分类的作用。 通常在界面设计中,我们会利用网格在界面进行布局,根据水平方向和垂直…

Android之最好理解的Binder机制

转载:http://weishu.me/2016/01/12/binder-index-for-newer/ Binder学习指南 发表于 2016-01-12 | 92条评论 | 34011次阅读毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件…

sql年月日24小时制_24小时制的「无码」真人秀,令人叫绝

几年前,我们总说互联网给世界带来了巨大的变化。到了现在,没想到自媒体的发展居然也能改变生活。但大家知道吗,其实早在20年前,美国那边就曾因“直播”掀起过不小的风浪——还是尺度挺大的那种。以至于毒师看过以后,整…