其實在人工智能和資料科學學術領域上,現在開始越來越多人向有否高估了成效方面研究。不過這些研究一般集中於其他應用領域,例如金融投資、金融科技等範疇上,而賽馬預測方面就十分少,可能因為本身在人工智能賽馬預測領域的學術研究本身就不多。這課題其實比較專業和學術,一般大眾未必容易掌握這些概念或理論,我嘗試盡量用一些比較入門理論和一般人能理解的文字寫出來,等有興趣朋友可以有基本認識。

大數據、人工智能、機器學習、深度學習被高估了嗎?它們是謊言?

簡單一句話去答:經常是。但人工智能不是謊言,只是不少人利用它去說謊。

從我們的學術研究中,見到過去二三十年有很多研究是開發人工智能模型,應用人工智能去做不同範疇的預測,之後到不停提高模型預測能力。於金融投資領域上尤其多,不少已發表學術文章中,有學者稱他們的模型擁有非常高的預測能力,於回測中準確度超過9成,AUC超過0.9等等。同時隨著大眾對人工智能開始認識和一些出名的人工智能語文模型爆紅,很多人一聽到人工智能XXX,都即時會相信了它的效能。同時很多投資公司、基金經理乘勢而起,開發很多人工智能大數據管理基金、人工智能程式買賣系統等等,成功吸引不少投資者投資。但現實是大家並不見到這些產品有很多成功例子,有研究比較一些有同時做大數據基金及傳統基金的基金管理公司,發現大數據基金表現其實並未有超越傳統基金。近年終於開始有人研究於金融投資範疇上這個落差及應用大數據人工智能的問題,以下我嘗試分享幾個重點。

數據的訊號雜訊比 (Signal-to-noise ratio) 問題

以人工智能、機器學習、深度學習方法去進行預測,基本原理就是以歷史數據去訓練模型,模型從數據中找出有用資訊、規則,再用已訓練好的模型去預測未來結果。現實世界的數據一般會同時包含訊號 (Signal) 及雜訊 (Noise),而不同數據的訊號雜訊比 (Signal-to-noise ratio) 會有很大分別。科學數據的訊號雜訊比會十分高,而金融投資運動賽馬等數據的訊號雜訊比則會十分低,數據充滿很大量雜訊。所以應用人工智能於一些科學範疇、醫學、氣候、人面文字辨認等方面準確度可以非常高。但相反,如果數據的雜訊十分多時,模型本身就不容易從歷史數據中找出有用訊號,甚至可能會被雜訊影響及誤導,最終模型的預測能力並不會太高。

用了錯誤方法開發預測模型

過去有很多學術研究,發表了很多極為準確的預測模型,這些研究大部份都是以歷史數據再輸入做回測 (Backtesting) 去評估模型表現。但再細看時會發現他們並未有公開回測方法的詳細資料,例如回測次數,中間進行了多少次模型優化等,甚至有理由相信整個模型基本上是以回測作研究方法而沒有理論基礎,學術上稱為 “Research by Backtesting”。現今電腦運算能力十分之高,輕易可以嘗試不停修改參數再做大量回測,當中一定會發現一些準確度或回報率十分高的模型。這些模型很可能已經出現擬合過度 (Overfitting) 情況,即是只能緊密或精確地匹配特定資料集而不能適其他資料或用於預測未來的觀察結果。當數據的訊號雜訊比低的情況,有些模型甚至是 overfit 到已用到雜訊得出很像十分準確的結果,而不是真正的找出真正訊號成功建立一個預測模型。就算學術研究上都能發現不少這類 False Discovery ,可以想像市場上會更加多以並不科學及嚴謹的模型令投資者參考回測結果後加入投資基金或購買程式買賣系統。

