滑大教授:讓機器學習整理數據 帶動金融科技發展

滑鐵盧大學Prof. Ihab Francis Ilyas指,金融科技公司每天要耗費大量時間來準備數據,故研發自動化方案解決數據質量問題十分重要。

編按:「相約科大,遇見未來」大學金融科技教育論壇由香港科技大學、FDT金融創新工場和微軟亞洲研究院聯合主辦,由蜂投證券、香港科技園、香港應科院合辦,於2017年11月24日假香港科技大學賽馬會高等研究院舉行。

當日,論壇嘉賓滑鐵盧大學教授Prof. Ihab Francis Ilyas發表題為「為數據庋用建立大規模的機器學習解決方案」的主題演講,內容摘錄如下。

今天我只會集中說一樣東西:數據庋用(Data curation;一譯數據管護),也就是data cleaning。這個題目跟所有使用大數據的新領域息息相關,也是金融科技的重要一環。我從事這方面的研究已有十年,接下來會分享一下可以怎樣用機器學習(machine learning)來做到這一點。

數據質量對大數據分析至關重要

我跟學生和MIT一些同事成立了一家服務各大企業的數據處理公司,Tamr Inc.,也會在接下來的講辭中不斷提到這家公司──我們的客戶有的從事金融科技領域工作。

Tamr Inc. 的服務包括顧客資料整合、採購效益最大化、臨床研究數據轉化,客戶包括豐田汽車、慧與科技(HPE)、通用電氣(GE)。(Tamr Inc. 網站截圖)
Tamr Inc. 的服務包括顧客資料整合、採購效益最大化、臨床研究數據轉化,客戶包括豐田汽車、慧與科技(HPE)、通用電氣(GE)。(Tamr Inc. 網站截圖)

數據的質量(data quality)究竟是什麼概念?如果你要處理的數據有很多不同來源,而你需要從這一大堆數據中找到有用的部分、重新按實際應用場景所需的特定格式編排後用作分析,或者要令這些數據視覺化(visualize)、放到一個簡潔易明的介面,你要花很多工夫來從源頭開始整理這些數據。

數據處理須朝自動化方向發展

這些數據很少一開始就在排列整齊的表單裏:初始格式可能很複雜而不方便閱讀,多數資料也欠缺統一的排列方法,這就是為什麼人們稱data cleaning為電腦科學裏的打掃工作。打掃的人要清理房間裏亂糟糟的東西,我們則要清理數據中混亂的部分。

這個領域已經發展很久,以前並不怎麼吃香,直至後來《紐約時報》(The New York Times)、《福布斯》雜誌(Forbes)和其他媒體開始報道,原來數據科學家用於統計和分析數據的時間有六至八成用於整理數據和使數據變得明晰,只有兩至四成時間用於處理更複雜和關鍵的部分,例如建立數據模型。今天我會嘗試提出一些新方法,希望與大家一起思考這六至八成初階工序可否交給機器自動妥善處理。

要開一家數據清整公司,重點不只是演算法(algorithms)和科技水平怎樣,還在於解決一些在現實層面碰到的問題。比方說,每個數據集(data set)都有主人,如果分析時要用到這些數據,就要找方法說服他們向你提供這些數據。這要用上很多個小時、很多個星期,甚至數以年計的時間,也涉及一些實際操作的問題,但今天不會談太多。

要修復數據異常部分 企業規劃方會順利

簡單來說,做大數據分析時,我們要將數據庫中每一筆資料交叉比對,故當中不可以有重複的數據項。如果同一組數據多次出現,分析便會不準確。數據科學家需要找方法辨認出數據中出錯或異常的部分(比如說表單漏掉了某些變項、資料格式有誤、數項數值出現錯誤),因為無論數學模型有多聰明、完善,一旦數據不正確,分析結果也會很大問題。

