韋海蘭 黃杰



關鍵詞:大數據;Flink;Kafka;CatBoost算法
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2023)21-0049-03
1 概述
大數據技術的快速發展,給金融業帶來了全新的發展機遇。大數據第三代計算引擎Apache Flink是一個基于內存的分布式處理框架,可對無界和有界數據流進行所有狀態計算,在進行實時的流計算方面性能表現優異,是Apache軟件基金會目前最活躍的項目之一,為企業不同業務應用場景提供一站式的大數據解決方案[1]。金融行業尤其是銀行具備海量的客戶交易相關數據,在研究與實施大數據具有先天優勢。整合金融單位自身的數據資源優勢,從業務的不同屬性出發,在大數據平臺利用機器學習算法,深入發掘客戶的價值和潛在的風險信息,對于提高其經營管理水平和風險防范能力有重要意義。
2 背景
2.1 信貸逾期預測問題
當銀行收到貸款申請時,必須根據申請人的個人資料做出貸款審批決定。銀行的決策涉及兩種類型的風險:一是如果申請人有可能償還貸款,那么不批準貸款會導致銀行業務損失。二是如果申請人不太可能償還貸款,即他可能違約,那么批準貸款可能會給銀行帶來信貸風險,解決上述問題的辦法是使用歷史貸款申請人的信息以及相關申請信息進行分類學習,識別出其中的“逾期”模式,據此做出貸款決策,如拒絕貸款或批準貸款。
2.2 大數據背景下的機器學習
目前傳統機器學習算法的特點主要有:一是樣本獨立分布、離線、假設計算資源不受限制(例如可以把全部訓練數據加載到主存);二是訓練生成的模型是靜態的,要想適應樣本數據的變化就要重新進行學習。如今,各種新興的大數據應用如醫療信息學和軍事應用、智能信息檢索、自動駕駛等,通過數量不斷增長的智能設備生成大量分布式數據。大多數情況下,這些數據是瞬時的,甚至可能不會永久存儲。傳統離線型的機器學習算法已不適應大數據背景下樣本不斷變化的機器學習任務。
利用Apache Flink流計算引擎進行機器學習模型訓練,一是可以進行在線實時計算,充分利用計算資源;二是可以進行動態模型計算,在線實時增量學習、更新模型狀態。目前已有許多Flink實時流計算引擎用戶畫像系統[2]、分布式實時推薦算法[3]、風險評估系統[4-5]等場景的應用。Apache Flink已提供了Flink平臺機器學習庫FlinkML,已經實現了基礎的機器學習算法,如Kmeans算法、邏輯回歸算法和SVC算法等。本文利用CatBoost算法實現大數據背景下的信貸逾期預測問題。
3 應用架構設計及系統流程
3.1 應用架構設計
本系統基于貸款實時數據采用rest-framework體系結構開發,貸款數據通過maxwell實時傳輸到kafka 主題中,Flink實時流計算引擎實時讀取kafka主題中的數據,再調用DataStream算子處理數據流后保存至MySQL中,并利用機器學習算法CatBoost訓練數據建立預測模型,最后應用服務器調用模型接口得到實時貸款申請信息的預測結果,并進行可視化展示。應用架構如圖1所示。
3.2 系統框架流程
基于大數據的信貸逾期預測計算流程可分為:數據獲取及預處理、模型數據的轉換、模型訓練和模型預測,如圖2所示:
4 系統框架的設計與實現
銀行向“有風險”的申請人發放貸款是信貸損失的最大來源。信貸損失是指當借款人拒絕還款或帶著欠款逃跑時,貸款人損失的金額。違約的借款人給貸款人造成的損失最大。如果能夠識別出這些有風險的貸款申請人,就可以減少信貸損失。通過機器學習有利于挖掘貸款違約背后的驅動因素,進一步識別出有風險的申請人。
4.1 樣本數據結構的設計
本文以天池金融風控-貸款違約預測賽大賽中提供的信貸數據作為樣本數據,選取部分特征進行模型訓練,刪除了部分與模型不相關的、對一組高度相關的特征進行去重。研究貸款申請人的數據,預測是否可能違約,以此決定是否通過貸款。具體步驟如下:
4.2 數據預處理
通過Maxwell實時數據管道獲取MySQL中更新及變化的數據,傳入Kafka主題中,Flink連接集群環境創建Kafka消費者讀取Kafka主題中的數據,把數據轉換成JsonObject類型,再調用DataStream算子對數據流做處理,比如去除重復值、異常值處理和特征轉換等,最后再創建一個kafka生產者把DataStream算子處理后的數據保存到Kafka主題中。
4.3 CatBoost 算法應用
4.3.1 模型管理
模型管理模塊主要包括模型訓練和模型上傳兩部分,實現步驟主要如下:
1) 從數據管理模塊獲取通過特征工程篩選下來的特征數據。
2) 設置機器學習參數,通過CatBoost算法訓練模型,查看測試集AUC,根據預測結果決定是否保留當前模型。
3) 上傳審核通過的模型,將模型信息加入模型信息表中,前端頁面可查看模型信息列表。
4) 在Django后端加載模型,調用當前模型進行逾期預測。模型使用的測試集的AUC為0.7385。
4.3.2 模型預測和結果可視化
可使用貸款預測功能來預測本次貸款是否有信用風險,從而判斷是否批準這次貸款,主要實現步驟如下:
1) 錄入用戶數據保存至oAuth_credituser(信貸用戶表)中。
2) 通過貸款逾期預測模塊進行預測。
3) Django會把預測結果上傳到前端。
4) 通過預測結果來決定是否批準這次貸款。
5 系統運行效果展示
5.1 用戶管理
系統管理員可以添加用戶、修改用戶信息、搜索用戶和刪除用戶,如圖6所示:
5.2 批量上傳信貸數據
系統管理員可以選擇上傳文件的格式,比如Ex?cel、csv或txt等格式的文件,然后選擇導入文件即可上傳信貸數據,如圖7所示:
5.3 逾期預測結果可視化
單擊逾期預測按鈕,右上角會彈出預測的結果。如果是0,則代表當前貸款數據信息沒有逾期的風險;如果是1,則代表當前用戶有逾期的風險。如圖8 所示:
6 結束語
隨著Flink技術在智能金融領域的落地生根,給大數據技術在金融領域帶來更廣闊的應用前景和充足的發展動力。大數據技術與智能金融領域融合發展,其應用場景也將愈發豐富,例如典型的場景有金融風控、金融客戶畫像等。本文應用機器學習算法實現了信貸逾期風險的預測,在今后的研究中會根據評估模型的預測效果進行參數調優,提高預測效果,并應用更多的機器學習算法開發更多的金融智能模型,實現更豐富的功能。