矩陣分解就能擊敗深度學(xué)習(xí)!MIT發(fā)布時(shí)序數(shù)據(jù)庫tspDB:用SQL做機(jī)器學(xué)習(xí)
人類從歷史中學(xué)到的唯一教訓(xùn),就是人類無法從歷史中學(xué)到任何教訓(xùn)。
「但機(jī)器可以學(xué)到。」 ——沃茲基碩德
無論是預(yù)測明天的天氣,預(yù)測未來的股票價(jià)格,識(shí)別合適的機(jī)會(huì),還是估計(jì)病人的患病風(fēng)險(xiǎn),都可能對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行解釋,數(shù)據(jù)的收集則是在一段時(shí)間內(nèi)對(duì)觀察結(jié)果的記錄。
但使用時(shí)間序列數(shù)據(jù)進(jìn)行預(yù)測通常需要多個(gè)數(shù)據(jù)預(yù)處理的步驟,并且需要用到復(fù)雜的機(jī)器學(xué)習(xí)算法,對(duì)于非專業(yè)人士來說,了解這些算法的原理和使用場景是一件不容易的事。
最近,來自麻省理工學(xué)院的研究人員開發(fā)了一個(gè)強(qiáng)大的系統(tǒng)工具tspDB方便用戶處理時(shí)序數(shù)據(jù),能夠在現(xiàn)有的時(shí)間序列數(shù)據(jù)庫之上直接整合預(yù)測功能。系統(tǒng)包含了很多復(fù)雜的模型,即使非專家也能在幾秒鐘之內(nèi)完成一次預(yù)測。在執(zhí)行預(yù)測未來值和填補(bǔ)缺失數(shù)據(jù)點(diǎn)這兩項(xiàng)任務(wù)時(shí),新系統(tǒng)比最先進(jìn)的深度學(xué)習(xí)方法更準(zhǔn)確、更高效。論文發(fā)表在ACM SIGMETRICS會(huì)議上。
論文地址:http://proceedings.mlr.press/v133/agarwal21a/agarwal21a.pdf
tspDB性能提升的主要原因是它采用了一種新穎的時(shí)間序列預(yù)測算法,這種算法在對(duì)多變量時(shí)間序列數(shù)據(jù)進(jìn)行預(yù)測時(shí)特別有效。多變量指的是數(shù)據(jù)有一個(gè)以上的時(shí)間依賴變量,例如在天氣數(shù)據(jù)庫中,溫度、露點(diǎn)和云量的當(dāng)前值都依賴于其各自的過去值。
該算法還可以估計(jì)多變量時(shí)間序列的波動(dòng)性,以便為用戶提供模型預(yù)測準(zhǔn)確度的confidence
作者表示,即使時(shí)間序列數(shù)據(jù)變得越來越復(fù)雜,這個(gè)算法也能有效地捕捉到時(shí)間序列結(jié)構(gòu)。
文章作者Anish Agarwal博士畢業(yè)于麻省理工,主要研究興趣包括因果推理和機(jī)器學(xué)習(xí)的相互作用;高維統(tǒng)計(jì);數(shù)據(jù)經(jīng)濟(jì)學(xué)。2022年1月作為博士后研究員加入加州大學(xué)伯克利分校的西蒙斯研究所。
處理時(shí)序數(shù)據(jù)的正確姿勢
目前機(jī)器學(xué)習(xí)工作流程的一個(gè)主要瓶頸是數(shù)據(jù)處理太耗費(fèi)時(shí)間,并且中間流程也很容易出錯(cuò)。開發(fā)人員需要從數(shù)據(jù)存儲(chǔ)或數(shù)據(jù)庫中先獲取數(shù)據(jù),然后應(yīng)用機(jī)器學(xué)習(xí)算法進(jìn)行訓(xùn)練和預(yù)測,這個(gè)過程中需要大量的人工來做數(shù)據(jù)處理。
現(xiàn)在這種情況越來越嚴(yán)重了,因?yàn)闄C(jī)器學(xué)習(xí)需要吞進(jìn)去的數(shù)據(jù)越來越多,更不好管理了。尤其是在實(shí)時(shí)預(yù)測領(lǐng)域,特別是在各種時(shí)間序列的應(yīng)用場景中,比如金融和實(shí)時(shí)控制更需要好好管理數(shù)據(jù)。
要是能直接在數(shù)據(jù)庫上進(jìn)行預(yù)測,不就省了取數(shù)據(jù)這步了嗎?
但這種在數(shù)據(jù)庫上的預(yù)測集成系統(tǒng)不僅需要提供一個(gè)直觀的預(yù)測查詢界面,防止重復(fù)數(shù)據(jù)工程;同時(shí)還需要確保準(zhǔn)確率可以達(dá)到sota,支持增量的模型更新,比較短的訓(xùn)練時(shí)間和較低的預(yù)測延遲。
tspDB就是直接與PostgreSQL集成,內(nèi)部原生支持多個(gè)機(jī)器學(xué)習(xí)算法,例如廣義線性模型、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò),在訓(xùn)練模型的時(shí)候也可以在數(shù)據(jù)庫里調(diào)節(jié)超參數(shù)。
和其他數(shù)據(jù)庫不同的是,tspDB的一個(gè)重要出發(fā)點(diǎn)「終端用戶」如何與系統(tǒng)對(duì)接來獲得預(yù)測值。
為了讓機(jī)器學(xué)習(xí)的接口更通用,tspDB采用了一種不同的方法:把機(jī)器學(xué)習(xí)模型從用戶中抽象出來,爭取只用一個(gè)單一的界面來響應(yīng)標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢和預(yù)測查詢,也就是都用SQL來查詢。
在tspDB中,預(yù)測性查詢的形式與標(biāo)準(zhǔn)SELECT查詢相同。預(yù)測性查詢和普通查詢的區(qū)別就是一個(gè)是模型預(yù)測,另一個(gè)是檢索。
比如數(shù)據(jù)庫里只有100條數(shù)據(jù),想預(yù)測第101天的值,就用PREDICT關(guān)鍵詞,WHERE day = 101即可;而WHERE day = 10時(shí)就會(huì)被解析第10天的股票價(jià)格的估算值/去噪值,所以PREDICT還可以用于預(yù)測缺失值。
為了實(shí)現(xiàn)PREDICT查詢,用戶需要利用現(xiàn)有的多元時(shí)間序列數(shù)據(jù)先建立一個(gè)預(yù)測模型。CREATE的關(guān)鍵字可以用于在tspDB中建立預(yù)測模型,輸入的特征也可以是多個(gè)數(shù)據(jù)列。
tspDB與PostgreSQL DB相比,在標(biāo)準(zhǔn)的多變量時(shí)間序列數(shù)據(jù)集上,在tspDB中創(chuàng)建預(yù)測模型所需的時(shí)間是PostgreSQL批量插入時(shí)間的0.58倍-1.52倍。在查詢延遲方面,在tspDB中回答一個(gè)PREDICT查詢所需的時(shí)間是回答一個(gè)標(biāo)準(zhǔn)的PREDICT查詢的1.6到2.8倍,與回答一個(gè)標(biāo)準(zhǔn)的SELECT查詢相比,要高出1.6到2.8倍。
從絕對(duì)值來看,這相當(dāng)于回答一個(gè)SELECT查詢需要1.32毫秒,而回答一個(gè)預(yù)測查詢需要3.5毫秒,回答一個(gè)歸納/預(yù)測查詢需要3.36/3.45毫秒。
也就是說,tspDB的計(jì)算性能接近于從PostgreSQL插入和讀取數(shù)據(jù)所需的時(shí)間,基本上可以用于實(shí)時(shí)預(yù)測系統(tǒng)。
因?yàn)閠spDB還只是一個(gè)概念的驗(yàn)證,相當(dāng)于是PostgreSQL的一個(gè)擴(kuò)展,用戶可以對(duì)單列或多列創(chuàng)建預(yù)測查詢;在時(shí)間序列關(guān)系上創(chuàng)建單列或多列的預(yù)測查詢,并提供預(yù)測區(qū)間的估計(jì)值。最重要的是,代碼是開源的。
代碼鏈接:https://github.com/AbdullahO/tspdb
文章中還提出一個(gè)基于時(shí)間序列算法的矩陣分解算法,通過將多變量時(shí)序數(shù)據(jù)Page Matrix堆疊起來后,使用SVD算法進(jìn)行分解,在子矩陣中移除最后一列作為預(yù)測值,使用線性回歸對(duì)目標(biāo)值進(jìn)行預(yù)測即可。
對(duì)于不斷涌入的時(shí)序數(shù)據(jù),算法還支持增量的模型更新。
為了對(duì)算法進(jìn)行性能測試,研究人員選擇了三個(gè)現(xiàn)實(shí)世界的數(shù)據(jù)集,包括電力(Electricity)、交通(Traffic)和金融(Finance)。評(píng)價(jià)指標(biāo)采用Normalized Root Mean Square Error (NRMSE)作為準(zhǔn)確率。為了量化不同方法的統(tǒng)計(jì)準(zhǔn)確性,研究人員還加了一個(gè)標(biāo)準(zhǔn)Borda Count (WBC)的變體作為評(píng)價(jià)指標(biāo),0.5的值意味著算法的表現(xiàn)和其他算法相比就是平均水平,1代表相比其他算法具有絕對(duì)優(yōu)勢,0代表絕對(duì)劣勢。
將tspDB的預(yù)測性能與學(xué)術(shù)界和工業(yè)界最流行的時(shí)間序列庫如LSTM、DeepAR、TRMF和Prophet進(jìn)行比較后可以發(fā)現(xiàn),tspDB的表現(xiàn)與深度學(xué)習(xí)算法(DeepAR和LSTM)相比都相差不多,并且超過了TRMF和Prophet。
當(dāng)改變?nèi)笔е档谋壤吞砑拥脑肼晻r(shí),tspDB在50%的實(shí)驗(yàn)中是表現(xiàn)最好的方法,在80%的實(shí)驗(yàn)中至少是表現(xiàn)第二好的。使用WBC和NRMSE這兩個(gè)指標(biāo),tspDB在電力、金融數(shù)據(jù)集中的表現(xiàn)優(yōu)于其他所有算法,而在交通數(shù)據(jù)集中的表現(xiàn)可與DeepAR和LSTM匹敵。
在方差估計(jì)上,因?yàn)槲覀儫o法獲得現(xiàn)實(shí)世界數(shù)據(jù)中真正的基礎(chǔ)時(shí)變方差,所以研究人員將分析限制在合成數(shù)據(jù)上。合成數(shù)據(jù)集II包括了九組多變量時(shí)間序列,每組都有不同的時(shí)間序列動(dòng)態(tài)加性組合和不同的噪聲觀測模型(高斯、泊松、伯努利噪聲)。
實(shí)驗(yàn)結(jié)果中可以發(fā)現(xiàn),除了一個(gè)實(shí)驗(yàn)之外,tspDB在所有的實(shí)驗(yàn)中都比TRMF和DeepAR(用于預(yù)測)具有更高的性能(>98%)。
總的來說,這些實(shí)驗(yàn)顯示了tspDB的穩(wěn)健性,即在估計(jì)時(shí)間序列的均值和方差時(shí),可以消除部分噪聲的影響。