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