1. 程式人生 > >閱讀筆記:Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests(Python package)

閱讀筆記:Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests(Python package)

閱讀筆記:Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package)

摘要:
時間序列特徵工程是一個耗時的過程,因為科學家和工程師必須考慮訊號處理和時間序列分析的多種演算法,以便從時間序列中識別和提取有意義的特徵。Python工具包tsfresh(基於可擴充套件假設檢驗的時間序列特徵提取)通過組合63個時間序列表徵方法(characterization methods)來加速此過程,預設情況下計算總共794個時間序列特徵,並基於自動配置的假設檢驗進行特徵選擇。通過在資料科學過程的早期階段識別具有統計顯著性的時間序列特徵,tsfresh將關閉與領域專家的反饋迴圈,並在早期促進領域特定功能的開發。該軟體包實現了時間序列和機器學習庫(例如pandas和scikit-learn)的標準API,旨在用於探索性分析以及直接整合到操作資料科學應用程式中。

1. Introduction

諸如物聯網(IoT)[1],工業4.0 [2]和精準醫學[3]等趨勢是由廉價感測器的可用性和搞的聯通性推動的,其中包括增加時間註釋資料的可用性。由此產生的時間序列是機器學習應用的基礎,如分類任務中的硬碟特定故障風險等級分類[4],人類心跳分析[5],生產線優化[6],日誌分析伺服器農場檢測入侵者[7],或識別具有高感染風險的患者[8]。迴歸任務的例子是預測機器的剩餘使用壽命[9]或複雜事件處理應用中條件事件發生的估計[10]。其他頻繁出現的時間資料是來自過程的事件序列,可以通過過程演化函式將其轉換為統一取樣的時間序列[11]。

在資料科學專案的早期階段,時間序列特徵提取起著重要作用,以便快速提取和探索不同的時間序列特徵,並評估它們在預測目標方面的統計意義。Python工具包tsfresh通過提供基於FRESH演算法的自動時間序列特徵提取和選擇來支援此過程[12]。

2. Problems and background

時間序列是在時間上順序進行的觀測值序列[13]。為了使用一組時間序列D={xi}i=1N 作為監督或無監督機器學習演算法的輸入,每個時間序列χi需要被對映到具有問題特定維度M和特徵的明確定義的特徵空間中。向量xi=xi1xi2...xiM。原則上,可以通過從每個時間序列χi中選擇M個數據點作為特徵向量xi的元素,決定將集合D的時間序列對映到N行和M列的設計矩陣中。然而,從模式識別的角度[14],在資料點分佈,相關性,平穩性,熵和非線性時間序列分析方面表徵時間序列更加有效和有效[15]。因此,可以通過應用時間序列表徵方法

fj來構造特徵向量xiχixij到相應的時間序列χi,其導致特徵向量xi=f1χif2χi...fMχi。此特徵向量可以通過其他單變數屬性{ai1ai2...aiU}i=1N和來自其他型別時間序列的特徵向量。如果機器學習問題每個樣本i總共具有K個不同的時間序列和U單變數變數,則得到的設計矩陣將具有i行和(K·M + U)列。這裡,M表示來自時間序列表徵方法的特徵數。處理的時間序列不需要具有相同數量的資料點。
這裡寫圖片描述
圖1:tsfresh演算法的三個步驟是特徵提取(1.),p值的計算(2.)和多個測試過程(3.)[12]:步驟1.和2.在tsfresh中高度並行化,進一步3.具有可忽略的執行時間(相對於1),提供公共函式extract_features。2.和3.可以由公共函式select_features執行。函式extract_relevant_features結合了所有三個步驟。預設情況下,步驟2的假設檢驗是根據監督機器學習問題(分類/迴歸)和特徵型別(分類/連續)[12]自動配置的。

對於分類和迴歸任務,提取特徵的重要性非常重要,因為太多不相關的特徵會削弱演算法在訓練集之外的泛化效能,並導致模型過擬合[12]。因此,tsfresh基於統計假設檢驗提供高度並行的特徵選擇演算法,預設情況下根據監督機器學習問題(分類/迴歸)和特徵型別(分類/連續)[12]自動配置。

3. Software framework

3.1. Software architecture
通過廣泛部署pandas.DataFrames,例如作為輸入和輸出物件,並提供scikit-learn相容的轉換器類,tsfresh實現了最流行的Python機器學習和資料分析框架的應用程式程式設計介面,如scikit-learn [16],numpy [17],pandas [18],scipy [19],keras [20]或tensorflow [21]。這使使用者能夠將tsfresh無縫整合到複雜的機器學習系統中,這些系統依賴於最先進的Python資料分析軟體包。
feature_extraction子模組(圖1)包含特徵計算器的集合以及將它們有效地應用於時間序列資料的邏輯。該子模組的主要公共功能是extract_features。所有提取的特徵的數量和引數由設定字典控制。它可以手動填充,使用其中一個預定義物件進行例項化,或者從現有要素矩陣的列名重建。feature_selection子模組提供函式select_features,它實現了高度並行的特徵選擇演算法[12]。另外,tsfresh包含幾個次要子模組:實用程式提供在整個包中使用的輔助函式。便利性包含extract_relevant_features功能,該功能將提取和選擇與其間的附加輸入步驟相結合。變換器允許使用tsfresh作為scikit-learn [16]管道的一部分。測試套件涵蓋了97%的程式碼庫。
特徵選擇和tsfresh中的特徵計算是並行化的,並且通過計算相似特徵的組並共享輔助結果來防止不必要的計算。例如,如果多個特徵返回擬合的自迴歸模型(AR)的係數,則AR模型僅適合一次並共享。本地並行化是在Python模組多處理的基礎上實現的,用於特徵選擇和特徵提取。在Dask [22]的基礎上支援叢集上的分散式計算。
特徵的提取和選擇過程中的並行化可以顯著改善執行時間(圖2)。然而,特徵計算器臨時使用的儲存器很快就會以並行方式加起來。因此,平行計算的儲存器消耗可以很高,這可以使得在具有低儲存器的機器上使用大量處理是不可行的。