我舉一個例子:我們曾有客戶以為自己的公司有500,000名顧客,後來發現只有150,000名顧客,原因就是這些顧客資料很多在表單裏重複出現,卻被當作新客人的資料,比如說John Smith出現20多次,Alison也有30個,諸如此類。每次這些顧客更改地址,員工輸入時便把新舊資料當成兩個顧客看待,整家公司的規劃(capacity planning)因而出了問題,公司對顧客群的理解與現實相差甚遠。

我接下來要談到的就是如何剔除重複的數據項和修復出了問題的數據。就算是解決方案,也會引伸出問題,但我今天先不會說這些。Schema mapping(數據庫的模式映射)是個老問題:想像一下你要將大量的表單匯合在一起,當中卻可能有不少重複的數據。以研發藥物的公司為例,他們處理數據時一般會碰到數以十萬計格式不統一的表單,數據亦可能以不同語言紀錄,有很多訊息藏在簡寫、縮略語、每個字符帶意義的編號中。比如說,編號中的A、B、C、D各有意思,代表某些標準。要準確理解某個表單裏的某一欄和另一表單裏的哪一欄互相對應,是非常重要的,這樣方可整合所有數據,放到格式統一的數據庫。

為維持數據質量 要小心處理未知數

有一些別的有趣問題,比如說數項是未知數(null)的時候。那就是說,數值並非0而是未知數,但這些null的未明數值也要交叉比對。麻煩的是,現實中,未知數不一定顯示為「未知」,表單上出現的可能是問號、空格,或者某個實數用了數值範圍(range)的方法呈現,甚至索性寫上「按情況而定」(“Varies”)來交代。這種沒有意義的數據垃圾五花八門,反映出輸入者並不知道數項是什麼,那就要多花工夫處理了。有時候,問題在於這些數值未明的數據被當成正常數據那樣拿去作進一步分析、放進某個程式去運算,最後,這些分析結果將出現極大的錯判和誤估。

Prof. Ilyas講述null(未知數)一次差點令他和朋友買錯機票到根本沒有風景可言的地方渡假。(香港科技大學)
Prof. Ilyas講述null(未知數)一次差點令他和朋友買錯機票到根本沒有風景可言的地方渡假。(香港科技大學)

我很喜歡這個例子:我和朋友都是數據科學家,我們會從網上用geotag(地理標記)尋找不同地方的圖片,把這些景點加進下次旅行的行程裏。一次,我們搜尋非洲以西的地方,預備買機票去某個島上去看漂亮的城堡,最後卻發現那些漂亮照片在地圖上的真實位置只不過是茫茫大海中一個編號為(0,0)的浮標。

原來,這些吸引我們的網絡圖片都是不知道在哪裏拍的,所以網絡使用者編上「0,0」這個代表不知道經緯度的假數值,不知情的人卻以為照片真的是在(0,0)這個地方拍的。我們若細心求證,不難察覺這個問題,不會真的傻傻地去(0,0)渡假,但你可以想像靠自動算法(automated algorithm)運作的系統,它們會根據數據來決定下一步怎麼做,把有問題的數值當真,那將會是災難。

數據出錯成因眾多 人手查找費時失事

再說說商業應用中的情況。有些公司會把員工的資料臚列於表單中,比如姓名、居住的城市、交易數量、薪水⋯⋯然後對比居住在不同城市的員工的薪水,藉此調整合理薪酬水平,比如說住在紐約市的員工薪水應該比其他員工較高,因為紐約的生活物價指數較高。這個表格中,Mark Lee和Mark White兩人分別住在紐約和聖荷西市,Mark Lee的薪水比Mark White還要低,按公司政策來說屬於不足。但是,他們兩人的薪酬分別為“75”和“80”,而其他員工的都是三位到四位數,究竟“75”和“80”這麼低的薪酬是否手民之誤?我不會知道,只能看出這列數據有點問題。

