算法系列——无监督学习——12.NMF

一、概述

NMF(Non-negative Matrix Factorization,非负矩阵分解)是一种降维算法,它的特点是输入数据和输出数据的值都是非负的。这个特点在处理图像等数据时有一个优点,那就是模型的可解释强。

NMF是一种矩阵分解方法,在计算机视觉、文本挖掘、推荐等各个领域都有应用。与LSA一样,它也可以找到矩阵的潜在变量,但NMF只适用于原始矩阵的所有元素都是非负数(即大于等于0)的情况。NMF具有以下特点。

· 原始矩阵的元素是非负数。

· 分解后矩阵的元素是非负数。

· 没有“潜在语义空间的每一个维度都是正交的”这一约束条件。

在将NMF应用于真实数据时,会带来几个优点。一个优点是分析结果的可解释性强。例如,在将NMF应用于文本数据时,由于文本能够以潜在变量的加法来表示,所以可以使用NMF对文本进行降维,然后将潜在变量视为主题,这样就能使用“某个文本的主题A为0.5、主题B为0.3……”的方式描述文本的信息。由于实际的文本(如新闻文章和论文)也可能包含多个主题,这就使得它们的文本建模结果的可解释性更强。但如果潜在变量为负值,比如主题A为-0.3、主题B为0.6……就比较难解释。


另外,NMF没有“潜在变量必须正交”的约束条件,所以各个潜在变量可能有一定程度的信息重复。拿前面的文本主题的例子来说,这就意味着各个主题有一定程度的信息重复。这也是符合真实数据情况的建模。如图所示为对二维数据分别应用NMF和PCA的结果。从图中可以看出,NMF的潜在空间的每个轴都有重复信息。这一特性使得我们可以捕捉到多个数据块的特征。而PCA等算法则由于其潜在空间的维度是正交的,所以无法找到所有数据块的特征。

二、算法说明

NMF作为一种矩阵分解方法,通过将原始数据分解为两个矩阵来降维。设原始数据为n行d列的矩阵V,将其表示为两个矩阵W和H的乘积。W是n行r列的矩阵,H是r行d列的矩阵,WH是原始矩阵V的近似,选择比d小的r就可以进行降维。这时,W的每一行都是对V的每一行降维后的结果。

对n行d列的V进行矩阵分解的示意图(在降维到r个特征时,使用W)

在求W和H的过程中,NMF在W ≥ 0、H ≥ 0的条件下,使WH接近V。
NMF采取“将H视为常数,更新W”“ 将W视为常数,更新H”的方式交替更新W和H。
 

下面对NMF计算过程中的每一步进行可视化。
灰色的点为原始矩阵V,绿色的点为近似矩阵WH。随着计算的进行,我们可以看到近似矩阵越来越接近原始矩阵。此外,红线和蓝线是潜在空间的轴,所有近似矩阵的图形都能在潜在空间
(二维空间)的轴上表示出来。
· 将 W和H初始化为正值。
· 将 H视为常数,更新W。
· 将 W视为常数,更新H。
· 当 W和H收敛时,停止计算。

三、示例代码

from sklearn.decomposition import NMF
from sklearn.datasets import make_blobs
centers = [[5, 10, 5], [10, 4, 10], [6, 8, 8]]
V, _ = make_blobs(centers=centers)  # 以centers为中心生成数据
n_components = 2  # 潜在变量的个数
model = NMF(n_components=n_components)
model.fit(V)
W = model.transform(V) # 分解后的矩阵
H = model.components_
print(W)
print(H)

四、详细说明

NMF和PCA的比较
现在我们已经了解了NMF算法,下面尝试将NMF应用到一个具体的数据集上。使用的数据是人脸图像数据(19像素×19像素,2429张),下图是其中一张图像。为了进行比较,我们同时使用PCA进行降维。不管使用哪种算法,都假定降维后由49个变量表示数据。由于原始图像数据有361个特征(=19像素×19像素),所以我们的任务是将361个特征变换为49个潜在变量。

不管是PCA还是NMF,潜在变量都是根据原始特征计算出来的,所以每个潜在变量与361个原始特征有关(该特征在NMF算法中是矩阵H的某一行)。将49个潜在变量的这种关系可视化,得到对比图。在可视化时,为了便于查看,我们使用每个变量的最小值和最大值进行了缩放。在恢复原始图像时,我们使用变换后的数据点(NMF中矩阵W的某一行)和可视化数据的乘积。这相当于计算1行49列的矩阵和49行361列矩阵的乘积,得到1行361列的矩阵。


下方左图是PCA的结果,图像中负值看起来暗,正值看起来亮。图像从左上角开始按特征贡献度从高到低的顺序排列。可以看出,每张图像都表示了人的整个面部。右图是NMF的结果,图像中暗的区域较多,但这些区域的值为0。我们还可以看出,每个潜在变量都代表了人脸的一部分特征。通过还原原始图像,可以明确两种方法的不同特点。PCA通过将不同的脸(负的脸和正的脸。听上去是不是有些奇怪?)加在一起来恢复原始图像。NMF则通过组合具有人脸部分特征的图像来恢复原始图像。NMF的潜在变量的含义(在本例中就是人脸的部分特征)的可解释性更强。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿梭的编织者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值