幾行 Python 代碼就可以提取數(shù)百個時間序列特征
傳統(tǒng)的機器學(xué)習(xí)算法不能捕捉時間序列數(shù)據(jù)的時間順序。數(shù)據(jù)科學(xué)家需要執(zhí)行相關(guān)的特征工程,將數(shù)據(jù)的重要特征捕獲到幾個指標(biāo)中。生成大量的時間序列特征并從中提取相關(guān)特征是一項耗時且繁瑣的工作。
python的tsfresh包可以為時間序列數(shù)據(jù)生成標(biāo)準(zhǔn)的數(shù)百個通用特性。在本文中,我們將深入討論tsfresh包的使用。
tsfresh 是一個可以生成數(shù)百個相關(guān)的時間序列特征的開源包。 從 tsfresh 生成的特征可用于解決分類、預(yù)測和異常值檢測用例。
tsfresh 包提供了對時間序列數(shù)據(jù)執(zhí)行特征工程的各種功能,包括:
- 特征生成
- 特征選擇
- 與大數(shù)據(jù)的兼容性
安裝tsfresh 也非常的簡單,官方提供了pip和conda的安裝方式:
pip install -U tsfresh# orconda install -c conda-forge tsfresh
1、特征生成
tsfresh 包提供了一個自動特征生成 API,可以從 1 個時間序列變量中生成 750 多個相關(guān)特征。 生成的特征廣泛,包括:
- 描述性統(tǒng)計(平均值、最大值、相關(guān)性等)
- 基于物理的非線性和復(fù)雜性指標(biāo)
- 數(shù)字信號處理相關(guān)功能
- 歷史壓縮特征
使用 tsfresh.extract_features() 函數(shù)可以為 1 個時間序列變量從多個域生成 789 個特征。
import pandas as pdfrom tsfresh import select_features# Read the time-series datadf = pd.read_excel("train.xlsx", parse_dates=['date']).set_index('date')# automated feature generationfeatures = tsfresh.extract_features(df, column_id="date", column_sort="date")
因為特征太多,所以具體的所有特征的介紹請查看官方文檔。
2、特征選擇
tsfresh 包還提供了一個基于假設(shè)檢驗的特征選擇實現(xiàn),可以用于識別目標(biāo)變量的相關(guān)特征。 為了限制不相關(guān)特征的數(shù)量,tsfresh 包含了fresh算法(fresh 代表基于可擴展假設(shè)測試的特征提?。?/p>
tsfresh.select_features() 函數(shù)用戶可以實現(xiàn)特征選擇。
3、兼容大數(shù)據(jù)
當(dāng)我們有大量的時間序列數(shù)據(jù)時。tsfresh還提供api來擴展特征的生成/提取,以及針對大量數(shù)據(jù)的特征選擇實現(xiàn):
- 多線程處理:默認tsfresh包可以將特征生成/提取和特征選擇在多核上并行執(zhí)行。
- 分布式框架:tsfresh還實現(xiàn)了一個自己的分布式框架,將特征計算分布在多臺機器上加快計算速度。
- Spark兼容:tsfresh還可以使用spark或Dask來處理非常大的數(shù)據(jù)。
最后總結(jié),tsfresh可以通過幾行Python代碼中為時間序列特性生成和選擇相關(guān)特性。它會自動從基于時間的數(shù)據(jù)樣本的多個域中提取和選擇 750 +個經(jīng)過實際測試的特征。 它減少了數(shù)據(jù)科學(xué)家浪費在特征工程上的大量工作時間。
并且時間序列數(shù)據(jù)是相當(dāng)大的,tsfresh 也通過多線程、支持dask和spark來處理單機處理不了的大數(shù)據(jù)樣本。