3.2. Software functionalities
tsfresh提供63種時間序列表徵方法,可計算總共794個時間序列特徵。單變數屬性的設計矩陣可以通過來自一個或多個相關時間序列的時間序列特徵來擴充套件。或者,可以從一組時間序列生成設計矩陣,該時間序列可以具有不同數量的資料點並且可以包括不同型別的時間序列。得到的設計矩陣可以用於無監督機器學習或監督機器學習,在這種情況下,可以針對手頭的分類或迴歸問題選擇統計上顯著的特徵。為此,根據監督機器學習問題(分類/迴歸)和特徵型別(分類/連續)[12]自動配置假設檢驗。
設計矩陣的行對應於由其id標識的樣本,而其列對應於提取的特徵。列名相對於以下三個方面唯一地標識相應的特徵。(1)特徵所基於的時間序列的型別,(2)用於提取特徵的特徵計算器的名稱,以及(3)構成相應特徵計算器的引數的鍵值對:

[kind][calculator][parameterA][valueA][parameterB]_[valueB]

對於監督機器學習任務,已經適配了sklearn相容變換器FeatureSelector的例項,能夠考察特徵的重要性,通過1p-value的報告(根據自動配置的假設檢驗結果)。

4. Illustrative example and empirical results

在這個例子中,我們將檢查機器人上的15個力和扭矩感測器,以便檢測機器人中的故障
Alt text
圖2. MacBook Pro,2.7 GHz Intel Core i5和tsfresh v0.11.0上的30個時間序列的提取和選擇時間序列功能的記憶體消耗(表1)。每個時間序列的長度為1000個數據點。(a)一個核心,(b)四個核心(b)。
Alt text
圖3.在MacBook Pro,2.7 GHz Intel Core i5和tsfreshv0.11.0上有1000個數據點的時間序列沒有並行化的特徵計算演算法的平均執行時間(表1)。執行時間在1.7毫秒到4.8秒之間,中位數為3.6毫秒。
Alt text

在第5行,我們載入資料集。然後,在第6行中,從包含時間序列的pandas.DataFrame df中提取特徵。生成的pandas.DataFrame X(設計矩陣)包含3270個時間序列特徵。我們必須通過在第7行中輸入來替換非有限值(例如NaN或inf)。最後,tsfresh的特徵選擇用於過濾掉不相關的特徵。最終設計矩陣X_filtered包含623個時間序列特徵,其現在可用於訓練分類器(例如來自scikit-learn包的RandomForest)以基於感測器時間序列預測機器人執行失敗。

此示例在Jupyter筆記本robot_failure_example.ipynb中進行了擴充套件。1附錄中給出的執行時分析(圖A.1)總結在圖3中。它顯示了對於1000個數據點的時間序列,tsfresh的特徵計算器的平均執行時間的對數的直方圖和箱線圖。平均值是從30個不同時間序列的樣本中獲得的,其中所有特徵都已計算三次。時間序列預先由以下序列xt + 1 = xt + 0.0045(y-1 / 0.3)xt-325x3 t + 6.75·10-5ηt模擬,其中ηt~N(0,1)[25,p。164]和y是目標。該圖顯示除了9個時間序列特徵提取方法之外的所有方法都具有低於25毫秒的平均執行時間。在選擇了來自UCR時間序列分類檔案的31個數據集以及德國鋼鐵製造商生產鋼坯的工業資料集時,FRESH演算法能夠自動提取時間序列分類任務的相關特徵[12]。新演算法能夠與使用的特徵數量,裝置/樣本數量和不同時間序列的數量成線性比例[12]。它相對於時間序列長度或特徵數量的縮放取決於各個特徵計算器。一些特徵,例如最大值與時間序列的長度成線性比例,而其他更復雜的特徵具有更高的成本,例如樣本熵的計算(圖A.1)。因此,調整計算的特徵可以徹底改變tsfresh的總執行時間。

5. Conclusions

基於Python的機器學習庫tsfresh是一個快速,標準化的機器學習庫,用於自動時間序列特徵提取和選擇。它是唯一用於此目的的基於Python的機器學習庫。唯一的選擇是基於Matlab的軟體包hctsa [26],它提取了超過7700個時間序列特徵。由於tsfresh實現了scikit-learn的應用程式程式設計介面,因此可以輕鬆地將其整合到複雜的機器學習管道中。tsfresh軟體包的廣泛採用表明,迫切需要自動提取特徵,這些特徵源自例如金融,生物或工業應用。我們預計,由於註釋時態資料的可用性越來越高,對這些工具的興趣將繼續增長。

Appendix A. Detailed runtime of time series feature extraction
Average runtime of time series feature extraction methods documented in http://tsfresh.readthedocs.io/en/latest/text/list_of_features.html