編輯導語:建模,是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。建模是研究系統的重要手段和前提,凡是用模型描述系統的因果關係或相互關係的過程都屬於建模。如果在建模的過程中發現缺乏行為數據,你該怎麼辦?針對這個問題,本文作者為我們分析了聯繫人倒排表。
在構建用户風控評分卡時,工程師們經常為特徵數量和數據維度所困。特別是實時評分卡,因為實時申請用户往往缺乏行為數據而使得模型構建困難。
在大集羣數據計算時,使用圖數據效率又不是很高。因此,倒排表成了一個可以高效率挖掘用户關係特徵的重要方向,倒排表特徵是新申請用户關聯到老平台用户的特徵。
2. 倒排表特徵簡介倒排表區別於正向表,和傳統的倒排索引區別於正向索引有類似之處。
例如:關係人電話倒排表也是通過在正向關係表的用户-聯繫人電話維度表(圖一),導出逆向的倒排的聯繫人電話-用户的維度(圖二)。但倒排表和倒排索引不同的地方在於,電話與電話之間和用户與用户之間不存在先後關係。
圖一:用户-聯繫人電話的正向表
圖二:聯繫人電話-用户的倒排表
倒排表特徵區別於常規特徵,倒排表特徵的主鍵往往不是用户身。
例如:常規特徵如表1所示,主鍵是用户本身,常規特徵也是屬於用户本身的。但是,倒排表特徵的主鍵卻不是用户本身。從根本上説,這個倒排表特徵是屬於對應的主鍵的,聯繫人倒排表特徵的主鍵則是聯繫人電話,如表2所示。
表一:常規特徵表
表二:聯繫人倒排特徵表
倒排表特徵的使用是通過用户的某項用户數據,關聯成用户本身的特徵。
例如:本文要介紹的聯繫人倒排表特徵是,先拿到這個用户擁有的電話號,然後再去聯繫人倒排表中查找這個電話號的倒排表統計特徵。除了聯繫人電話這個主鍵外,還可以使用地址或設備信息作為主鍵。在本文中主要介紹以聯繫人電話為主鍵的倒排表特徵。
3. 倒排表特徵的結構要製作倒排表特徵總共需要準備與製作4張表。分別是:倒排關係表,用户特徵表,倒排用户特徵表和倒排特徵最終表。
它們的關係如圖三所示:
圖三:倒排表特徵製作結構
首先,倒排關係表和用户特徵表合成成倒排用户特徵表;然後,使用倒排用户特徵表計算出倒排特徵最終表;最後,用過倒排特徵最終表關聯用户數據得出倒排表特徵。
我會在下文中分別介紹這4張表的作用和製作方法。
二、聯繫人倒排表特徵的製作1. 聯繫人倒排關係表倒排關係表是由原始關係數據生成的一張關係表。
例如:聯繫人倒排關係表是一張聯繫人電話和現有用户的關係表,表中的聯繫人電話和用户關係是通過通訊錄數據或者電商下單購買數據等提取出的;例如:在電商下單數據中,每一條數據都有收貨人電話和下單用户的用户id。
如果,用户1給電話a和電話b下過單,記:
共兩條數據。
如果,用户2給電話b和電話c下過單,則記下:
共兩條數據。
因此,關係人倒排表會如表3中記錄所示,共4條數據。表中,主鍵是電話,每行數據對應一個電話和下單用户的關係。
表三:聯繫人倒排關係表
2. 用户特徵表用户特徵表是一張用户對應的常規特徵表,和我們構建風控評分卡時使用的常規特徵表一樣。主鍵是用户本身,包含一些用户的重要常規特徵,甚至可以包含該用户行為評分卡的分數,如表四所示。
表四:用户特徵表
3. 聯繫人倒排用户特徵表倒排用户特徵表是由倒排關係表和用户特徵表,以用户為key,合成的表,如表五所示。聯繫人倒排用户特徵表中的主鍵依然是聯繫人電話,每行數據對應了這個電話關聯到的用户和該用户的特徵。
表五:聯繫人倒排用户特徵表
4. 聯繫人倒排特徵最終表倒排特徵最終表是使用倒排用户特徵表計算。在聯繫人倒排特徵最終表中計算方法是通過group by主鍵,求電話關聯到所有用户的特徵的mean值,max值或者比例。
如表六所示,聯繫人倒排特徵最終表的主鍵依然是聯繫人電話,每行數據代表了該電話關聯到的用户的統計特徵。
表六:聯繫人倒排特徵最終表
下文會介紹在離線訓練和線上預測時如何使用倒排特徵最終表生成倒排表特徵。
三、聯繫人倒排表特徵的使用1. 離線計算與訓練的使用在訓練模型之前,需要先離線計算好倒排特徵最終表。
在訓練時,按用户數據關聯倒排特徵最終表中的主鍵,如圖四所示。最後,在訓練模型時把關聯到的倒排表特徵按照普通特徵放入模型中即可。這裏有很多坑點,請參考下文的總結與坑點。
圖四:線上倒排表特徵使用流程
2. 線上實時使用線上實時使用倒排表特徵也需要提前生成好倒排特徵最終表。
如圖五所示,線上新用户申請時,用線上用户數據去查倒排特徵最終表。從而生成該用户的倒排表特徵,再放入線上評分卡模型中預測分數。
圖五:線上倒排表特徵使用流程
四、總結與坑點1. 總結本文中介紹了,為了解決在構建申請評分卡時申請用户因為缺乏行為數據而使得模型構建困難的問題,使用了倒排表特徵。倒排表是一個可以挖掘用户關係的特徵構建方向,通常在構建模型中佔據着重要地位。
2. 坑點構建倒排表特徵時有非常多坑點,這裏總結了幾個供大家參考:
1)坑點1:線上和線下電話存輸格式不一
在構建聯繫人倒排關係表時,原始數據來源於通訊錄數據或者電商產品購買數據。
在這些數據裏面的電話可能是沒有加國家和地區號的,但線上傳輸數據是有可能是加了國家和地區號的電話,這裏一定要注意先統一規劃好電話號格式。
2)坑點2:使用未來數據
構建離線訓練模型的倒排特徵最終表時,要注意構建的倒排關係表和用户特徵表這兩張表都應該有觀察截止時間,並且關係和數據都應該只使用在觀察截止時間前的數據。
3)坑點3:訓練數據中,放入自己關聯自己的數據
使用倒排表特徵的目的是讓新用户在申請時多一點關聯特徵,所以,我們在訓練的時候也要儘量模擬新用户申請的場景。
如果我們使用的是老用户去模擬新用户構建模型的情況,請一定記得在離線特徵生成時去掉自己關聯自己的數據,防止模型過擬合。
例如:電商下單數據中用户給自己下的單,不應該出現在離線訓練的倒排關係表裏面。
本文由 @FAL金科應用研院 原創發佈於人人都是產品經理,未經許可,禁止轉載。
題圖來自 unsplash,基於 CC0 協議