01.05 什么是拓扑机器学习以及实现其功能的Python库giotto-learn

拓扑机器学习是指将代数拓扑中的元素与统计学习结合在一起的一组技术。通过专注于全局属性如形状和连接,这些拓扑方法可以捕获常规机器学习方法忽略的模式。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

引入

围绕和拓扑机器学习遇到的最常见问题之一是"我从哪里开始?"。

本文概述了基本概念和工作流程,以便可以在机器学习管道中开始使用giotto-learn。



什么是拓扑机器学习?

拓扑机器学习是指将代数拓扑中的元素与统计学习结合在一起的一组技术。通过专注于全局属性如形状和连接,这些拓扑方法可以捕获常规机器学习方法忽略的模式。

例如,拓扑机器学习已在药物设计和图分类中产生了很不错的结果,并引出一些新颖见解。

这些技术的主要成分被称为持久同源性。持久同源性度量了各种长度范围内拓扑不变性(如连接的组件,孔和空隙)的存在。这些不变量的"出生"和"死亡"通过持久性图表进行了总结,这是生成新型特征以馈送到下游机器学习任务的最常见,最直观的方式。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

通过将相邻点与半径增大的圆连接起来,孔的诞生和死亡(左)。还显示了相应的持久性图(右)。

概括地说,拓扑机器学习的关键步骤是:

  • 使用持久性同源性从输入数据中提取拓扑特征。
  • 使用监督或非监督方法将这些特征与机器学习方法结合起来。

giotto学习库旨在简化这些步骤,并使更广泛的数据科学界可以访问拓扑机器学习。它基于的fit-transform范例,并与流行的框架紧密集成。

预测分子性质

为了展示giotto-learn的作用,我们将使用Kaggle上竞赛中的CHAMPS数据集。此处的任务是预测分子中两个原子之间的磁性相互作用或"标量耦合常数"。由于这些耦合取连续值,因此学习任务是一种回归。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

对于给定的分子,学习任务是预测每个原子对之间的偶联强度。

探索数据

训练数据由分子中的原子对组成,每对原子均以标量耦合的和每个原子的(x,y,z)坐标为特征。为了简化分析,我们将重点介绍100个最大的分子,即具有最大原子数的分子。如下图所示,这些分子具有五种不同的偶联,其强度取决于偶联的类型。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

数据中100个最大分子的每种偶联类型的偶联强度

从数据到持久图

我们的拓扑机器学习管道中的第一步是从训练数据构建持久性图。

在giotto-learn中,有两种主要方法可以实现此目的:

  • 将数据表示为:将每个观测值视为空间中的一个点,并使用度量标准来计算成对的观测值之间的距离。在我们的上下文中,单个分子的点云可以简单地是每个原子相对于所有原子的平均值(x̅,y̅,z̅)的(x,y,z)坐标。
  • 将数据表示为:计算每个观测值之间的成对距离,其中"距离"不必一定是度量。如果我们将单个分子视为图,则两个原子之间的距离可能是沿着连接它们的最短路径的边数。

对于每个输入点云或距离矩阵,我们得到一个持久性图。在训练数据中,每个观察都是一个原子对,因此将这些对分组以形成100个分子时,我们获得100个点云,从而获得100个余辉图。

持久性图中距离死亡=出生线对角线最远的点对应于最持久的拓扑特征。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

一个分子的点云(左)及其对应的持久性图(右)。连接的组件(H0)以红色显示,孔(H1)以青色显示,空隙(H2)以紫色显示。

从持久性图到机器学习功能

尽管持久性图是数据的有用描述符,但是它们不能直接用于机器学习应用程序。这是因为不同的持久性图可能具有不同的点数,并且没有很好地定义基本操作(如图的加法和乘法)。

为了克服这些限制,已经提出了各种建议,以通过嵌入或内核将持久化图"向量化",这些嵌入或内核非常适合机器学习。在giotto-learn中,我们通过该giotto.diagrams模块提供对最常见矢量化的访问。

另外,可以创建自己的自定义拓扑特征!由于giotto-learn中的持久性图是出生-死亡-维三元组的数组,因此使用NumPy或Pandas操作它们很简单。

在我们对CHAMPS数据集的全面分析中,我们提取了各种各样的拓扑特征。

训练模型

有了拓扑特征,下一步就是训练回归函数。在scikit-learn中,这等于将所有相关特征和目标变量组合到数组X和中y。我们采用 Kaggle提交中采用的方法,并使用进行预测。为了评估特征部件对性能的影响,我们比较了具有和不具有拓扑特征部件的经过5倍交叉验证训练的模型的结果。

得分预测

最后一步是对我们模型的预测进行评分。竞赛的指标是平均绝对误差的对数的平均值(是的,这有点复杂-可以将其视为多个分数,每种债券类型均得分。对于每种类型,计算平均绝对误差,取对数这些结果,最后计算所有债券类型的均值):

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

其中:

  • T是标量耦合类型的数量(在我们的示例中为5)
  • 是类型t的观测数
  • yᵢ是观测的标量耦合常数
  • ŷᵢ是预测的标量耦合常数

由于对数,我们可以获得负值,因此说-0.5的得分比-0.3的得分更好。

下图显示了每种耦合类型的分数,并将包含拓扑特征的模型与没有拓扑特征的模型进行了比较。

什么是拓扑机器学习以及实现其功能的Python库giotto-learn

我们可以清楚地看到,拓扑特征有助于将分数提高多达5.5%,平均提高3.6%。在Kaggle竞赛中,这些小的改进可以在最终排行榜中产生很大的不同,并很好地演示了拓扑如何为常规特征提取方法提供补充信息。

总结

本文讲解了拓扑机器学习库giotto所能提供的知识。除了诸如我们的回归示例之类的核心机器学习任务外,该库当前还支持将持久同源性应用于图形和时间序列数据。



分享到:


相關文章: