01 背景和問題 目前,模型開發的流程越來越規範化,通常可以分為業務分析、樣本準備、特征工程、模型構建、模型評估及監控這幾個步驟。其中,特征工程和模型構建在建模的整個流程中依然非常耗時,並且非常依賴於模型開發者對業務的理解及數據處理的能力。 在目前實際業務場景下,面臨的最大的一個問題是,如何快速地構 ...
01 背景和問題
目前,模型開發的流程越來越規範化,通常可以分為業務分析、樣本準備、特征工程、模型構建、模型評估及監控這幾個步驟。其中,特征工程和模型構建在建模的整個流程中依然非常耗時,並且非常依賴於模型開發者對業務的理解及數據處理的能力。
在目前實際業務場景下,面臨的最大的一個問題是,如何快速地構建起一個質量相對不錯的模型,以適應業務的快速發展。傳統的風控建模周期較長,通常要20天左右的時間才能達到上線的要求。其中,特征工程的耗時在整個建模過程中會占到大約60%的時間,且這個過程的挑戰就是人工提取特征的複雜性和高時間耗費性。自動化特征工程能夠對必要而繁瑣的工作進行自動化處理,從而優化機器學習模型的構建和部署,這樣模型的開發者就可以更多地關註其他重要步驟。另一方面,模型開發過程的耗時在整個建模過程中會占到大約30%的時間。這個過程的難點並不在於給出一個模型,而是在於同時比較多種模型甚至多種模型組合後,選出效果最佳的模型做主決策模型,其餘的模型可以作為備用模型或者比較對象。這個過程如果用人工去實現,也會消耗非常多的時間,並且效果不一定最優。
基於這樣的背景,融360推出的自動化特征工程和自動建模的方案,把建模過程中耗時最長的特征工程部分和模型開發部分抽象出了一套自動化工具。不僅集成了自動特征工程,還對建模過程中變數的篩選、建模調優、部署上線和模型監控進行了模塊化的封裝。該工具有如下優點:
① 大幅提升建模效率和標準化程度;
② 節約人力成本和時間成本;
③ 快速達到業務方要求;
④ 有利於嘗試更多的模型方案和模型快速更新迭代。
通過自動化特征工程和自動建模方案後,模型從開發到上線的時間大幅減少,可以縮短至5天左右,不僅簡化了開發流程,提升了開發效率,準確率方面也保持較高水準。
--
02 自動化特征工程
首先,我們先來看一下手動特征工程是如何完成特征工程這個過程的。人工構建特征工程主要依賴領域知識來構建特征,一次只能產生一個特征,這是一個繁瑣,費時又易出錯的過程。此外,每次進行特征工程的代碼是針對特定業務和特定場景的。當我們面對新的需求、新的數據源時,我們需要重構特征,重新進行開發,耗時長效率低。
因此,特征工程若要能夠實現自動化和標準化,其數據在結構上必須要具有一定的相似性和共通性。根據美國資料庫營銷研究所Arthur Hughes的研究,客戶資料庫中有三個神奇的要素,這三個要素構成了數據分析最好的指標:
① 最近一次消費(Recency);
② 消費頻率(Frequency);
③ 消費金額(Monetary)。
在眾多的客戶關係管理(CRM)的分析模式中,RFM模型是被廣泛提到的。RFM模型是衡量客戶價值和客戶創利能力的重要工具和手段。該模型通過一個客戶的近期購買行為、購買的總體頻率以及花了多少錢三項指標來描述該客戶的價值狀況。
在融360的業務場景下,更多的數據是交易級別的數據。那麼,根據RFM模型構建出來的特征通常包含基本的統計變數,趨勢型的變數等。例如,通話的時間段可以分為白天或者夜晚,通話類型可以分為主叫、被叫或者未接,交易金額總和、次數等等,這些都屬於統計型變數。而類似於近3個月比近6個月的通話次數減少了多少,這是趨勢型變數。
不僅是結構化數據,在關係網路中也可以通過RFM模型構建特征。如下圖所示是一個簡單的關係網路。應用RFM模型,可以構建出例如某用戶有多少1度聯繫人,1度聯繫人中是否有過借貸行為,平均借款金額,以及其中有多少人有逾期記錄等特征。
綜合以上分析過程,可以將自動化特征工程的過程抽象成如下圖所示的框架。首先,根據不同的數據類型,採取不同的處理方式。如果是分類變數,可以切分成不同的數據模塊,用統計型或者標識型的方法去處理,完成第一層的聚合運算,生成基本的統計特征。那麼在第二層中,會對基本的統計特征採取比值計算和趨勢計算的一些方法,衍生出新的變數。
回顧特征工程的整體過程,有了自動化特征生成工具之後,模型開發者關註的重點不再是構建能夠通過簡單運算得到基本的統計特征,而是能夠有更多的時間關註數據本身。而需要人工處理的部分僅是從原始數據到把數據標準化的過程,後續的特征自動組合、計算,以及評估到輸出都實現了自動化的過程。
下圖所示是某項目中,自動化特征工具和人工構建特征在同一數據集上的比較。可以看到,自動化特征相對人工特征效果明顯提升且耗時更短。當然,開發自動化特征工具的目標並不是為了替代人工,而是希望自動化特征工具能夠快速並且準確地提供一版基礎特征,從而把人力更多地投入到對原始數據的理解以及對業務分析中,或者構建出更多衍生的特征。
--
03 自動建模
儘管不同的數據樣本和不同的模型選擇,得到的結果會有較大差異。但各項指標綜合來看,目前不管是國內外的數據競賽,或者是回歸到公司業務本身,xgboost和lightGBM依然是適用性最好,表現最優的演算法之一。而在信貸場景下,LR因其較好的解釋性,也被廣泛使用。因此,自動化建模工具整合了常用的演算法,針對建模過程中通用性較高的部分進行了模塊化的封裝。這樣極大地提升了開發效率,並且可以將更多的時間用於嘗試不同的模型。
1.自動特征選擇部分:
首先,自動通過EDA(Exploratory Data Analysis)對特征進行初步篩選,例如篩選掉缺失率較高,方差恆定不變,在時間維度上不夠穩定等特征。其次,自動綜合多種常用演算法和規則,進一步篩選出有效的特征。例如:
① IV值篩選;
② 樹模型輸出重要性;
③ 共線性篩選。
最後,選擇出綜合排序TopN,以及各個類別中排名靠前的特征。可以把幾千維度的特征降低到幾百個維度的範圍內,並且在減少特征的同時,保留特征的多樣性。
2.建模部分
邏輯回歸模型(LR)
LR在信貸場景下,通常用於構建評分卡模型。首先回顧一下邏輯回歸實現評分卡的理論基礎。
一個事件發生的幾率(odds),是指該事件發生與不發生的概率的比值。若一個用戶違約的概率是p,則其正常的概率為1-p。可以得到:
此時,客戶違約的概率p可以表示為:
而評分卡的表達式為:
其中,A和B為常數。通過給定 (1)某特定Odds時的Score值(2)該特定Odds值翻倍時Score增加值,帶入評分卡表達式即可求得A、B。
而根據邏輯回歸的原理可推導出該事件的對數幾率如下:
因此,構建評分卡的問題轉化為利用邏輯回歸模型求概率的問題,最後根據概率轉化成評分卡的分數。
構建評分卡模型中最關鍵的步驟是WOE分箱,分箱的好壞直接影響最後模型的效果。傳統的處理方式是,人工根據特征的業務含義,對特征進行一些粗分箱。抽象成自動化工具後,統一對特征進行等頻分箱後做WOE變換,並且進行單調性檢測。同時,也保留了人工操作的介面,可以自由調整分箱的邊界,達到更優的效果。
- XGBOOST
xgboost是目前應用最廣泛的演算法之一。不僅在多種競賽場合取得非常好的成績,在工業界也有廣泛應用。在自動化建模的過程中,為了能讓xgboost發揮出更好的效果,需要針對入模變數做額外的預處理。連續變數雖然可以直接入模,但為了減少過擬合,依然對連續變數進行了分箱處理。而分類變數則不能直接入模,可以通過決策樹進行分箱的操作,或者通過各種編碼方式對變數進行轉換,例如標記編碼,one-hot編碼等等。
除了對入模的特征實現預處理,自動化建模工具還集成了更全面的調參方法,包括:設置多組經驗參數、GridSearch、RandomSearch等,這個過程也是人工調參中耗時較長且重覆性較高的步驟之一。
--
04 自動化模型評估與監控
在完成模型開發後,最重要的一個環節就是模型評估與模型的監控。在各種數據競賽中,評估一個模型的好壞,通常會用AUC、KS等指標。但在實際場景中,模型上線後需要關註的不僅僅是這些模型的評估指標。更加需要關註的是模型整體的排序性和穩定性。在不同的業務場景下,對模型的要求也不一樣。例如,在欺詐檢測的場景下,會希望模型在低分段有更好的區分度。反之,如果要做授信額度策略,則會期望模型在高分段有更好的區分度。
自動化模型評估在實現全面、細緻、快速地評估模型效果方面,主要涵蓋了以下三個方面:
① 跨維度:變數維度、模型分維度;
② 跨樣本:Train、Test、OOT、Early Performance等;
③ 跨模型:當前線上模型、不同版本新模型。
跨維度層面,包括對特征的監控以及特征對模型結果的影響。除了關註模型的基本監控指標AUC、KS、PSI、Ranking等,在變數維度,還會關註變數隨著時間的變化,排序性是否下降,PSI是否升高,以及特征是否對模型結果產生了負面影響等因素。
跨樣本層面,由於在模型開發的過程中,經常會使用比較成熟的表現期的樣本,例如MOB6進行建模,但在評估模型的時候,可以用MOB1的樣本進行跨期測試,用來判斷模型的早期效果。
跨模型層面,不同的模型有不同參數,會針對不同的模型進行比較。看當前線上的模型和新版本模型之前的效果差異。
最後,根據以上三個維度的評估,會進行加權求和,輸出模型最終的綜合評分以及模型相關內容的文檔,包括模型表現的彙總、特征分箱的結果、變數的PSI、變數與逾期率的關係等內容。
--
05 模型部署上線及線上監控
相較於傳統的寫python腳本完成從訓練、預測到輸出結果的模型上線方式,目前更常用的方法是輸出模型文件,線上的部署環境支持讀取和調用模型文件。但融360開發了針對模型部署的平臺,省略了開發模型部署的腳本。模型自動輸出配置文件,只需將配置文件放如新模型的文件夾中,就可以輕鬆完成上線部署,實現自動評分。並且配置文件具有簡潔和良好的可讀性等優點。
模型上線後的線上監控也是非常重要的環節之一。如果模型的監控僅依賴於各個模型的owner,那麼會產生非常多的問題,例如不能及時發現AUC、PSI等模型指標的變化,缺失對特征變化的監控,模型何時需要重新訓練,更新迭代等等。針對這些問題,融360開發了自動化模型監控工具,實現標準輸入,標準輸出。新模型配置監控不再需要重寫代碼,只需配置文件即可。
模型的每日監控會與模型上線時候的指標做對比。一方面,整體監控KS、AUC、PSI、排序性等指標是否發生變化,另一方面,關註每個變數在訓練時的分箱與上線後的分箱的差異,看特征的分佈是否發生了偏移,實現自動預警。
當監控發生報警時,會提醒模型開發者哪些地方出現了問題,從而能夠及時響應。例如,當變數發生偏移的時候,考慮是否是數據源發生了波動,業務客群是否發生變化,是否需要與產品團隊、策略團隊進行對接等問題。
最後,模型的監控以三種形式輸出:監控周報、定時預警以及模型效果可視化。
今天的分享就到這裡,謝謝大家。
本文首發於微信公眾號“DataFunTalk”。