- 实验目的
• 1、理解无监督学习中NMF降维算法原理;
• 2、掌握Sklearn实现基于NMF方法及应用;
• 3、对比PCA和NMF两种方法,并进行总结。
- 实验内容与要求
- 非负矩阵分解
非负矩阵分解(Non-negative Matrix Factorization,NMF)是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。基本思想是给定一个非负矩阵V,NMF能够找到一个非负矩阵和一个非负矩阵H,使得矩阵W和H的乘积近似等于矩阵V中的值。
·W矩阵:基础图像矩阵,相当于从原矩阵V中抽取出来的特征
·H矩阵:系数矩阵
·NMF能够广泛应用于图像分析、文本挖掘和语音处理等领域。
- 矩阵分解优化
矩阵分解优化目标: 最小化W矩阵H矩阵的乘积和原始矩阵之间的差别,目标函数如下:
3、sklearn中非负矩阵分解:
在sklearn库中,可以使用sklearn.decomposition.NMF加载NMF算法,主要参数有
·n_components: 用于指定分解后矩阵的单个维度k;
·init: W矩阵和H矩阵的初始化方式,默认为'nndsvdar'
4、NMF人脸数据特征提取:
目标:已知Olivetti人脸数据共400个,每个数据是64*64大小。由于NMF分解得到的W矩阵相当于从原始矩阵中提取的特征,那么就可以使用NMF对400个人脸数据进行特征提取。通过设置k的大小,设置提取的特征的数目。在本实验中设置k=6随后将提取的特征以图像的形式展示出来。
- 实验程序与结果
import matplotlib.pyplot as plt
from sklearn import decomposition
from sklearn.datasets import fetch_olivetti_faces
from numpy.random import RandomState