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所能提供的知識。除了諸如我們的迴歸示例之類的核心機器學習任務外,該庫當前還支持將持久同源性應用於圖形和時間序列數據。



分享到:


相關文章: