劉利:基於Spark的機器學習平台在點融風控應用介紹
6月11日,點融 Data Scientist Team 負責人劉利在「餓了么&七牛雲聯合論壇」發表演講《大數據技術在點融業務的應用介紹》,得到了現場與會觀眾的一致好評與積極提問。
活動海報
劉利重點介紹點融的機器學習平台,以及數據團隊在風控業務中的案例分析。從如何從複雜的數據關係中找到用戶的行為模式,從而為線上的風控策略提供決策參考,是 FinTech 風控管理的重要一環。藉助大數據技術,我們能夠迅速捕捉用戶行為模式的細微變化,從多個角度發現用戶之間的深層次關係,為風控提供強有力的支持。
演講現場
劉利目前為點融 Data Scientist Team 負責人。他從事互聯網數據分析和數據挖掘近十年。曾負責攜程網信息安全部數據團隊。長期專註於互聯網風控領域,尤其是電商行業和 FinTech 行業反欺詐分析建模和消費者信用評級。一直致力於用大數據的技術手段解決互聯網行業中的信息安全和風險管理中的難題。
以下為劉利本次演講問答環節整理。
本次演講主要分三大塊,第一塊是我們在點融做的一個機器學習平台或者說框架,第二塊是在我們在做風控業務的一些案例分析,第三塊是在建模時的一些經驗分享。
點融機器學習平台
一、機器學習一般流程
圖 1
機器學習的一般流程是,我們先有一個數據集,拿到這個數據集之後會作一個拆分,拆成一個 (X train, Y train)、(X test, Y test)。然後會根據訓練集的特徵作一個預處理。處理過程可能會包括比如缺失值的處理、相關性分析、分布情況的考察等。接下來是對這些特徵作重要性和區分度的分析,看到底哪些特徵是最關鍵而且對目標變數最有區分效果。再之後會做 Model Selector,去嘗試用一些演算法,看看哪些演算法能達到我們期望的效果。
我們知道每一個演算法都有外在輸入的參數,這些參數跟它本身的演算法的設計有關,可以根據我們積累的經驗調優參數,嘗試到底哪種組合能達到最好的效果,通過對 Hyper-parameter 做調優的選擇後,終於得到了你想要的 Best Model。機器學習大致的流程就是這樣。
二、已有的解決方案
痛點:
收費
數據安全
數據可視化
分布式
模型結果部署
第一個是收費的問題。收費可能是按照 license 收費,也可能是按它的配套方案收費,比如它是部署到雲端的,或者是在公司本身做本地化的部署,但這些收費一般來說都不便宜。
第二個是數據安全的問題。如果是雲端的部署,也就是說意味著需要你把數據上傳到雲端。雲端對很多互聯網公司,尤其是非常看重數據安全和質量的互聯網公司是非常不情願的事情。這意味著數據要上傳出去,即使經過了層層加密,也依然不能徹底解決數據安全的問題。
第三個是數據可視化的問題。很多開源的機器學習的工具在數據可視化這塊沒有提供足夠強大的功能。你可能藉助其他開源的可視化工具自己去操作,但這意味著你需要在不同的工具之間來回切換。還有一些工具本身並不支持分布式,只能在單機上跑。很大程度上取決於你的伺服器內存的大小能夠 handle 多大的數據集。
最後是模型部署。經歷完一個繁瑣的流程之後,終於得到了我們想要的模型。不過怎麼把它部署到生產線上,很多工具在設計上並沒有很好的考慮這個場景。
圖 2
基於這樣的原因,我們覺得在點融需要有自己的一套機器學習方案。這樣才能解決剛才說到的這些痛點。點融的機器學習平台是基於 Spark 集群及開源方案上,做了二次開發,把一些我們覺得重要的特性加進來。
圖 3
圖 4
圖 5
圖 6
具體來看一下做的一些事情:
因為我們是基於 Spark 做的機器學習平台,所以首先必然要求可以讀取 HDFS 數據(圖 3)。然後可以做到數據可視化(圖 4),數據讀進來後,通過一個可視化的按紐,可以把整個數據集特徵分布展現出來。能夠通過圖形化的方法展現特徵的重要性排序(圖 5)和共線性分析(圖 6)。在很多演算法中,如果在用到的變數之間中出現強相關性,這樣演算法的效果要大打折扣的。我們增加了一個可視化效果,可以看變數之間的相關性。
圖 7
接下來是我們的模型庫(圖 7),目前演算法裡面現在已經包含了常用的機器學習演算法。我們還加上了深度學習相關的演算法,在後台會有一台專門跑深度學習的伺服器,上面安裝了 GPU。所以當選擇了Deep Learning 的時候,它其實是在一台專用的伺服器上執行對應的演算法流程。
圖 8
最後是怎麼去發布我們得到的 Model(圖 8),這邊有一個一鍵發布的按紐,當你生成好 Model 之後可以點 Publish 直接生成一個 Restful 介面。這個介面可以對外部系統提供 Model 的預測服務。
我們希望通過點融機器學習平台,使得我們平台的使用者能夠很傻瓜地執行機器學習的一般流程。只要有相關機器學習經驗的同事,就可以很快上手,讓使用方可以節省下敲代碼的時間,基本做到只要用滑鼠點點,就可以看到演算法效果是什麼情況。
風控業務案例分析
點融的主營業務是借貸和理財。跟錢打交道的業務必須要有強大的風控才能持久。大家可以回想一下當你去向銀行申請住房貸款或者信用卡的時候,銀行的工作人員在審核你的身份證和工資流水的認真程度就知道他們對你的資產和信用信息是多麼地關注,因為他們希望能夠把客戶的違約風險降低到最小。
圖 9
圖 9 是有一些常用的個人信息(圖 9),比如這個人的 Bankcard,他所工作過的公司,email, 申請的 loan 等。我們可以在圖資料庫裡面把這些實體關聯起來。大家如果有做過數據挖掘或機器學習的都知道,我們最常處理的數據格式是二維表。如果你在處理圖片類數據,我們會把圖片類數據通過 rgb 三個顏色通道擴展到更高維的表,但是它本質上還是一個表。但是圖的關係和我們常用的二維表的數據格式其實不太一樣,它會更複雜。我們也不大可能用一個二維表去完整地把這個圖的信息表達完整。風控的數據分析和建模是需要我們基於圖的數據做分類和預測相關的工作。
Graph Mining 在風控領域的應用
圖 10
基於圖的數據怎麼樣去做機器學習相關的演算法?大致的思路大概是這麼幾條。
比如基於點的分類。你所關心的數據已經通過你定義好的實體整合延伸到一個很大的圖。對其中的一些節點,通過對歷史數據的反饋,我們是可以知道哪些節點對應的申請人是壞的,哪些節點對應的申請人是好的。這樣我們可以給這些節點做標註。比如在上圖中,用淺藍顏色標註的是好,深藍顏色標註的是壞。在圖的這個結構上可以用圖的分類演算法去做訓練,得到一個針對節點的分類模型。對於新的節點,比如圖中的空白顏色的節點,我們可以通過這個圖的模型預測是好或壞的概率。
圖 11
圖 11 是基於圖的分類。比如說我們對每一個申請人,把其給定 X 度人脈所關聯到的點全部摳出來。這樣每一個人的給定 X 度人脈都是一個完整的子圖。我們根據之前的歷史數據標註出來哪些子圖是屬於好的,哪些子圖屬於壞的。我們可以基於子圖的結構去實施機器學習的演算法,得到對給定 X 度人脈的子圖的分類模型。
圖 12
基於非監督的學習,有三個假設。
第一個是平滑性假設,意思是如果兩個樣本點的坐標是很近的,那這兩個樣本點屬於同一類別可能性是很大的。這個假設是所有回歸模型的前提。如果實際的數據集不滿足這個假設,我們是不能應用線性回歸和邏輯回歸在其上的。
第二個是聚類假設,如果通過某一種聚類學習得到不同的子簇,那麼同一個子簇里的樣本點有很大概率屬於同一個類別。舉一個例子,我們看到上圖中這個數據集是有清晰的底層結構的。我們能通過某一種聚類演算法得到兩個子簇。比如看圖中的這兩個點,我們去估計這兩個點的距離,會發現它們是很近的。如果你單用平滑假設,就會覺得這兩個點應該有較大的概率屬於同一個類。但是你考慮到本身數據的結構,再加上聚類演算法的結果,你會發現因為這兩個點屬於兩個不同的子簇,所以它們應該會有較大的概率屬於不同類別。
第三個流形假設。簡單的說,流形假設或者流形學習是在做降維的事情。我們的球面可以看作是一個在三維空間的二維流形。這樣南極北極的距離就不是地球這個球體的直徑長度,而是半弧的長度。這個概念在流形裡面叫測地線。機器學習中分類問題的本質,可以說是通過生成的特徵空間,是把所有的樣本點映射到這個特徵空間里,然後在這個特徵空間里能夠找到一個超平面把好的和壞的樣本點完全分離。流形學習是說如果在這個高維空間里我們發現樣本點可以用一些低維的特徵組合得到,那我們就得到了它的流形結構。如果屬於同一種的流形結構的樣本點,應該有很大的概率屬於同一個類別。
基於圖結構的非監督學習基本上也是按照這種思路去做的。
圖 13
社區發現是在說我們從圖的關係結構里,藉助社區發現相關的演算法,得出圖裡某些樣本點之間的關係是比它們和周圍其他點的關係要密切得多的。這樣這些點就構成了一個社區。如果我們用到風控領域的話,是說如果在這個社區里出現了較多壞樣本,那說明這個社區已經被「污染」了,那屬於這個社區的點應該有很大概率是屬於壞的。
如何提升模型性能
基於數據
藉助演算法
用演算法調參
藉助模型融合
最後講一講在建模過程中一些調優的經驗。如果發現 Model 的效果不是很滿意,應該採用怎樣的方法提升。可以嘗試這四個方面。
第一個是基於數據的方法。如果這個模型效果不太好,我們首先要思考的是特徵是否還不夠好或者還不夠多。我們能否想方法找出更多的特徵來。同時也要考慮到我們對數據的分析是不是到位,是不是對數據的處理上還不夠細緻,是否在數據的整理上犯了一些低級錯誤,而導致模型效果不太好。
第二個可以藉助演算法的方法。如果你用到的演算法是線性的,它的效果可以作為你的一個 benchmark。你可以嘗試使用複雜一點的演算法去擬合你的數據集,比如用非線性的,boosting 的一些演算法。用複雜的演算法一般會比一些線性的演算法得到更好的效果,但也同時意味著你要花更多時間調優模型的參數。
第三個用演算法調參的方法。一般說來,非線性演算法是有一些超參數的。越複雜的演算法超參數越多。比如像深度學習的超參數就非常多。你要通過一個複雜的演算法得到一個很好的模型,是需要花很多時間去調參的,而且在調參過程中意味著你需要對演算法本身有一定了解,而且了解的越深入對調參過程越有把握。
最後通過融合(ensemble)我們的模型。我們使用 random forest 或者 GBDT 的演算法,本身就是一種融合的方式。我們在用好幾種演算法得到不同 Model 後,可以把這些 Model 再次融合起來。最直接的方法是把不同 Model 的結果當成新的 Model 的 input 重新去訓練。在你遇到 Model 效果不太好的時候,可以嘗試使用模型融合。
今天的分享就到這裡,希望我們的經驗能夠幫助到你們。
Q&A
提問:剛才您說把數據變成一個圖而不是二維表,這樣怎麼把圖數據輸入到機器學習演算法內的?因為機器學習演算法都是二維表形式的?
劉利:我剛才說的基於圖結構的機器學習演算法不是我們常用的那些機器學習演算法。這是基於圖的結構本身設計出來的新演算法,都有 Demo Coding。如果你想嘗試用機器學習里常用的分類演算法,你可以把圖的結構變成二維表,但是你會丟掉一些信息。比如你統計這個樣本點的多少度人脈的統計量,把這些信息放到二維表裡。
提問:還有您剛才說的聚類,咱們用的是歐式距離還是其他什麼距離?
劉利:很大程度上需要根據你實際的數據集的情況設計你的聚類演算法。
提問:您剛才說咱們做社區發現,背後的演算法是聚類還是其他的?
劉利:社區發現本質上是一個聚類演算法。對社區的定義其實不是嚴格的,這個概念是說某些樣本點之間的聯繫要比它們跟周圍其他的一些點的聯繫要多。但是這聯繫多少算多不是嚴格的,是根據你自己對業務的理解定義出來的。
提問:我不是做機器學習的,但是我想問一下機器學習對中小企業有什麼實踐意義?我們目前是做物流相關的行業,數據量暫時還不是很大。
劉利:也許你可以借鑒機器學習的思路和方法。我覺得不管是大企業還是小企業包括你個人,每天都面臨做新的決策。做決策有很多方法。也許是憑藉你個人的直覺、積累的經驗和知識等,當然也可以是數據的方法。如果你能嘗試用數據的方式表達你所依據的經驗和知識,你就能借鑒機器學習的方法,得到你所關心的問題的結論。所用到的數據也並不一定要非常大,也可以是小的數據,比如用 Excel 能處理的也可以。也許你會看到機器學習給你的結果能帶來一些新的提示或者幫助。也有可能機器學習在某種程度上是在表達你的經驗。也許你會覺得這個機器學習的思路並不是一件壞事,它會讓你看到一些新的結果或者產生一些新的想法。
本文作者:劉利(點融黑幫),點融網 DATA Scientist,上海交通大學應用數學本科,計算數學研究生,喜歡乒乓球和羽毛球運動。
文章來源:高可用架構公眾號
關於架構師實踐日:七牛雲竭力在全國範圍,為所有追求卓越的程序員和架構師,打造一片分享與交流的純凈空間。這裡有大牛、有乾貨、有方法、有實踐,亦有懷揣著技術夢想的同道中人。無論你想學習知識、激發靈感、探討決策,或是擴大視野、結識夥伴、分享心得。架構師實踐日都會令你不虛此行。
※機器學習(5)之決策樹ID3及Python實現
※獨家:Google讓機器學習賦能Play商店,使應用有好排序
※機器學習的發展還得靠「開源」
※來自華盛頓大學教授的機器學習「內功心法」
TAG:機器學習 |