就算以我們自己為例,一直亦同時有很多不同模型正在做開發優化及回測,當中有些模型專門擴大賠率回報,有些專門尋找超值搏馬匹,有些專門刷準確度指標,其中總會有一些回測結果非常優異,如果我們不夠謹慎,不再進一步驗證就當做研究成果,我們其實都應該可以發表多個非常吸睛的研究。

用了錯誤的指標去評估模型

評估模型的能力有不少方法及指標,但某些指標會於某些情況下高估了模型的預測能力。例如在非常不平衡資料 (Imbalanced Data) 的情況時,用準確度並不是一個有效指標。例如以預測股市走向為例,於牛市時模型不停作出上升預測,當中準確度已經一定會大於50%。又以賽馬預測為例,假設一場賽馬有12隻馬匹出賽,就算用模型以隨機方法預測勝出馬匹,選對了準確度是100%,而選錯了其實準確度仍然有 10 / 12 x 100% = 83%。要公平評估這類模型,應該以其他指標,例如 True Positive,Precision 等,這方面又是另一個大課題,可能會另外再發文討論。

又有一些人用迴歸模型 (Regression Model) 時,直接就用誤差除以正確結果就得出準確度,但其實是對評估模型的能力並沒有太大意義的。例如用最基本的機器學習去預計某股票某日子後的股價,只要模型輸出最近收市價做預計結果,而大部份股票升跌都不會太大,最後計算出的誤差都可能只有5%,就稱模型達95%以上準確度,但其實此模型的實際可用性並沒有真正評估得到。又同樣用賽馬預測做例子,任何一個對人工智能有少許認識的人應該都可以開發到一個迴歸模型 (Regression Model) 去預計馬匹完成時間,而平均誤差在一兩秒內。如果用誤差除以真正時間,誤差率就只是1至2%,準確度亦可以被講成98%,但實際上以此指標其實並不能評估到模型的能力,可能純粹欺騙到一些不懂資料科學的朋友或許搶到眼球。

回測時受數據洩露 (Data Leakage)影響

數據洩露是指訓練預測模型進行回測時,將未來或本身要驗證的資料也一起加入了訓練資料集之中,而現實進行預測時你並不能知道這些資料,所以模型實際表現就會明顯比回測時差。這一點其實是一個做回測時十分基本要注意的地方,但事實上這錯誤又經常出現,有時也分不清是真的”大意”洩露了數據,還是借勢將表現提升。我們工作上接收過不少客人由上手公司開發的金融預測系統去做改善工程,實際表現與回測時有大幅落差也是非常常見問題。一般如果排除到 Overfitting 問題,就多數是 Data Leakage 問題。例如有人會用隨機方法將歷史資料分為訓練及驗證資料集做回測,如果是一般無關聯性的資料當然沒有問題。但金融資料其實是時間序列資料,他們之間會有非常高相關性,再者,在金融預測時很多時會用加入技術分析指標,而不少技術分析都會將某段時間內的資料亦會加入其中。所以如果以隨機方法將資料分開,其實已把”未來”的資料用於訓練模型,回測結果當然會十分理想。同樣馬匹表現其實都有些時間性序列特性,類似問題都有機會出現。

又再分享另一個案例,有網友同我們交流他自己開發的模型,他也遇到實際表現與回測時有大幅落差的問題。我們查看他的訓練資料數據,他加入了騎師、練馬師、檔位統計資料。但他是直接從馬會網站下戴統計資料去預備訓練數據,再用訓練好的模型做回測。雖然馬匹出賽資料他分開時已經小心沒有數據洩露,但他加入的統計資料實際上已經包括他要做回測時段的結果。即是他的模型做回測時已經擁有一些”未來”資料,所以他得出的表現就會比實際上好。

結語

雖然這篇文章指出不少應用人工智能去做預測的問題及誤點,但我沒有否定它的能力,只是提出一些觀點希望各位參考不同預測模型結果時要留意的地方。同時各位如果有進行模型開發的朋友,都可以用比較謹慎態度去分析回測結果,不能只盲目追指標。