主要内容

执行非负矩阵分解

这个例子展示了如何进行非负矩阵分解。

加载示例数据。

负载摩尔X =摩尔(:1:5);rng (“默认”);%的再现性

计算的二级近似X使用乘法更新算法,从5个随机初始值开始WH

选择= statset (“麦克斯特”10“显示”“最后一次”);[W0, H0] = nnmf (X, 2,“复制”5,“选项”选择,“算法”“乘”);
rep迭代rms残差|delta x| 1 10 358.296 0.00190554 2 10 78.3556 0.000351747 3 10 230.962 0.0172839 4 10 326.347 0.00739552 5 10 361.547 0.00705539最终均方根残差= 78.3556

“乘”算法对初值比较敏感,在使用时是很好的选择“复制”找到WH从多个随机的起始值。

现在使用交替最小二乘算法进行分解,这种算法收敛得更快,也更一致。从初始阶段开始,运行100次以上的迭代W0H0确认以上。

选择= statset (“麦克斯特”, 1000,“显示”“最后一次”);[W H] = nnmf (X, 2,“w0”W0,“h0”H0,“选项”选择,“算法”“als”);
rep迭代rms残差|delta x| 1 2 77.5315 0.000830334最终均方根残差= 77.5315

这两列W是转化后的预测者。两排H给出五个预测因子的相对贡献X给预测者W.显示H。

H
H =2×50.0835 0.0190 0.1782 0.0072 0.9802 0.0559 0.0250 0.9969 0.0085 0.0497

第五项预测X(权重0.9802)强烈影响在W.第三个预测因子X(权重0.9969)强烈影响中第二个预测因子W

可视化预测因子的相对贡献Xbiplot,表示的列空间中的数据和原始变量W

biplot (H ',“分数”W,“varlabels”, {''''v3的''“v5”});xlabel([0 1.1 0 1.1])第一列的) ylabel (第2列的)

图中包含一个轴对象。axis对象包含17个类型为line, text的对象。

另请参阅

相关的话题