第 10 章 进阶拓展方向 掌握 Ripser.py 之后,本章指向 持久图机器学习、GPU 加速、与其他 TDA 库分工、研究前沿,帮你规划下一步。 10.1 TDA + 机器学习管线 典型架构: persim PersistenceImager(概念) giotto-tda(高层封装) giotto-tda 提供 transformer + 、 等,适合快速原型。 10.2 多尺度与滑动窗口 技巧 | 用途 滑动窗口 ripser | 时间序列局部拓扑变化 多 thresh 特征 | 拼接不同尺度的 Betti 曲线 函数域过滤 | Lower-Star + 不同平滑核 10.
掌握 Ripser.py 之后,本章指向 持久图机器学习、GPU 加速、与其他 TDA 库分工、研究前沿,帮你规划下一步。
典型架构:
数据集 {X_i} │ ▼ 对每个 X_i:ripser → dgms_i │ ▼ 向量化:Persistence Image / Landscape / Betti curve │ ▼ 特征矩阵 (N, F) │ ▼ 分类 / 回归 / 聚类
from persim import PersistenceImager # 在训练集持久图上 fit 像素化范围 pimgr = PersistenceImager(pixel_size=0.05) pimgr.fit(dgms_list) features = np.array([pimgr.transform(d) for d in dgms_list])
giotto-tda 提供 Ripser transformer + PersistenceEntropy、Amplitude 等,适合快速原型。
| 技巧 | 用途 |
|---|---|
| 滑动窗口 ripser | 时间序列局部拓扑变化 |
| 多 thresh 特征 | 拼接不同尺度的 Betti 曲线 |
| 函数域过滤 | Lower-Star + 不同平滑核 |
Ripser++ 是 Ripser 的 GPU 实现,适合 极大 点云或批量化场景。
| Ripser.py | Ripser++ | |
|---|---|---|
| 平台 | CPU,Python 友好 | GPU,独立项目 |
| 集成 | pip install ripser | 需 CUDA 环境 |
| 适用 | 通用、中大规模 | 超大规模、批处理 |
Ripser.py 仍是 Python 生态默认入口;GPU 需求时再评估 Ripser++。
| 库 | 强项 | 弱项 |
|---|---|---|
| Ripser.py | VR 极快、API 简洁 | 无 Alpha/Čech 原生 |
| GUDHI | Alpha、Rips、Cubical 全 | API 陡、绑定 C++ |
| Dionysus | 教学、灵活 | 性能一般 |
| teaspoon | 时序 TDA | 领域专 |
选型建议:
| 主题 | 一句话 |
|---|---|
| 稳定性定理 | 小扰动 → 持久图瓶颈距离有界 |
| 插值与平均 | Wasserstein/bottleneck 重心(研究活跃) |
| 映射诱导同态 | 两个空间映射比较持久模块 |
| 多参数持久 | 多个过滤参数同时变化(计算更难) |
| 相对持久同调 | 子空间/带注解数据 |
若你 fork 或贡献 scikit-tda/ripser.py:
| 层次 | 内容 |
|---|---|
| Python 层 | 新 metric 包装、输入校验、辅助构造 |
| Cython 层 | pyRipser 绑定 C++ |
| C++ 层 | Ripser 核心算法 |
本地编译可启用 robin_hood 哈希表,性能提升约 30%(官方 benchmark)。
| 领域 | TDA 用法 |
|---|---|
| 点云形状分析 | H1 环、H2 空腔 |
| 材料科学 | 孔隙结构持久图 |
| 脑连接 / fMRI | 相关矩阵阈值图 + VR |
| 金融时序 | Lower-Star 检测 regime change |
| 生成模型评估 | 生成 vs 真实持久图距离 |
PersistenceImager 将 20 个圆环 vs 20 个随机集的 H1 持久图向量化,训练 logistic 回归。| 章 | 核心 |
|---|---|
| 0 | 全景与路线 |
| 1 | 安装与首跑 |
| 2 | 同调与持久 |
| 3 | VR 过滤 |
| 4 | API |
| 5 | 可视化 |
| 6 | 稀疏与贪心 |
| 7 | Lower-Star |
| 8 | cocycles 与 coeff |
| 9 | 工程实践 |
| 10 | 进阶 |
附录 A/B/C 供查阅术语、接口与排错。祝你在拓扑数据分析的路上持续探索。
学完正文,按下面的索引对照运行示例:
| 示例主题 | 章节 | 一句话 |
|---|---|---|
| 圆环 Hello World | 1 | 第一张持久图 |
| 返回字典逐字段解读 | 1、4 | 看懂 dgms / cocycles / num_edges |
| sklearn 接口与 thresh 调参 | 1、4 | Rips 类的 fit / transform |
| VR 复形随半径演化 | 3 | Betti 曲线随 ε 变化 |
| 持久图与条形码可视化 | 5 | persim 三件套 + 瓶颈距离 |
| 圆环 vs 随机点对照 | 5 | 拓扑差异的直观验证 |
| 预计算与稀疏距离矩阵 | 6 | 任意度量 + 稀疏加速 |
| 贪心置换子采样 | 6 | 大规模点采样与精度评估 |
| 图像 Lower-Star 过滤 | 7 | 灰度图拓扑 |
| 时间序列 Lower-Star | 7 | 信号峰谷结构 |
| 代表上循环与系数域 | 8 | cocycle 提取与 Z/pZ |
| 工程实践与可复现 | 9 | 参数调优清单 |
| 持久图向量化做分类 | 10 | TDA + ML 完整管线 |
💡 如果要做 TDA + ML 的毕业项目,从「持久图向量化做分类」示例开始——它展示了从「点云 → 持久同调 → 统计特征 → 逻辑回归分类」的完整管线,是接 giotto-tda Pipeline 的起点。