推荐算法——非负矩阵分解(NMF)
来源:互联网 发布:永州金域名都房价多少 编辑:程序博客网 时间:2024/04/20 19:12
一、矩阵分解回顾
在博文推荐算法——基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解,从而实现对未打分项进行打分。矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积。对于上述的用户-商品矩阵(评分矩阵),记为
其中,矩阵
通常在用户对商品进行打分的过程中,打分是非负的,这就要求:
这便是非负矩阵分解(Non-negtive Matrix Factorization, NMF)的来源。
二、非负矩阵分解
2.1、非负矩阵分解的形式化定义
上面简单介绍了非负矩阵分解的基本含义,简单来讲,非负矩阵分解是在矩阵分解的基础上对分解完成的矩阵加上非负的限制条件,即对于用户-商品矩阵
同时要求:
2.2、损失函数
为了能够定量的比较矩阵
- 平方距离
- KL散度
在KL散度的定义中,
当定义好损失函数后,需要求解的问题就变成了如下的形式,对应于不同的损失函数:
求解如下的最小化问题:
minimize∥V−WH∥2s.t.W⩾0,H⩾0 minimizeD(V∥WH)s.t.W⩾0,H⩾0
2.3、优化问题的求解
在参考文献1中,作者提出了乘法更新规则(multiplicative update rules),具体的操作如下:
对于平方距离的损失函数:
对于KL散度的损失函数:
上述的乘法规则主要是为了在计算的过程中保证非负,而基于梯度下降的方法中,加减运算无法保证非负,其实上述的乘法更新规则与基于梯度下降的算法是等价的,下面以平方距离为损失函数说明上述过程的等价性:
平方损失函数可以写成:
使用损失函数对
则按照梯度下降法的思路:
即为:
令
2.4、非负矩阵分解的实现
对于如下的矩阵:
通过非负矩阵分解,得到如下的两个矩阵:
对原始矩阵的还原为:
实现的代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
收敛曲线如下图所示:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
参考文献
Algorithm for Non-negative Matrix Factorization
白话NMF(Non-negative Matrix Factorization)——Matlab 实现
- 顶
- 0
- 推荐算法——非负矩阵分解(NMF)
- 推荐算法——非负矩阵分解(NMF)
- NMF——非负矩阵分解
- NMF(非负矩阵分解)算法
- NMF(非负矩阵分解)算法
- NMF 非负矩阵分解
- NMF 非负矩阵分解
- 非负矩阵分解NMF
- 非负矩阵分解NMF
- 非负矩阵分解NMF
- NMF非负矩阵分解
- 非负矩阵分解NMF
- NMF非负矩阵分解
- 非负矩阵分解NMF
- 非负矩阵分解NMF
- 线性代数 NMF 非负矩阵分解 Matlab
- 非负矩阵分解(NMF)
- 非负矩阵分解(NMF)简介
- Liunx下离线挂载gcc
- Android Studio相关问题
- jvm模型
- 从页面导出报表,以CSV, doc,pdf格式
- 南阳理工acm 995硬币找零(完全背包)
- 推荐算法——非负矩阵分解(NMF)
- WindowManager源码分析-从悬浮窗说起
- MS关联规则分析算法
- 谈论原谅
- Python字符串分片操作
- SSH连接Ubuntu虚拟机失败:The remote system refused connection
- thinkphp5--文章发布后台管理系统
- zookeeper以及集群的搭建
- 《机器学习》阅读心得--一、绪论