有時候,我們並沒有辦法跟輸入數據的人溝通來找出準確數值。數項重複、拼錯了字、缺少了數值、可疑的數項(比如紀錄明明顯示兩人居住不同城市,但郵遞編號卻是一樣的)都很常見,如果不確保數據質量,直接把這些有問題的數據放進計算模型運算,出來的結果一定錯漏百出。

今天我會集中說的兩件事包括dedup──要確保數據表單裏沒有東西重複,另外就是數據清整(data cleaning)的部分:要讓機器學習產出的方程自動建議有哪些數據需要修復,因為如果數據條目數以千萬計,這些錯誤不可能依靠人逐條找出。

解決方案衍生問題 數據量大系統難以負荷

要在數據堆中找到重複的數項,是大數據領域其中一個最棘手的問題。先來假設數據一共有N項,如果N的數值很大,你會稱這些數據為大數據。如果N已經很大,進行交叉比對後,N的兩次方只會更大,處理數據的系統將難以負荷。這令「計算出P1這項資料跟P2項是同一筆資料的機率有多大」這件事變得很困難。另一個問題是數據的集群演算法和歸群(clustering):要把看起來很相近的資料放到一起很困難,因為要將所有東西跟所有東西交叉對比才能做到。找出P1、P2、P5很可能是同一筆資料後,也要找方法重整究竟資料全貌是什麼。

Prof. Ilyas闡述集群演算法與數據庋用之間的關係。(Prof. Ilyas簡報截圖)
Prof. Ilyas闡述集群演算法與數據庋用之間的關係。(Prof. Ilyas簡報截圖)
現在談談機器學習如何有助解決這個問題。數據科學有個概念是feature vector(特徵向量),有助分析數項。數項之間有些共同屬性(attributes),假如訓練用的資料數量足夠,那就可以教懂一個分類器(classifier)掌握「相似度高的資料是否同一筆資料」的規律,比方說靠分析兩筆資料的名字有多相近或地址、電話號碼有多類似來找出新資料中重複的部分。

新科技也須人手配合 要面對現實限制

不過,現實中會遇到好幾個問題。第一,客戶一定會問,我們需要關注哪些特徵(feature)?要用怎樣的演算法計算資料相似度?這已涉及好幾百個選項。幾年前,特徵工程學(feature engineering)就像電腦科學中的聖杯,是研究領域中很重要的部分,人人趨之若鶩,但是現在我們發現了這並非如此重要,因為訓練資料數量不斷增加,幾乎足以讓機器自動找到重要的特徵,比如通過深度神經網絡(deep neural networks,簡稱DNN)來做到。

依然重要的問題包括,處理大數據先要標籤好幾千筆資料,到底要多少標籤才足夠?為什麼用10個例子來訓練機器不足夠,1,000個例子卻足夠?我們其中一個客戶Thomson Reuters(湯森路透公司),他們有預算限制,不能讓員工一整天下來不斷為資料加上標籤,我們就要想出辦法令400筆訓練資料也足以訓練機器學習處理類似的數據,也要想辦法克服機器學習的偏誤(bias)和過度擬合(overfitting)問題,意思是防止因訓練資料不足而令機器學了錯誤的分類方法(比如說,訓練資料總筆數如果不多而其中有三則資料均是教授穿紅上衣,可能會令機器得出「穿紅衣的都是教授」這個錯誤結論)。

抓取平衡:方程複雜程度 vs 訓練資料數據量

如果特徵(feature)數量不足,也可能會出現偏誤,令機器過於聚焦一些無關重要的地方。解決這些問題的方法就是在機器學習方程的複雜程度和可用的訓練資料數量兩者之間取得平衡,令系統運作順暢。

一個新的概念是「弱監督」(weak supervision),我想應該是史丹福大學的研究團隊提出的,以前這個概念有別的叫法,比如distant supervision(遠監督),但是意思很簡單,任何機構比如銀行和大企業都能藉此訓練出更好的模型。這個概念是指用非監督式(unsupervised)的數據(即沒有提供「數項的數值是否真確」這一重資料)來產生足夠的訓練資料,用以建立監督學習式(supervised)系統。

