数据挖掘--非负矩阵分解

交替最小二乘法:
如果同时解下图绿色方程的两个矩阵W和H,属于非线性问题,考虑先初始化一个矩阵W,再在非负矩阵的限制下求出矩阵H,再利用求出矩阵H反过来解矩阵W,…,直到满足误差限为止,这种方法叫交替最小二乘法。
数据挖掘--非负矩阵分解_第1张图片
考虑到这样分解出的矩阵W和H是不唯一的,而且有可能会出现负元素,我们还需要对每次迭代出的结果进行标准化。
活跃集方法:
在F范数下,进行矩阵的分解,可以看作是对矩阵A的每一列在二范数意义下进行的最小二乘。
活跃集方法的缺陷在于:对进行非负矩阵分解的速度太慢。
数据挖掘--非负矩阵分解_第2张图片
数据挖掘--非负矩阵分解_第3张图片
非负矩阵分解可以用来进行分类;
在这里插入图片描述
正如前面所言,我们还需要一个初始化的矩阵W,怎么确定这个矩阵呢?
使用
基于SVD的选择运算:
基于SVD的选择运算的MATLAB实验
理论:首先对矩阵A进行SVD分解得到的第一个左奇异向量u1和第一个右奇异向量v1(的转置)分别作为矩阵W的第一列和矩阵H 的第一行。因为矩阵A是非负不可约的,所以可以保证这两个奇异向量的非负性。
A的第二个左奇异向量,和,第二个右奇异向量用来构造一个新矩阵C,将C中的负元素置零,再对C进行SVD分解,取第一个左奇异向量、右奇异向量(的转置)分别作为W的第二列、H的第二行。
A的第三个左奇异向量,和,第三个右奇异向量用来构造…………

数据挖掘--非负矩阵分解_第4张图片
试验结果:
数据挖掘--非负矩阵分解_第5张图片
可见矩阵H中的前四列(所对应的文档)能够被最初选定的Google关键词很好地表示;
对比之下,
第三列(所对应的文档)可能不能够被最初选定的Google关键词很好地表示,因为(0.5251 0)不仅有一个零元,而且其中非零元所占比重也不大。

你可能感兴趣的:(数据挖掘与矩阵,非负矩阵分解,数据挖掘)