您當前的位置:首頁 > 舞蹈

陳小天:還用人工處理特徵?時間序列模型效果更強!

作者:由 DataFunTalk 發表于 舞蹈時間:2021-11-03

導讀:

隨著公司業務的不斷擴大,包括金融領域在內的各個領域中,逐漸積累了大量的時序資料,透過時序資料建立模型和制定策略能為業務提供有效地幫助。目前,在面對日益增長的資料量和複雜度,依靠人工衍生處理特徵效率低,侷限性大。因此採用深度學習挖掘時序資料特徵,使得時序資料在多業務場景的應用中,帶來對模型效果的明顯提升。

本文會圍繞以下四點展開:① 業務背景;② 業務效果;③ 系統框架;④ 模型演算法。

01業務背景

首先和大家分享下時間序列模型在金融領域應用的背景。

1. 時間序列資料的現狀

陳小天:還用人工處理特徵?時間序列模型效果更強!

我們知道在隨著公司業務的發展,會積累大量的結構化和非結構化的時序資料,例如:

裝置埋點資料:APP中捕獲的使用者的行為資料;

傳統的人行徵信資料:使用者過往在個銀行等機構的不同時間的查詢、借貸記錄;

客服互動資料:使用者和客服之間不同時間的溝通訊息。

2. 時間序列資料應用的過去、現在和未來

行業內面對時間序列類資料的主流處理方式為人工衍生,衍生出類似近三個月、近一年等對欄位進行加總的特徵,透過加工好的特徵再構建業務模型。這種方法在應用時間序列資料時會存一些問題:

特徵處理效率低,思路侷限,類似於裝置埋點資料,時間戳的顆粒度達到毫秒級,手工衍生特徵十分稀疏,且單個特徵的iv極低,難以建立有效的評分卡;

在大量特徵加工中可能會出現維度爆炸,繼續衍生手工特徵的邊際價值越來越低,導致模型效果達到瓶頸。

因此,目前採用深度學習方式跳過人工處理這一步,直接給業務模型賦能,提升業務模型效果,具體從以下三點實現:

使用深度學習序列模型豐富了對時序資料的表徵,補充了手工特徵未充分挖掘的資訊;

加入了embedding和attention技術,提高了序列模型表徵能力,增強了模型對業務指標的貢獻;

建立了一套泛用型時間序列模型框架,完成了相應的工程化程式碼。

在未來,時間序列資料還會發揮更重要的作用,希望可以建立一整套時間序列資料的應用體系,實現從資料端到業務端的端到端處理;完成手工特徵與深度學習互補共生的資料生態體系,實現更有深度的人機互動。

02業務效果

接下來具體展示一下目前自研兩個模型的效果,分別是人行徵信模型和埋點行為模型。

1. 模型效果

首先,針對人行徵信資料和埋點行為資料分別訓練baseline模型,baseline模型為目前線上使用中的業務模型,時序資料的特徵衍生依賴人工的業務經驗,主要應用於貸前稽核和反欺詐場景。

然後,用深度學習模型對同樣的資料探勘訓練stacking模型,stacking模型是挑戰者模型,除了baseline用到的特徵,它還加入了時間序列模型的評分作為特徵,在auc和ks上都有比較明顯的改善,提現了時間序列模型的邊際價值。

以下兩類模型的具體效果:

陳小天:還用人工處理特徵?時間序列模型效果更強!

陳小天:還用人工處理特徵?時間序列模型效果更強!

2. 工程效果

現階段已將以上一套自研演算法整合為python包,適用於大部分時間序列表單處理,可實現將資料簡單處理後就能實現建模,是一個自動化極高的模組,實現了:

高泛用:同一套程式碼適用於不同場景和資料來源,無需修改原始碼即可完成模型訓練;

高整合:整合資料預處理模組與深度學習推理模組,實現從原始資料到模型結果的端到端處理;

高效率:模組高度自動化,幾乎不需要特徵工程,只需簡單配置,訓練無需人工干預。

03系統框架

這部分介紹整體的系統框架,以及演算法的嵌入方法。

1. 上線方案

陳小天:還用人工處理特徵?時間序列模型效果更強!

如上圖所示,整個框架是分為模型訓練以及業務真實上線兩大部分。在訓練部分,首先需要將整個時間序列資料的欄位進行配置,配置後自動生成預處理模組,將原始表單資料轉化為pytorch可以識別的tensor,pytorch模型會進一步訓練、評估、調優。模型訓練結束後,在訓練部分的預處理模組和pytorch模型會直接嵌入到線上的系統中,換句話說,將預處理模組和pytorch模型處理線上資料生成子模型分,與之前特徵平臺的衍生特徵進行融合,生產新的模型(任意業務模型),最後匯入到決策引擎中。這種處理方式,不會破壞系統原有的結構。

