時間序列預測方法與優秀數據科學工程師

關於優秀數據科學工程師

前幾天看了陸奇關於優秀工程師的演講,感覺他說的基本都是大實話。演講中提到的五個觀點分別是Believe in 技術、站在巨人的肩膀上做創新、追求Engineering Excellence、每天學習、Ownership。總體來說洗腦因素有之,但理解一下也未嘗不可;這裡結合實際數據挖掘工作,談一下對優秀工程師的認識。

關於技術,一直以來我都相信技術的力量,並以此為基礎在單位開展工作。數據驅動其實就是技術驅動,想要通過技術驅動改變業務經營,那首先要建立必備的技術自信心,這樣才能說服業務人員和你站在一條戰線上。業務人員認可你能夠把控好交付的模型和產品,也會信賴你提供的技術和支持,最終目標是雙贏。當然,如果脫離技術邏輯,無論講的多麼真誠的演講我都覺得是在忽悠,比如最近在國內人工智慧領域走穴的那位歷史學家。

站在巨人的肩膀上創新,意思是說不要重複造輪子,而是擅於挑選合適的工具和方法去解決問題。實際經驗是要用工程化的思維去工作,都要具備基本的項目管理意識和知識。在現有條件下做出務實的創新,這才是大多數技術人員的使命。另外,涉及到數據科學、人工智慧或機器學習的創新應用,在面臨新問題的時候可以多讀讀文獻,選擇合適的方法進行實驗。

追求工程卓越性,也就是大家經常聊的工匠精神了。通俗的講,做完一件事,一定要前後左右多提一些問題。多提問題就意味著多思考,對應著交付內容更加嚴謹、科學與務實。具體到數據挖掘,一方面要求模型的結果做到最精準,另一方面還要考慮模型如何才能更好的發揮作用,也就是要實際落地。

每天學習是基本功了,聽說讀寫是研究生的四門基本功課,同樣適合于于數據科學領域的創新工作。我的知識管理工具有一些,有道雲筆記和Endnote做文獻管理,onenote做日常筆記,freemind做腦圖。每天都需要學習與思考,因為大數據和人工智慧領域的技術更新換代很快,昨天用的方法可能今天就不適用了。

最後,關於Ownership,其實並不是太好談。假大空沒意義,我覺得只要能夠不懈怠、保持職業素養就不錯了。

時間序列預測方法

說起來跟時間序列預測還是挺有緣的,研究生期間發過兩篇混沌時間序列預測的論文;一篇用的神經網路,一篇用的支持向量機,都是熱門流行的演算法。工作後也做過兩次,上次用了ARIMA,這次用的是LSTM,這兩演算法之間似乎有明顯的代溝。對比統計學和機器學習,不同的背景可能會建立各自的鄙視鏈;其實都是工具嘛,能解決實際問題就好。

之所以這兩項內容進行承接,是因為應用不同方法建立時間序列預測模型,就是檢驗數據科學工程師能力的過程。可以對照優秀工程師的幾個觀點,除了OwnerShip,都可以相互印證一下。

實際建模的背景不多講,過程可以查閱相關文獻,這裡簡單聊一下這幾個方法和示例。

1、tARIMA模型

ARIMA模型全稱為自回歸積分滑動平均模型(Autoregressive Integrated Moving Average Model,簡記ARIMA)。ARIMA(p,d,q)稱為差分自回歸移動平均模型,AR是自回歸, p為自回歸項; MA為移動平均,q為移動平均項數,d為時間序列成為平穩時所做的差分次數。

所謂ARIMA模型,是指將非平穩時間序列轉化為平穩時間序列,然後將因變數僅對它的滯後值以及隨機誤差項的現值和滯後值進行回歸所建立的模型。ARIMA模型根據原序列是否平穩以及回歸中所含部分的不同,包括移動平均過程(MA)、自回歸過程(AR)、自回歸移動平均過程(ARMA)以及ARIMA過程。

上圖用ARIMA做的產品餘額預測,結果還不錯,MAPE為3%。

2、tSVM

支持向量機(Support Vector Machine,SVM) 演算法是經典的機器學習演算法之一,無論在理論分析還是實際應用中都已取得很好的成果,SVM的理論基礎是Vapnik提出的「結構風險最小化"原理。SVM演算法泛化能力很強,在解決很多複雜問題時有很好的表現。除了數據分類方面應用,SVM逐漸被推廣到回歸分析、多種背景的模式識別、數據挖掘、函數逼近擬合、醫學診斷等眾多領域。

SVM的思想源於線性學習器,可以將線性可分的兩種不同類型的樣例自動劃分為兩類。如果這兩類樣例不是線性可分的,則可以使用核函數方法,將實驗對象的屬性表達在高維特徵空間上,並由最優化理論的學習演算法進行訓練,實現由統計學習理論推導得出的學習偏置,從而達到分類的效果,這就是SVM的基本思路。

上圖為用SVR做的混沌時間序列預測,非常准。為了寫論文,需要把演算法搞得盡量複雜;實際工作中,更加追求簡潔和穩定。

3、tLSTM

LSTM,全稱為長短期記憶網路(Long Short Term Memory networks),是一種特殊的RNN,能夠學習到長期依賴關係。LSTM由Hochreiter & Schmidhuber (1997)提出,許多研究者進行了一系列的工作對其改進並使之發揚光大。LSTM在許多問題上效果非常好,現在被廣泛使用。LSTM 的系統可以學習翻譯語言、控制機器人、圖像分析、文檔摘要、語音識別圖像識別、手寫識別、控制聊天機器人、預測疾病、點擊率和股票、合成音樂等等任務。

上圖為用LSTM做的時間序列預測模型,MAPE是17%,相比之下效果最差,但其實已經可以用了。同樣的數據,LSTM表現效果稍強於SVR,比ARIMA強了很多。不同的業務場景,或者說不同的數據條件下,需要選擇適合的演算法模型。

Forecast vs Predict

關於時間序列分析,嚴格的說對應的都是Forecast。其預測對象都是同一個,基於歷史觀測值預測未來某段時間的值。如果非要與Predict區分,那麼這個可以翻譯成預報,比如天氣預報。Predict的例子,不同訓練樣本對應不同的對象,預測的目標是其他的對象,比如信用評分。

通過不同場景下的時間序列預測方法,簡單聊一下對於優秀數據科學工程師的理解。每天學習,堅持思考,工匠精神,簡單務實,追求實際效果,這是優秀工程師的基本素質,也需要孜孜不倦的努力才能實現。

大多數的數據科學家都是Title而已,工程師才是實實在在的內涵。

如有興趣,可關注本人公眾號,歡迎交流。


推薦閱讀:

TAG:数据科学 | 时间序列分析 | 金融科技 |