「主動學習」助完善機器學習系統

如果你相信整體來說好的東西總會比壞的多,你也會相信一個數據集裏不重複的數據會比重複的數據為多。那就是說,如果從上百萬筆的資料中隨機抽取兩筆資料,較可能出現的情況是它們並不是重複的資料。那就是,隨機抽取資料來檢驗並不能讓你找到重複的數據,故訓練資料庫不能靠這樣來建立。這是個老問題,我們稱之為cold start。我們用主動學習(active learning)來解決。就拿現在的演講做例子,假如我問大家是否明白以上的講解而大多數人說沒有什麼太難懂的,我就可以繼續講解新的內容,但如果有一半人表示不明白,我就要多花時間解釋清楚。

「主動學習」也是這個意思,我們會編寫很多方程,如果為數不少的方程都無法處理某個特定問題,我們就知道要更深入研究。我們用這個方法,靠方程表現不如理想的部分來發現問題,並就着這些疑問來問清楚客戶。這樣,我們就不需要不斷問客戶「你認為這個跟那個是重複的資料嗎?」或事事也要客戶釐清。我們先問機器,機器認為有清晰定論的東西我們就不需要客戶澄清。如果機器覺得有六成機會是重複的資料,但判斷時有困難,我們就要就這方面索取更多的訓練資料來完善系統。

客戶未必能接受機器產生的結論

一個有趣的問題關乎如何理解機器學習的結果,或者說這些學習結果的可解釋性(explainability)。如果我找上大數據集的擁有人,告訴某公司他們應該把兩家分店合併,他們問起原因來,我總不能只說:「因為機器是這樣想的。」

這是行不通的,他們只會說:「你的機器壞了,修好它吧。」不過,如果我能指出幾個機器都發現了某個特徵和另外一些特徵,而這些特徵同時出現的機率微乎其微,並由此推斷出「兩家店應該合併」一結論,客戶也許就可以理解並同意結論。可惜的是,機器愈精密、複雜,產生的結果就愈難以解釋。比如說,類神經網絡(neural network)的分析結果是完全解釋不了的,猶如魔法。我們用上百萬的例子教會機器分辨哪些圖像是狗。如果問機器為什麼認為某圖像是狗,原因就是它看過上百萬張狗的圖像。機器不會用「因為牠有四條腿」、「因為牠在吠」等我們能理解的原因來解釋或思考。

Prof. Ilyas提出建立分類器的多種選項和各個方法的優劣。(Prof. Ilyas簡報截圖)
Prof. Ilyas提出建立分類器的多種選項和各個方法的優劣。(Prof. Ilyas簡報截圖)

系統設計有現實考量 公開資源利研究發展

如果要用某些特徵重合的機率來判別資料是否重複,就要靠非常嚴謹的特徵工程學,結論才會可靠、有說服力。但是,類神經網絡的情況完全不一樣,有時候你要刪掉一整層元件(layer),加上一個新的layer:你完全不知道為什麼要這樣做,但不斷做這些調整最後卻令系統運作順暢,然後你說:「很好!搞定了,別碰它!」這要用到天文數字的訓練資料,所以設計這些系統涉及取捨,而且視乎要解決的實際問題而定。你不能因為DNN非常新穎、效果神奇就把它應用到所有情況,因為訓練資料不一定足夠,或者客戶未必能接受無法解釋的機器原理。

就算你建立了引以自豪的數據模型,也有可能一兩天後就發現方程過時、未能切合客戶需要,接下來也要持續監察它的表現,要留意何時要重新訓練它,今天就不詳細說明這個情況了。

很不幸地,在大數據的領域中,最簡單的問題需要極度複雜的方法和平台解決,而我們也仍未找到妥善的解決辦法。這要靠公開資源的open source tag解決,我也很高興聽到WeBank(微眾銀行)完全使用open source tag。

