非负矩阵分解NMF(应用、原理及基于python的实例)

主要基于论文:Algorithms for Non-negative.Daniel D. Lee and H. Sebastian Seung. NIPS 2000.

矩阵的应用:

科学研究中的很多大规模数据的分析方法都是通过矩阵形式进行有效处理的(图像/文本/音频),为高效处理这些通过矩阵存放的数据,一个关键的必要步骤便是对矩阵进行分解操作。通过矩阵分解,一方面将描述问题的矩阵的维数进行削减,另一方面也可以对大量的数据进行压缩和概括。

NMF非负矩阵分解:

NMF分解算法相较于传统的一些算法而言(如PCA、ICA、SVD(奇异值分解)、VQ等),保证矩阵元素为非负(负值元素在实际应用中往往是无意义的);具有实现上的简便性、分解形式和分解结果上的可解释性,以及占用存储空间少等诸多优点。

原理:
给定一个非负矩阵V, 找到两个非负矩阵因子W 和H,满足:
在这里插入图片描述

输入矩阵D所有的数值非负,输出矩阵U、V的值也是非负,不再要求U、V为正交矩阵;

给定多元n维数据向量集合,组成n×m的矩阵V 其中m表示是样本个数。这个矩阵近似的被分解成n×r矩阵W 和r×m矩阵H。通常r被选定比n或m都要小,以至于W和H比原始V要小(原始矩阵的压缩版本)。V的秩小于等于W、H的秩,矩阵的秩小于等于行/列秩。

V的每一个列向量由W的每个列向量乘以权重系数H所组成(W的每行同乘以H的一列,最终即表示W的每一列乘以H一列中的固定一个数),所以W称为基向量,H称为权重系数;其物理意义为每个基向量(如眼睛、鼻子等等)乘以相应权重最终组合而成V(脸)。

损失函数:

两种度量方法,两个非负矩阵A、B的距离度量:
1、欧式距离:
在这里插入图片描述
2、AB之间的散度:
在这里插入图片描述

根据损失函数找局部最优:1、梯度下降:简单但收敛慢;2、共轭梯度:收敛快但实现复杂;

更新规则及其证明:(在word上整理的,这里直接截图)

对于如上两种cost的更新规则:
在这里插入图片描述

在这里插入图片描述
对于如上两种更新规则的证明,手动推导如下:
在这里插入图片描述

实例分析:

现在对于NMF基本上有了一个大体上的认知,现在我们来运用一个实例讲解:主成分分析:如下俩图所示,给出了右上图的案例,分解出左下图的主成分:其中左上图为代码的核心部分即:参数的更新部分:
在这里插入图片描述

在这里插入图片描述

输入图片V=WH,在这里将图片转为矩阵V,根据NMF规则进行分解得到WH,其中得到的W即是所要求得的主成分,将其输出即可得到下面的图片。

具体代码其实很简单,如上已经给出了核心代码更新规则,其他的就是基本的图片及矩阵间的转换输出,如有需求可单独留下邮箱。

  • 12
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 81
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 81
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值