
126
|
第
3
章
fig, axes = plt.subplots(4, figsize=(8, 4), gridspec_kw={'hspace': .5},
subplot_kw={'xticks': (), 'yticks': ()})
for model, name, ax in zip(models, names, axes):
ax.set_title(name)
ax.plot(model[:, :3], '-')
图 3-19:利用 NMF 和 PCA 还原混合信号源
图中包含来自
X
的
100
次测量中的
3
次,用于参考。可以看到,
NMF
在发现原始信号源
时得到了不错的结果,而
PCA
则失败了,仅使用第一个成分来解释数据中的大部分变化。
要记住,
NMF
生成的分量是没有顺序的。在这个例子中,
NMF
分量的顺序与原始信号完
全相同(参见三条曲线的颜色),但这纯属偶然。
还有许多其他算法可用于将每个数据点分解为一系列固定分量的加权求和,正如
PCA
和
NMF
所做的那样。讨论所有这些算法已超出了本书的范围,而且描述对分量和系数的约
束通常要涉及概率论。如果你对这种类型的模式提取感兴趣,我们推荐你学习 scikit-
learn 用户指南中关于独立成分分析(
ICA
)、因子分析(
FA
)和稀疏编码(字典学习)等
的内容,所有这些内容都可以在关于分解方法的页面中找到(
http://scikit-learn.org/stable/
modules/decomposition.html
)。
3.4.3
用