浅入浅出:PageRank算法 使用 TextRank 算法为文本生成关键字和摘要 基于物品的协同过滤 如何使用MapReduce实现基于物品的协同过滤(1) 如何使用MapReduce实现基于物品的协同过滤(2) 浅入浅出:K近邻算法 使用mahout下的朴素贝叶斯分类器对新闻分类 使用Affinity Propagation进行聚类 K-medoids聚类 矩阵分解在推荐系统中的应用:NMF和经典SVD实战 使用特征递归消除筛选特征 如何分配权重 比较NMF、PCA和VQ 方差和协方差 基于SVD的协同过滤 逻辑斯谛回归代码实现 隐语义模型和NMF(非负矩阵分解) 使用PCA处理MNIST数据集 使用GBDT选取特征 基于贝叶斯的文本分类系统的数据库设计 在hadoop1.2.1上安装mahout 0.9 Hadoop 2.4 实现Kmeans聚类算法 在Iris数据集上对比PCA、LDA、NMF 基于贝叶斯的文本分类实战 单层决策树 Logistic regression(逻辑斯蒂回归) 基于用户的协同过滤 词袋模型与文档-词矩阵 如何实现拼音与汉字的互相转换 梯度下降法 如何判定相似度 MovieLens数据集介绍 基于KNN的文本分类实战 Jasper文本分类系列博客阅读摘录 使用 Mean Shift进行聚类 朴素贝叶斯的三个常用模型:高斯、多项式、伯努利 使用决策树处理iris数据集 浅入浅出:从Kmeans到Kmeans++ 如何持久化scikit-learn中训练好的模型 浅入浅出:DBSCAN聚类算法(1) 浅入浅出:DBSCAN聚类算法(2) 2015阿里移动推荐算法比赛第一赛季总结 爬山算法 使用朴素贝叶斯分类器划分邮件 层次聚类 基于MapReduce的频繁项集挖掘 搜狗实体关系提取比赛

比较NMF、PCA和VQ


#机器学习


2014-12-23

在下面的这篇论文里:

Lee D D, Seung H S. Learning the parts of objects by non-negative matrix factorization[J]. Nature, 1999, 401(6755): 788-791.

论文中使用了2429张人脸图像,每个图像大小是19×19=361。

以图像重建为例对比了NMF、PCA和VQ。

关于NMF: 隐语义模型和NMF(非负矩阵分解)

关于PCA:使用PCA处理MNIST数据集

VQ,全称Vector Quantization,可以翻译成“矢量量化”。在下面的两个博客里给出了很好的介绍:

漫谈 Clustering (番外篇): Vector Quantization

语音信号处理之(三)矢量量化(Vector Quantization)

NMF

NMF将非负矩阵V分解为两个非负矩阵的成绩,即W×H。设V的大小是n×m,W大小是n×r,H大小是r×m。这篇论文里,目标是最大化下面的式子:

论文中给出下面的式子迭代更新W和H:

使用论文中的图像数据集,W的大小为361×2429。r设置为49,所以W的大小为361×49,H的大小为49×2429。W的每一列可以构造出一个19×19的图像,但与PCA不同的是,它们是parts-based representations。于是由W可构造49张图片。H的第i列与图片数据集中的第i个图片对应。H(j, i)代表图像i针对图像W(:, j)的权重。这些权重都是非负的。

下图展示了某个图像在NMF下的重建结果:

VQ

由于NMF中r=49,使用VQ时,将2429张人脸图像使用kmeans聚成49个簇,每个簇的所有图像求centroid,可以得到49个基本图像。重建某个人脸图像时,重建结果是该图像所属的簇的centroid对应的图像。

下图展示了某个图像(和上面的NMF使用同一个图像)在VQ下的重建结果:

PCA

使用PCA将这些图像降到49维度,可以得到49个“特征脸”,对这49个“特征脸”加权求和可以得到一张“原始的脸”(原始图像)。

下图展示了某个图像(和上面的NMF使用同一个图像)在PCA下的重建结果:

PCA与NMF的一个不同是PCA的权重有正有负。另外一点是,NMF构造的49张图像,每一张展示的是脸的部某分,每张图像是稀疏的;而PCA的每张“特征脸”都显示出了脸的轮廓。



( 本文完 )