polyview Python 包为多视图机器学习工作流提供了什么?

polyview 以兼容 scikit-learn 的接口统一多视图嵌入、聚类、融合与视图增强。

直接答案

polyview 是一个纯 Python、兼容 scikit-learn 的包,把多视图嵌入、聚类、融合、视图增强和不完整视图插补整合到一个可组合的接口中,并用 PolyPipeline 类衔接多视图与单视图阶段。其基于 CCA 的组件在聚类质量上与两个成熟库相当,同时运行更快。

1篇文献引用

本文由 WisPaper 驱动的搜索和论文分析生成。

统一的多视图工具为何长期缺位

多视图学习利用同一批对象的多种互补表示,例如文本、图像和传感器流,或同一信号的变换版本。论文认为这类数据如今已很常见,但 Python 生态仍缺少活跃维护、面向端到端多视图工作流的统一工具。

作者具体指出了这一缺口。范围最接近的包 mvlearn 自 2022 年 4 月起再无更新,已无法在当前 Python 版本上安装;multiview 自 2018 年起未更新。仍在维护的替代品如 cca-zoo 和 multi-view-AE 分别面向特定方法族——基于 CCA 的嵌入和自编码器——并未提供统一接口,把不同多视图策略与标准单视图预处理和学习方法组合起来。对融合方法以及多于两个视图场景的支持也仍然有限。

polyview 正是对此的回应:它把主要多视图策略置于熟悉的 scikit-learn API 之下,优先选择能跨异构数据和任意视图数量通用的方法。

四类策略组织起整个包

论文把多视图工作流分为四类,polyview 的子模块与之对应。表示对齐(MV 到 MV)借助其他视图的信息为每个视图找到一个表示。融合(MV 到 SV)把各视图合并为一个共享表示,或在后期融合中组合各视图的预测。聚类(MV 到标签)直接从多视图数据推断潜在分组,不一定计算显式的共享表示。视图增强(SV 到 MV)通过投影、子空间或核从单视图数据生成额外视图。

对齐与融合之间的边界并不总是清晰。论文指出,典型相关分析会产生共享潜在空间,而在其多视图扩展中,有些学习共享表示,例如 MCCA,另一些则把视图融合为单一且对齐良好的表示,例如 GCCA。

这里的工作流指端到端流水线,可能包含预处理、视图增强、表示学习和下游目标。实践中这四类常被组合在同一个工作流里,因此 polyview 把方法组织为可组合的子模块,而不是孤立的算法。

兼容 sklearn 并支持流水线组合

四条设计原则指导这个包。兼容 sklearn 意味着估计器遵循熟悉的约定:超参数在构造函数中设置,fit 返回估计器,提供 transform 和 predict 方法,拟合后的属性带下划线后缀,并继承 sklearn 的 BaseEstimator,从而支持 get_params、set_params 和 clone。单视图 sklearn 估计器可直接在 PolyPipeline 内使用。

灵活性意味着多视图与单视图组件可通过 PolyPipeline 组合在一个流水线中,无需自定义胶水代码。清晰性意味着实现优先考虑可读性和显式性,便于用户检查和理解。第四条原则是可扩展性,体现在一组核心类和工具上,使用户能组合不同方法并实现新方法。

论文强调,该包是为真实工作流中的实际组合而设计,而非孤立地使用算法,并显式支持衔接多视图与单视图阶段。

基准测试是如何进行的

该包在五个真实多视图数据集上做了演示。结果叙述中描述了其中三个:mfeat 有 2000 个样本、6 个视图和 10 个类别;Caltech101-7 有 1474 个样本、6 个视图和 7 个类别;Outdoor Scene 有 2688 个样本、4 个视图和 8 个类别。另外两个基准是 MSRC-v5,含 210 张图像、7 个类别和 5 个视图,每个视图 24 到 576 个特征;以及 100leaves,含 1600 片植物叶片、100 个类别和 3 个视图,每个视图 64 个特征,分别对应形状、边缘和纹理。

视图经过标准化,其中 MultiViewNMF 因要求非负输入而采用最小—最大缩放,聚类数设为类别数,即 k = K。每个工作流都用同一套 API 表达,或作为单个多视图估计器,或作为组合 polyview 与 sklearn 组件的 PolyPipeline。

聚类质量以调整互信息(AMI)指数报告,对 5 个随机种子取均值并给出标准差,同时报告完整工作流的中位挂钟时间(秒)。这里需要关注的是 AMI:它衡量发现的聚类与已知标签之间的一致程度,因此不同于下游分类准确率。

没有一种策略在所有数据集上胜出

最佳策略取决于数据集。按 AMI,MultiViewCoRegSpectralClustering 在 mfeat 上最佳,为 0.90,在 MSRC-v5 上最佳,为 0.72;MultiViewCoTrainSpectralClustering 在 100leaves 上最佳,为 0.93。早期融合和随机子空间视图在 Caltech101-7 和 Outdoor Scene 上领先。

