目录
0引言
先从数据的条件来理解非负矩阵分解方法:
条件:需要分解的矩阵所有元素非负
目标:V是非负矩阵。NMF可以找到两个非负矩阵W、H使得W*H近似等于V中的值。
其中W:基础图像矩阵。H:系数矩阵
NMF的目标:最小化W和H矩阵的乘积和原始矩阵的差
常见的求解思路:误差范数求解定义和散度的损失函数定义法
1、R语言实现(NMF包的加载)
install.packages("NMF") # 安装包的命令
library(NMF) # 加NMF包
NMF包里的函数有很多,可以通过以下方式查看:
help(package = "NMF")
本文主要讲解下面几个函数:nmf、basis、basismap、coef、coefmap。
2、nmf建立模型实现非负矩阵分解
先是构造数据V矩阵:
# 方法一
V = rmatrix(3,3)
# 方法二
n
V
使用方法二的数据降维建模:
res
下面输出降维效果。
3、W矩阵
> basis(res)
[,1] [,2] [,3]
[1,] 5.667319e+00 2.675530e+00 2.220446e-16
[2,] 3.465761e+00 2.220446e-16 1.661215e-01
[3,] 6.282332e+00 4.171376e+00 2.220446e-16</