2. 業務適配

具體介紹一下這套框架的實現。

陳小天:還用人工處理特徵?時間序列模型效果更強!

這套框架的建立之初,目的是實現更好的人機互動。如上圖所示,首先需要人確定使用場景、尋找相應客群、定義事件、針對不同事件選擇欄位,將上述內容配置好以後傳輸到配置器模組,配置器模組生成一個預處理模組對錶單資料進行預處理轉化,最後將轉換好的資料和模型一起進行訓練、評估、調優。

04

模型演算法

1. 技術處理

陳小天:還用人工處理特徵?時間序列模型效果更強!

舉個數據預處理的例子:上圖中第一個表單是從人行報文中擷取的一小段原始資料,每一行為一個事件(item),每一列是一個欄位(field),是一個完整的時間行為序列表單。下一步,需要將表單歸納總結,進行標準化處理,將類別行變數對映到編碼上,時間型變數進行時間間隔提取,時分秒的拆分以及標準化,數值型變數進行歸一化處理。接下來將已經處理好的資料轉化為tensor資料用模型編碼器編碼,即得出每個事件的編碼,至此處理完成的資料供任何模型使用。

2. 模型框架

陳小天:還用人工處理特徵?時間序列模型效果更強!

接下來介紹一下模型框架。舉個例子:一個使用者的原始資料是一個表單,將表單預處理為pytorch可以識別的tensor,縱向是事件,橫向是欄位,第一步,需要對資料的每一個格進行embedding,生成一個三維張量,進一步對張量進行壓縮,壓縮過程分為兩步,首先使用Filed Aggregation對欄位進行壓縮,得到一個事件的單獨向量,再使用Item Aggregation對時間維度進行壓縮,最後將整個時間序列轉成向量,最後用一個全連線層轉化為模型的輸出。

① 模型框架-Embedding

陳小天:還用人工處理特徵?時間序列模型效果更強!

下面具體介紹一下演算法框架中的Embedding部分,第一步對類別型變數進行embedding,由於類別型張量每一值都為整數,因此,將每一個類別型程式碼都對映成一個向量;對於數字型張量,將每一個張量都單獨形成一個向量;將類別型和數字型都轉為向量後再連線起來,構成三維矩陣;時間張量進行單獨處理,進行升維和linear處理之後,最後得到時間表徵的矩陣。

② 模型框架-Filed Aggregation

陳小天:還用人工處理特徵?時間序列模型效果更強!

接下來具體介紹一下演算法框架中的Filed Aggregation部分,該層為欄位的加總。在上層的處理中, 類別型和數字型形成的三維張量透過attention和query的操作降維,形成一個矩陣,再與時間特徵的矩陣相加得到一個新的矩陣,稱為事件的矩陣。

③ 模型框架-Item Aggregation

陳小天:還用人工處理特徵?時間序列模型效果更強!

最後具體介紹一下演算法框架中的Item Aggregation部分,將上一層處理得到的矩陣直接放入transformer encoder中進行提取,再使用一個attention和query的模式加總,得到每一個時間序列向量的表示,再加單個或多個的linear層輸出模型。

3. 模型總結

陳小天:還用人工處理特徵?時間序列模型效果更強!

在模型開發和訓練中的一些經驗總結:

對於風控領域的應用,引數層和層數不用很多,引數量和層數不用很多,emb_dim=8,nhead=2,transformer_layers=1,即可得到較好的效果;

有多個序列時可以單序列建模出分,然後與業務模型融合,既能增加可解釋性,又基本不損失精度;

將欄位的缺失值和padding單獨編碼,並學習引數表示,能提高模型泛化能力。

未來的展望和可發展方向:

巢狀序列:序列的每個item也是序列;

異構序列:序列的每個item型別不同;

多模態輸入:序列的item本身,甚至item的field可以是語音或者圖片。

今天的分享就到這裡,謝謝大家。

分享嘉賓:

陳小天:還用人工處理特徵?時間序列模型效果更強!

分享嘉賓:陳小天 數禾科技 資深演算法工程師

編輯整理:帖雨薇 小米

出品平臺:DataFunTalk

標簽: 模型  序列  資料  框架  處理