与更简单基线的对比很有信息量。在 mfeat 上,最佳单视图加 KMeans 达到 0.748,ConcatFusion 加 KMeans 达到 0.812,MultiViewCoRegSpectralClustering 达到 0.900。在 100leaves 上,ConcatFusion 加 KMeans 达到 0.916,MultiViewCoTrainSpectralClustering 达到 0.930,而最佳单视图为 0.690。在 MSRC-v5 上,ConcatFusion 加 KMeans 达到 0.675,MultiViewCoRegSpectralClustering 达到 0.715,而最佳单视图为 0.562。

论文把这种差异解读为呼应视图不平衡问题:各视图贡献并不相等,有些可能含噪、冗余甚至误导。这正是论文主张在同一接口内比较策略、而非假定某种方法可通用的理由。

标签匹配改变后期融合结果

后期融合说明了标签匹配的重要性。逐视图 KMeans 加多数投票在 mfeat 上得 0.440,在 Caltech101-7 上得 0.249,在 Outdoor Scene 上得 0.218,在 MSRC-v5 上得 0.296,在 100leaves 上得 0.464。设置 align_labels=True 后,这些数值分别升至 0.747、0.439、0.383、0.408 和 0.619,论文将其概括为从 0.22 到 0.46 提升至 0.38 到 0.75。

这是论文内部同一数据、同一指标下一种工作流变体与另一种的对比,并非声称后期融合优于多视图聚类。即便对齐之后,多数投票在多数数据集上仍低于最佳多视图聚类结果。

运行时间比 AMI 更清晰地区分了各工作流。最快的工作流始终是早期融合和基于 CCA 的嵌入。在 mfeat 上,GCCA 耗时 0.08 秒,MCCA 耗时 0.06 秒,而 MultiViewKMeans 耗时 8.47 秒,MultiViewMDS 耗时 20.9 秒。随机子空间视图明显更慢,在 mfeat 上为 6.96 秒,在 Outdoor Scene 上为 27.4 秒。

基于 CCA 的组件比肩成熟库

论文把 polyview 基于 CCA 的组件与两个成熟库 cca-zoo 和 mvlearn 的对应组件做了比较。报告的结果是,polyview 基于 CCA 的组件在聚类质量上与两者相当,且运行时间更低。

这一比较的范围比整个包更窄。它只覆盖基于 CCA 的组件,而非嵌入、聚类、融合、增强和插补的全部工具,并且是在上述数据集上运行的。论文更宽泛的主张是,polyview 既是用于基准测试和原型开发多视图方法的实用工具包,也是该领域未来研究开发的基础。

作者也说明了后续工作:直接从缺失视图学习的方法、提升依赖稠密 N×N 矩阵方法的可扩展性、扩充已实现方法与文档,以及鼓励社区贡献。

采用 polyview 前需要核对什么

所述版本为 0.1.0,是纯 Python 包,用 pip install polyview 安装。依赖为 NumPy、SciPy 和 scikit-learn,matplotlib 和 NetworkX 为可选,用于 draw 可视化。测试套件包含 361 个单元测试,覆盖每个估计器、MultiViewDataset、PolyPipeline 和插补工具,行覆盖率为 94%,并在 Python 3.13 和 3.14 上通过。所有随机组件都暴露 random_state 参数,便于控制流水线。

实际优先级来自结果而非功能列表。由于在五个数据集上没有单一策略始终领先,且最佳单视图与最佳多视图工作流之间的差距从 Caltech101-7 上约 0.05 AMI 到 100leaves 上超过 0.2 不等,与决策最相关的一步是在同一接口内、用自己的视图对候选策略做基准测试。在运行时间重要时,早期融合和基于 CCA 的嵌入是快速选项;在 AMI 最重要时,共正则化和协同训练谱聚类变体在 mfeat、MSRC-v5 和 100leaves 上领先,而早期融合和随机子空间视图在 Caltech101-7 和 Outdoor Scene 上领先。

有两条边界限定这一建议。基准测试使用 k = K,即聚类数设为已知类别数,且最佳单视图是用标签事后选出的,这在真实部署中无法做到,因而对单视图基线有利。与 cca-zoo 和 mvlearn 的报告比较只覆盖基于 CCA 的组件,因此更广泛工具包的优势在于组合能力和覆盖范围,而非在每个方法族上都做过正面精度对比。

本文引用的文献

1

polyview: A Python package for multi-view machine learning

polyview 提供兼容 scikit-learn 的统一接口,用于多视图嵌入、聚类、融合、视图增强和不完整视图处理;在五个真实数据集上没有单一策略处处领先,其基于 CCA 的组件在聚类质量上与 cca-zoo 和 mvlearn 相当,且运行时间更低。