時間序列無處不在,心電圖上的心跳、股票價格、家庭智能電表讀數(shù),甚至句子中詞語——這些都是時間序列。它們的特殊之處在于順序:過去影響未來,相鄰的數(shù)據(jù)點(diǎn)往往高度相關(guān)。
現(xiàn)代預(yù)測和分類模型很少直接處理原始時間序列值。它們依賴的是特征:用來描述序列形狀、變異性、趨勢和模式的摘要信息。好的特征能把困難的預(yù)測問題轉(zhuǎn)化為更簡單的回歸或分類任務(wù)。
當(dāng)前有兩大趨勢,一是 AutoML(自動機(jī)器學(xué)習(xí)),像 auto-sklearn 這樣的系統(tǒng)能自動搜索模型族、超參數(shù)和預(yù)處理步驟。二是自動化時間序列特征提取,像 tsfresh 這樣的庫可以從每個序列生成數(shù)百個特征,涵蓋統(tǒng)計量、自相關(guān)、頻譜內(nèi)容、熵等各個維度。
最近的研究表明,將 AutoML 與豐富的時間序列特征結(jié)合,在許多預(yù)測任務(wù)上能超越復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)。更有意思的是這種方法甚至可以通過"語言時間序列"來提升文本分類的性能。
![]()
本文將介紹多步時間序列預(yù)測的構(gòu)建方式、auto-sklearn 如何擴(kuò)展用于時間序列、tsfresh 的工作原理和使用方法,以及兩個案例研究:數(shù)值預(yù)測和文本作為時間序列。文末還有一些可以直接應(yīng)用到項目中的實(shí)用技巧。
多步預(yù)測:不僅預(yù)測下一步,還要預(yù)測接下來的 k 步
多步超前預(yù)測的目標(biāo)不是預(yù)測下一個值,而是預(yù)測一整個序列的未來值:
比如預(yù)測未來 24 小時的電力負(fù)荷、未來 10 天的原油價格,或者提前幾個時間步預(yù)測洪水水位。
兩種主要策略被廣泛使用。
遞歸策略
首先訓(xùn)練一個模型只預(yù)測下一個時間步:
然后把這個預(yù)測值作為輸入反饋進(jìn)去,得到下一個預(yù)測:
如此重復(fù)直到達(dá)到 。
這種方法只需訓(xùn)練一個模型,計算成本較低。但問題在于早期步驟的任何誤差都會在后續(xù)預(yù)測中傳播和放大,這就是我們常說的自回歸預(yù)測。
直接多輸出策略
另一種思路是訓(xùn)練一個模型一次預(yù)測所有未來步驟:
這樣做的好處是跨預(yù)測范圍沒有誤差累積,在固定計算預(yù)算下通常準(zhǔn)確性更好。缺點(diǎn)是模型更復(fù)雜,數(shù)據(jù)有限時可能更難擬合。
實(shí)踐中兩種策略都有用武之地。關(guān)鍵點(diǎn)在于:無論選擇哪種策略,輸入窗口大小 w 的選擇以及從該窗口計算的特征都會顯著影響性能。
時間序列的 AutoML:擴(kuò)展 auto-sklearn
AutoML 的目標(biāo)是自動化機(jī)器學(xué)習(xí)流水線的設(shè)計,包括數(shù)據(jù)清洗、特征預(yù)處理、模型選擇和超參數(shù)調(diào)優(yōu)。像 auto-sklearn 這樣的系統(tǒng)把這當(dāng)作搜索問題來處理:用貝葉斯優(yōu)化和元學(xué)習(xí)探索不同的流水線,構(gòu)建優(yōu)秀候選者的集成。
典型的 auto-sklearn 流水線包含預(yù)處理器(縮放、填充等)、特征預(yù)處理器(PCA、核近似等)、模型(SVM、隨機(jī)森林、梯度提升等)以及集成構(gòu)建組件。
不過原始的 auto-sklearn 是為通用表格數(shù)據(jù)設(shè)計的。開箱即用時它不包含專門的時間序列特征提取器,像自相關(guān)峰值、頻譜熵或季節(jié)性統(tǒng)計量這些。
有人對 auto-sklearn 做了修改,讓特征預(yù)處理階段可以包含時間序列特征提取(特別是使用 tsfresh),并且把窗口大小 w 本身作為超參數(shù)來搜索。擴(kuò)展后的 AutoML 系統(tǒng)會搜索算法 A(SVM、GBM 等)、超參數(shù) λ 和窗口大小 w,以最小化驗(yàn)證數(shù)據(jù)上的損失函數(shù)(如 RMSE)。
tsfresh
tsfresh(Time Series Feature Extraction based on Scalable Hypothesis tests,基于可擴(kuò)展假設(shè)檢驗(yàn)的時間序列特征提取)是一個 Python 庫。它能自動從每個時間序列計算數(shù)百個特征:"綜合"特征集大約有每個序列 794 個特征。
這些特征涵蓋的類別相當(dāng)廣:基本統(tǒng)計量(均值、方差、分位數(shù))、形狀描述符(偏度、峰度、絕對能量)、自相關(guān)和偏自相關(guān)、頻域度量(傅里葉系數(shù)、頻譜能量、熵)、非線性時間序列特征(排列熵、小波系數(shù)等)。tsfresh 還會用假設(shè)檢驗(yàn)來判斷哪些特征與目標(biāo)相關(guān),配合多重檢驗(yàn)校正來避免錯誤發(fā)現(xiàn)。
這種方式把工作重心從手動發(fā)明特征("要不要試試滾動均值、滯后差分,或許再加個 FFT?")轉(zhuǎn)移到系統(tǒng)地探索一個豐富的特征庫,讓統(tǒng)計學(xué)和模型性能來決定什么才是重要的。
數(shù)據(jù)格式化
tsfresh 期望長格式的 DataFrame:一列用于 id(標(biāo)識這行屬于哪個時間序列)、一列用于 time(或排序索引)、一列或多列包含觀測值。
示例結(jié)構(gòu)大致如下:
![]()
特征提取
通常會調(diào)用類似這樣的代碼:
from tsfresh import extract_features
from tsfresh.feature_extraction import ComprehensiveFCParameters
features = extract_features(
df,
column_id="id",
column_sort="time",
default_fc_parameters=ComprehensiveFCParameters()
)
這會產(chǎn)生一個寬表,每行對應(yīng)一個時間序列(一個 id),每列是一個特征,比如 valuemean、valueabs_energy、valueautocorrelationlag_1、valuefourier_entropybins_5 等等。
處理缺失值
對于很短或退化的序列,某些特征是未定義的(比如長度為 1 的序列沒法計算 FFT)。tsfresh 提供了工具來填充或刪除包含太多 NaN 的列:
from tsfresh.utilities.dataframe_functions import impute
impute(features) # 用合理的默認(rèn)值替換 NaN / inf
或者簡單地刪除全是 NaN 的列:
features = features.dropna(axis=1)
特征相關(guān)性和選擇
對于監(jiān)督任務(wù),tsfresh 還能基于假設(shè)檢驗(yàn)進(jìn)行特征選擇,將每個特征與目標(biāo)關(guān)聯(lián)起來。這通常通過 extract_relevant_features 等函數(shù)完成,或者通過集成 tsfresh 的 AutoML 框架來應(yīng)用其自身的選擇邏輯。
用于預(yù)測的滾動特征提取
做預(yù)測時通常希望在滑動窗口上計算特征。先選擇窗口大小(比如 24 小時),對每個時間窗口計算 tsfresh 特征,然后用這些特征行作為輸入,將未來目標(biāo)值作為標(biāo)簽。
案例研究 1:AutoML + tsfresh 用于多步預(yù)測
Wang 等人對 AutoML 和時間序列特征工程在多步預(yù)測任務(wù)上的相互作用進(jìn)行了系統(tǒng)研究。
問題設(shè)置
給定單變量時間序列 ,目標(biāo)是僅使用最后 個觀測值來預(yù)測接下來的 個值:
窗口大小 w 至關(guān)重要。太小會錯過慢速模式;太大模型會看到嘈雜或不相關(guān)的歷史。作者之前的工作已經(jīng)表明,即使在單步任務(wù)中調(diào)整 w 也能顯著影響預(yù)測性能,所以他們在這里把自動窗口大小選擇擴(kuò)展到了多步設(shè)置。
擴(kuò)展 auto-sklearn
他們對 auto-sklearn 做了兩處主要調(diào)整。第一是添加基于 tsfresh 的時間序列特征提取器作為候選特征預(yù)處理器。第二是把窗口大小 w 作為 AutoML 可以搜索的超參數(shù),而不是固定的手動選擇常數(shù)。
擴(kuò)展后的 AutoML 系統(tǒng)會搜索模型族(SVM、GBM 等)、超參數(shù)(C、學(xué)習(xí)率、樹深度等)和窗口大小 w(考慮 50–200 點(diǎn)等范圍)。
三種 AutoML 變體
他們提出了三種專門用于時間序列預(yù)測的 auto-sklearn 變體。
W 變體(帶自動窗口大小選擇的 Auto-sklearn)使用窗口中的原始滯后值作為特征,讓 AutoML 在 50–200 的范圍內(nèi)選擇最佳窗口大小。
T 變體(帶 tsfresh 特征的 Auto-sklearn)使用固定窗口大小(比如 w = 100),應(yīng)用 tsfresh 從每個窗口段提取數(shù)百個特征,用 Benjamini-Hochberg 程序?yàn)槊總€預(yù)測步驟選擇統(tǒng)計顯著的特征,然后取跨預(yù)測范圍的并集。
WT 變體結(jié)合了兩個想法:AutoML 同時調(diào)整窗口大小 w 并使用從每個候選窗口提取的 tsfresh 特征。
基線和數(shù)據(jù)
為了對這些變體進(jìn)行基準(zhǔn)測試,他們與多種基線進(jìn)行了比較。傳統(tǒng)機(jī)器學(xué)習(xí)基線包括 SVM(遞歸和多輸出兩種形式)和 GBM(同樣有遞歸和多輸出兩種)。神經(jīng)網(wǎng)絡(luò)和 AutoML 基線包括 N-BEATS(一個很強(qiáng)的單變量預(yù)測深度學(xué)習(xí)模型)、Auto-Keras(配置了 LSTM/GRU 循環(huán)塊和手動選擇的窗口大小)以及原始 auto-sklearn(固定窗口大小,無時間序列特定特征)。
數(shù)據(jù)集來自 CompEngine,一個大型時間序列數(shù)據(jù)倉庫。他們從不同類別選擇了 20 個數(shù)據(jù)集:音頻(動物聲音、語音、音樂)、生態(tài)數(shù)據(jù)、宏觀和微觀經(jīng)濟(jì)、金融(原油、匯率、天然氣價格)、醫(yī)學(xué)數(shù)據(jù)(ECG)、動力系統(tǒng)(受驅(qū)擺、Duffing 振蕩器等)和隨機(jī)過程(自回歸、隨機(jī)游走等)。每個數(shù)據(jù)集按時間分為 67% 訓(xùn)練集和 33% 測試集。
關(guān)鍵發(fā)現(xiàn)
幾個最有意思的結(jié)果值得一提。
多輸出模型在相同計算預(yù)算下通常優(yōu)于遞歸模型,大概是因?yàn)楸苊饬丝珙A(yù)測范圍的誤差累積。原始 auto-sklearn(固定窗口大小)已經(jīng)在 20 個數(shù)據(jù)集中的 8 個上擊敗了所有傳統(tǒng)機(jī)器學(xué)習(xí)基線。
專門的 AutoML 變體進(jìn)一步提升了性能。W 變體(自動窗口大小,無 tsfresh)在 20 個數(shù)據(jù)集中的 14 個上優(yōu)于最佳傳統(tǒng)機(jī)器學(xué)習(xí)基線(SVM 多輸出)。W、T 和 WT 分別在 10、5 和 5 個數(shù)據(jù)集上顯示出比所有傳統(tǒng)基線更低的誤差。
與深度學(xué)習(xí)模型 N-BEATS 相比,最佳 AutoML 變體 W 在 20 個數(shù)據(jù)集中的 14 個上勝出。其他 AutoML 系統(tǒng)(Auto-Keras、原始 auto-sklearn、T、WT)也在許多數(shù)據(jù)集上擊敗 N-BEATS,有時差距相當(dāng)大。
要點(diǎn)總結(jié)
這項研究有幾個關(guān)鍵發(fā)現(xiàn)。AutoML 配合經(jīng)典模型與深度模型具有極強(qiáng)的競爭力,特別是結(jié)合良好的特征工程和窗口大小調(diào)整時。窗口大小是一等超參數(shù)——即使沒有花哨的特征,調(diào)整它也能帶來很大收益。tsfresh 特征有幫助,但不一定以預(yù)期的方式:總體來看,純窗口大小變體 W 是最強(qiáng)的,而基于 tsfresh 的變體可能在特定領(lǐng)域或評估指標(biāo)上更有優(yōu)勢。多輸出策略是有限預(yù)算下多步預(yù)測的可靠默認(rèn)選擇。
案例研究 2:將文本作為時間序列處理
時間序列特征工程不只適用于傳感器讀數(shù)或金融數(shù)據(jù)。在 2020 年的 EPJ Data Science 文章中,Tang 等人把短文本樣本重新解釋為時間序列,然后應(yīng)用 tsfresh 風(fēng)格的特征提取來改進(jìn)作者歸屬任務(wù)。
從文本到"語言時間序列"
先對每個文本樣本分詞,然后把每個 token 映射到一個數(shù)值度量——可以是它在語料庫中的頻率、按頻率的排名、字符長度,或者對詞計數(shù)向量的貢獻(xiàn)等。按 token 在句子中的位置排列這些數(shù)值,就形成了"語言時間序列"。
他們實(shí)驗(yàn)了五種功能性語言序列映射,包括 token 頻率序列、token 排名序列、token 長度序列,以及基于分布的序列(如 token 長度分布和 token 排名分布)。每個結(jié)果序列都像普通時間序列一樣處理。
文本上的時間序列特征提取
對于這五種映射中的每一種,他們用 tsfresh(ComprehensiveFCParameters)每個序列提取 794 個時間序列特征,最終得到每個文本樣本 3970 個風(fēng)格計量特征(794 × 5 種映射)。用 tsfresh 的 impute 函數(shù)處理缺失值和無窮值,用 10 折交叉驗(yàn)證評估模型,以 log loss 作為主要指標(biāo)。
這些時間序列特征然后與標(biāo)準(zhǔn) NLP 基線(樸素貝葉斯和最近質(zhì)心分類器)的預(yù)測結(jié)合,用 XGBoost 構(gòu)建混合分類器。
結(jié)果和見解
他們在兩個數(shù)據(jù)集上進(jìn)行了測試:Spooky Books(平衡類別,恐怖小說)和聯(lián)邦黨人文集(不平衡,歷史上很重要的論文)。
在 Spooky Books 案例中,語言時間序列特征持續(xù)改進(jìn)了基線 NLP 模型。對于聯(lián)邦黨人文集,將這些特征加到強(qiáng) NLP 基線中帶來了較小但仍有希望的改進(jìn)。
一些特定的 tsfresh 特征在語言學(xué)上具有很好的可解釋性。平均 token 長度特征能區(qū)分傾向于使用長詞還是短詞的作者。token 長度序列上的 c3 非線性統(tǒng)計量捕捉了詞長波動的微妙模式。token 長度分布上的線性趨勢特征(截距和斜率)能反映作者是傾向于使用均勻范圍的詞長還是集中于較短的詞。
作者的結(jié)論是,時間序列特征提取提供了新穎的風(fēng)格計量信號,可以增強(qiáng)傳統(tǒng) NLP 特征,這個功能性語言分析框架在更廣泛的作者歸屬和風(fēng)格分析任務(wù)中有潛力。
實(shí)用工作流程
整合前面的內(nèi)容,這里給出一個可以用于時間序列項目(數(shù)值或文本)的具體流程。
首先要清楚定義預(yù)測任務(wù):是單步還是多步預(yù)測?分類還是回歸?
然后選擇窗口策略。從 w 的合理范圍開始(小時數(shù)據(jù)可以從 24–168 開始),如果可能的話把 w 作為可調(diào)超參數(shù)處理。
接著為 tsfresh 格式化數(shù)據(jù)。數(shù)值時間序列用 (id, time, value) 格式。文本的話,像 Tang 等人那樣把句子轉(zhuǎn)換為功能性語言序列(token 長度、頻率、排名等)。
用 tsfresh 提取特征時,從 ComprehensiveFCParameters 開始探索完整的特征庫,用 impute() 清理 NaN 和無窮值。
特征選擇有幾種方式:用 tsfresh 自帶的相關(guān)性檢驗(yàn),或應(yīng)用 Benjamini-Hochberg 這樣的多重檢驗(yàn)控制,或在模型中用正則化/特征重要性方法(基于樹的模型、L1 正則化線性模型等)。
模型方面,如果做結(jié)構(gòu)化實(shí)驗(yàn),auto-sklearn 或 Auto-Keras 這樣的框架可以搜索模型族和超參數(shù)。否則從梯度提升、隨機(jī)森林或調(diào)優(yōu)良好的神經(jīng)網(wǎng)絡(luò)這些強(qiáng)基線開始。
評估要充分。預(yù)測任務(wù)考慮 RMSE、MAE 和特定預(yù)測范圍的誤差。分類任務(wù)(包括文本)用準(zhǔn)確率、log loss 和校準(zhǔn)指標(biāo),最好配合交叉驗(yàn)證。
最后是解釋關(guān)鍵特征。用特征重要性圖或 SHAP 值看哪些 tsfresh 特征重要,把它們與領(lǐng)域知識聯(lián)系起來:是否捕捉了季節(jié)性、波動性、體制變化或風(fēng)格模式?是否揭示了不同組之間的差異(作者、患者類型、設(shè)備狀態(tài)等)?
總結(jié)
從數(shù)值到文本領(lǐng)域,這些工作傳達(dá)的信息很明確。
時間序列的特征工程遠(yuǎn)未過時——它只是變得更系統(tǒng)化和自動化了。AutoML 系統(tǒng)可以把 tsfresh 這樣的時間序列特定組件納入進(jìn)來,效果很好,通常能在許多任務(wù)上與最先進(jìn)的神經(jīng)模型匹敵甚至超越。把文本這樣的非傳統(tǒng)數(shù)據(jù)當(dāng)作時間序列處理,開啟了一個全新的特征和分析工具空間。
如果正在構(gòu)建預(yù)測或序列分類流水線,值得嘗試 tsfresh 或類似的特征庫、能同時調(diào)整模型和窗口大小的 AutoML 框架,以及"語言時間序列"這樣的跨領(lǐng)域思路。工程特征帶來可解釋性,AutoML 提供靈活性,而如果這些研究有任何指示意義的話——實(shí)現(xiàn)最先進(jìn)性能的機(jī)會相當(dāng)不錯。
引用:
https://avoid.overfit.cn/post/a96a4522adbf4d82a3b02b8c328b2306
作者:QuarkAndCode
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.