學術研究現新思路 建立引擎可預測數值

接下來我會談一個讓人雀躍的話題。學術界用了將近20年來研究如何將數據處理的不同問題逐個找出和修正,現在已有海量的論文說明如何解決每一個特定問題。很多人研究這些來得到學位,得到工作,取得成功,不幸的是,我們只產出了更多畢業生、製造了更多工作崗位,但是這些問題仍未解決。現在,我們開始聚焦於問題,嘗試將它們視為一個整體來解決。

實際怎樣做到?如果讓你嘗試指出這整體來說是什麼問題,你會說:「我們似乎要找方法預測數據的真確數值。」如果你是數據科學家,可能就會想到,這就是要將每一個數項定為隨機變數(random variable),然後嘗試找出與變項分布相關的聯合機率(joint probability),然後這就變成一個統計學的推斷(inference)問題,比如說預測某筆資料其中一欄是「紐約市」的機率、另一欄是「11500」的可能性。這不是那麼難解決的事情,解決辦法存在已久,就是為這個問題建立相應的機率數據庫(probabalistic database),建立用於推斷的引擎,就能攪動這個機器學習的系統,消化整理出每個數項確實就是某數值的機率。

這裏的問題在於,我們沒有能夠同時處理上億個隨機變數的引擎。上統計學課時,探討的是single random value(單個隨機值)、IID(「獨立同分布」概念)、maximum by-variants/ multi variates等,都是些有三、五個或十個隨機變數的情況,不會探討上億計的隨機變數的相關系數。我們沒有一個機器可以消化這麼大量的潛在組合來估算變項的正確數值。

Prof. Ilyas指出,數據量龐大的問題是數據庋用領域難以解決的問題。(Prof. Ilyas簡報截圖)
Prof. Ilyas指出,數據量龐大的問題是數據庋用領域難以解決的問題。(Prof. Ilyas簡報截圖)

新嘗試可推動機器學習及應用發展

關於這個題目,我的網站有一些從去年起跟史丹福大學合作研究項目的相關帖文,全部都是公開資源(open source),思路挺革新。我們認為企業不需要再花工夫去標籤每一筆資料,而是可以抽取表單裏看起來沒問題的部分,用來訓練機器推算有問題部分的數值。我們的新方法由於能把數據中所有可疑的地方綜合起來考慮,很可能比舊方法更有效預測數值,準確度高達兩倍,而且一切由機器自動完成。如果數據的質量真的達到垃圾級別,你也可以剔除九成有問題的數據,讓剩下的部分進入下一步的分析,產生準確的分析結果。

2017年,Prof. Ilyas與其他研究人員聯合發表了介紹HoloClean方案的論文,嘗試將數據庋用問題視作一整體來解決,並且使用數學推斷的方法來進行數據修復。(Prof. Ilyas簡報截圖)
2017年,Prof. Ilyas與其他研究人員聯合發表了介紹HoloClean方案的論文,嘗試將數據庋用問題視作一整體來解決,並且使用數學推斷的方法來進行數據修復。(Prof. Ilyas簡報截圖)
我的分享差不多結束了,來一點小總結:機器學習對數據庋用領域而言是強效的工具,而數據庋用在技術層面來說對金融科技非常重要、對數據分析還有很多其他領域來說也不可或缺。金融科技公司每天要耗費大量時間來為數據模型準備可用數據,故自動化如何幫助解決數據質量問題值得關注。這涉及很多工程設計還有為了令實際操作暢順而做的準備工夫(pipework),而如果用上統計學推斷的方法來看待這個問題,不單可以解決數據質量問題,亦有助於預測未來數據。

本系列文章:

科大圓桌論壇:金融科技中的AI人工智能

滑大教授:讓機器學習整理數據 帶動金融科技發展

楊強:AI可稱霸棋局 金融科技應用另有挑戰

本社編輯部