非负矩阵分解NMF(1): 非调包python实现

本文介绍矩阵分解(MF)与非负矩阵分解(NMF)的基本原理及实现过程,包括公式推导、代码实现,并通过图像数据展示两种方法的效果。


在实现NMF(Non-negative Matrix Factorization)之前,先看普通的MF是怎么进行的,从而可以直观地理解为什么一定要非负矩阵分解。

1. 矩阵分解(Matrix Factorization):
1.1 公式推导

该方法由Albert Au Yeung 提供: 原文链接

首先矩阵分解的目的在于将大小为N x M的矩阵R分解成一个大小为N x K的矩阵P以及K x M的矩阵Q,使得:

R ≈ P Q T = R ^ R \approx PQ^T=\hat{R} RPQT=R^

原文中R是一个推荐系统中关于user用户和物品item的关系的矩阵,所以P的每一行都表示user和特征的相关度(Strength of Association),而Q的每一行(或 Q T Q^T QT的每一列)就表示item和特征的相关度。

这里不用理解他们表示的含义,只需要知道 R ^ \hat{R} R^中每个元素 r ^ i j = p i T . q j = Σ K = 1 K p i k q k j \hat{r}_{ij}=p_i^T.q_j=\Sigma_{K=1}^Kp_{ik}q_{kj} r^ij=piT.qj=ΣK=1Kpikqkj

那么预测值和真实值之间的error就等于:
e i j = r i j − r ^ i j = r i j − Σ K = 1 K p i k q k j e_{ij}=r_{ij}-\hat{r}_{ij} = r_{ij}-\Sigma_{K=1}^Kp_{ik}q_{kj} eij=rijr^ij=rijΣK=1Kpikqkj

e i j 2 e_{ij}^2 eij2关于 p i k p_{ik} pik求导/梯度就等于:

∂ ∂ p i k e i j 2 = 2 e i j e i j ′ = 2 e i j . ( − q k j ) = − 2 e i j q k j \frac{\partial}{\partial p_{ik}}e_{ij}^2 = 2e_{ij}e_{ij}'=2e_{ij}.(-q_{kj})=-2e_{ij}q_{kj} pikeij2=2eijeij=2eij.(qkj)=2eijqkj

同理关于 q k j q_{kj} qkj求导/梯度就等于:
∂ ∂ q k j e i j 2 = − 2 e i j p i k \frac{\partial}{\partial q_{kj}}e_{ij}^2=-2e_{ij}p_{ik} qkjeij2=2eijpik

根据梯度更新 p ′ = p − l e a r n i n g r a t e ∗ g r a d i e n t p' = p-learningrate*gradient p

作为一种重要的身份认证的手段,人脸识别已经广泛地应用于管理、安全等各个领域。人脸识别的一个关键性的问题是特征抽取,即如何从众多的特征中寻找最有效的特征。子空间分析法是一种有效的特征抽取方法,而本文所研究讨论的非负矩阵分解(Non-negative Matrix Factorization, NMF)具有一些独特的优点,成为构建特征子空间的一种有效的方法。 非负矩阵分解是一种新的矩阵分解方法,它将一个非负矩阵分解为左右两个非负矩阵的乘积。由于分解前后的矩阵中仅仅包含负元素,因此原来矩阵中的列向量可解释为对左矩阵中所有列向量(称基向量)的加权和;而权重系数为右矩阵中对应列向量中的元素。这种基于基向量组合的表示形式具有直观的语义解释,反映了人们思维中局部构成整体的概念。与一般矩阵分解方法相比,NMF具有其独特的优点。例如实现起来比较简单,分解的形式和结果具有实际的物理意义等。典型的监督学习算法,如主分量分析(PCA)、矢量量化(VQ)、独立分量分析(ICA)、因子分析(FA)等,均可以理解为对原始数据矩阵在一定条件限制下进行分解。本文的非负矩阵分解(NMF)算法与上述算法模型类似,是国际上新近提出的一种矩阵分解方法。与其他方法相比,NMF特殊之处在于其对于矩阵分解过程的负限制,这会得到原始数据基于部分的表示,从而能更好的反映原始数据的局部特征,NMF的这一特性使得其可在诸多领域的应用得到很好的效果。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值