案例詳解 | 基於Embedding的特徵安全計算

前言

傳統的數據開放共享方式,不少是將原始數據以明文的方式直接輸出,這樣在數據安全和隱私保護方面存在顯著風險,不符合日益完善的法律法規要求,也愈來愈不能知足當今數據體量、規模日益龐大而複雜的應用需求。另外,也存在加工爲標籤類的數據再進行輸出的方式,但一般存在信息漏損,使用這類數據進行建模,效果大打折扣。前端

通過實踐,TalkingData 藉助機器學習技術探索出一套新的方案,經過對原始數據進行分佈式的隱含表徵提取計算(一種數據變換方式),再將變換後的數據用於開放共享,既能夠知足數據輸出的安全性要求,又提高了大數據輸出的處理速度。該數據輸出方式主要基於機器學習的分佈式 embedding 算法(嵌入算法)。Embedding 算法是一系列算法的統稱,該類算法可以對原始數據進行變換,並挖掘其中的潛在關聯。Embedding 算法處理後的數據因爲信息漏損較少,相對標籤數據有更好的建模效果,被普遍用於推薦系統、天然語言處理等領域。算法

TalkingData 將該類算法應用到數據安全輸出領域,使得原始數據在通過變換後,可以以不具有可識別性的方式輸出,而數據獲取方沒法從中提取到與我的身份相關的敏感信息,也就實現了對隱私數據的匿名化保護。安全

基於保護用戶隱私、保障數據輸出安全性以及提高大數據輸出處理速度的考量,構建了 TalkingData System 平臺(如下簡稱 TDS)。TDS 平臺的底層基於 Spark 和 Hadoop 生態搭載了 embedding 算法,對原始數據進行計算和處理,再將結果經過前端平臺頁面輸出給企業用戶,目前已經在金融、零售、互聯網、廣告等行業中獲得應用。網絡

藉助 TDS 平臺,企業能夠將內部來自垂直領域的第一方數據,好比用戶羣體的活躍、消費、人口屬性標籤等,與 TalkingData 的第三方數據進行融合,豐富企業的自有模型特徵維度。理論上,不須要業務解釋或識別的預測模型都可使用本方法輸出的數據。機器學習

算法方案詳解

本算法具備通用性,能夠應用於任何能變換爲標準格式的原始數據輸出。下面經過一個示例詳解說明處理過程:分佈式

1、TDS 平臺的使用方上傳了一批設備 ID(設備標識),經過 ID 匹配,獲得對應的 TDID(即 TalkingData 自有的加密標識符)。oop

2、使用 TDID 做爲索引,提取原始數據。假設有 M 個 TDID,TDID 能夠看做每一臺智能移動設備的虛擬惟一編號,則提取後的原始數據共有 M 行,每行對應一個設備的屬性信息。假設屬性個數爲 N,每一個設備的每一個屬性值爲 1 或 0,表明一個設備具備或不具備某個屬性。將該原始數據變換爲 M*N 的稀疏矩陣,每行對應一個設備,每列對應一個屬性。例如第三行第五列爲 0,則表示第三個設備不具備第五列對應的屬性。學習

稀疏矩陣相對普通矩陣來比,可以極大的節省存儲空間。構造稀疏矩陣的方法能夠理解爲如下步驟:大數據

(1)建立一個 M*N 的矩陣,將其中的值所有填充爲零。優化

(2)逐行掃描,若是一個設備具備某個屬性,就將該處的值替換爲 1,直到掃描完成。

(3)記錄哪些行和哪些列的數據爲 1,存儲這些信息。存儲下來的這些信息,實際上就是一個係數矩陣。

3、經過嵌入模型對標準格式的原始數據進行表徵學習。實際上就是對輸入的原始矩陣進行分解。嵌入模型可使用的算法不少,此處以奇異值分解 SVD(Singular Value Decomposition)算法爲例進行介紹。

提到 SVD,就不得不提到與其相關的概念——PCA(Principal Components Analysis),即主成分分析,又被稱爲特徵值分解。關於 PCA 方法,你們的廣泛聯想是降維 。簡單來講,PCA 所作的就是在原始空間中順序地找一組相互正交的座標軸,第一個軸是使得方差最大的,第二個軸是在與第一個軸正交的平面中使得方差最大的,第三個軸是在與第 一、2 個軸正交的平面中方差最大的。這樣,假設在 N 維空間中,咱們能夠找到 N 個這樣的座標軸,咱們取前 r 個去近似這個空間,這樣就從一個 N 維的空間壓縮到 r 維的空間了,而咱們選擇的 r 值對空間的壓縮要能使數據的損失最小。

PCA 從原始數據中挑選特徵明顯的、比較重要的信息保留下來,這樣一來問題就在於如何用比原來少的維度去儘量刻畫原來的數據。同時,PCA 也有不少的侷限,好比說變換的矩陣必須是方陣,而 SVD 算法可以避免這一侷限。

SVD 算法,可以將一個矩陣分解爲三個子矩陣(三個子矩陣相乘能夠還原獲得原始矩陣)。咱們將這三個矩陣稱爲 U、Sigma 及 V,其中 Sigma 矩陣爲奇異值矩陣,只有對角線處有值,其他均爲 0。

案例詳解 | 基於Embedding的特徵安全計算

假設原始矩陣是 10,000 行 1,000 列,那麼分解後便可獲得以下三個子矩陣:

U 矩陣爲 10,000*10,000

Sigma 矩陣爲 10,000*1,000(除了對角線的元素都是

0,對角線上的元素稱爲奇異值)

V(^)T矩陣(V 的轉置)爲 1,000*1,000

實際應用過程當中,咱們只保留 U 矩陣的前 512 列,因而三個矩陣的維度就變成了:10,000*512,512*512,512*1,000。爲何是保留 512 列呢?緣由是奇異值在矩陣Σ中是從大到小排列,並且奇異值的減少特別快,在不少狀況下,前 10% 甚至 1% 的奇異值之和,就佔了所有奇異值之和的 99% 以上了。根據咱們的屢次實驗,512 列已經可以很好的保留奇異值的信息。

4、矩陣分解獲得三個子矩陣後,將 U 和 Sigma 相乘,獲得輸出矩陣。輸出矩陣的維度爲 10,000*512。能夠看到,輸出矩陣與輸入矩陣有着相同的行數,每一行仍舊錶明一個設備。可是輸出矩陣的列數變爲了512,與原始矩陣中每一列是一個屬性不一樣,此時的輸出矩陣中每一列對應一個特徵。該特徵不具有可解釋性和可識別性,這也就保證了輸出數據不會泄露我的隱私。

5、將輸出矩陣直接輸出,TDS 平臺的使用方能夠經過數據接口進行調用。由於平臺使用方沒法得到 V 矩陣,故而沒法還原獲得原始矩陣,也就沒法還原出任何與我的相關的原始屬性信息。

輸出時,須要將全部的數據先整理成步驟 2 中的標準輸入格式,而後拼接成一個輸入矩陣。以後的步驟與上述示例中相同。

效果

對於 Embedding 算法在數據安全輸出的實際表現,TalkingData 作了不少相關實驗,也在多個實際項目中進行了驗證。如下用兩個真實案例進行說明:

案例一:性別標籤預測效果提高

性別標籤是基於設備信息經過機器學習模型預測打分得出的。在過往的建模過程當中,算法人員每每會對原始信息進行必定的處理,好比將非結構性的數據處理爲結構性的統計數值,或者將其餘標籤做爲特徵輸入到模型中。可是,這些特徵工程方法都會產生必定的信息漏損或者偏差引入。

而 Embedding 處理後的數據相比人工的特徵篩選,因爲信息漏損較少,理論上會取得更好的建模效果。從如下兩圖能夠看出,基於相同原始數據,使用 Embedding 模型的預測效果比原始性別預測模型提高 (0.71 - 0.63)/0.63 = 13.7%。

image.png

案例二:某金融企業的風控模型預測效果提高

在與不少企業的合做中,會將 TalkingData 的人口屬性標籤和應用興趣標籤做爲第三方數據引入。在與某金融企業的合做中,TalkingData 將數據經過 TDS 輸出給該企業並應用在風控模型中。

在相同的假陽率(False Positive Rate)下,企業原有算法的生產準確率爲 0.42,而加入 Embedding 算法輸出的數據後,通過優化的生產準確率達到 0.52,提高 25%。在風控領域中,25% 的提高可以幫助企業避免很大的經濟損失。

image.png

關於其餘 Embedding 方法的思考

Embedding 方法被普遍應用於天然語言處理領域,也就是使用數學語言表示一篇文本。雖然上文提到的 SVD 算法的有效性在實際模型計算中被驗證了,可是在文本特徵表示方面仍有缺陷。

首先,它是一個詞袋模型(BOW,bag of words),不考慮詞與詞之間的順序,而在實際文本中,詞語的順序也很是重要,並且每一個詞在句子中的重要性各不相同;其次,它假設詞與詞之間相互獨立,但在大多數狀況下詞與詞是相互影響的,這也是爲何咱們在作「閱讀理解」的時候常常要聯繫上下文的緣由。

現在 Embedding 領域早已向深度學習的方向衍化,大體能夠分爲如下四種常見應用:

不依賴文本語法和語序的詞袋模型:one-hot、tf-idf、textrank 等;

主題模型:LSA、pLSA、LDA;

基於詞向量的固定表徵:word2vec、fastText、glove

基於詞向量的動態表徵:elmo、GPT、bert

其中,Word2vec 是得到工業界普遍應用的算法之一。提到 Word2vec 就不得不引入「詞向量」的概念。NLP 領域中,最細粒度的是詞語,詞語構成句子,句子再組成段落、篇章、文檔。如何用數學語言表示每個詞語,成爲研究詞與詞之間關係的關鍵。Word2vec 正是來源於這個思想,能夠把它看做是簡單化的神經網絡模型,可是它的最終目的,不只僅是用數值表示文本符號,還有模型訓練完後的副產物——模型參數(這裏特指神經網絡的權重)。該模型參數將做爲輸入詞語的某種向量化的表示,這個向量便稱爲——詞向量。

舉例子說明如何經過 Word2vec 尋找相近詞:

結合 TalkingData 應用 Embedding 的實際場景,與詞向量的最大區別就是被表示的特徵之間沒有上下文的聯繫。TalkingData 以分析移動設備行爲數據爲主,對大多數設備屬性來講,打亂排列的順序對於實際意義來講沒有任何影響,可是一個句子裏面的詞語是不能被打亂順序排列的,句式結構對於詞向量表示來講是很是重要的。基於實際業務場景的考量,咱們沒有選擇用 Word2vec 或更復雜的 Embedding 算法來轉換原始數據。

雖然,咱們保證了原始數據輸出的安全性,可是伴隨而來的是數據可解釋性較弱的問題。因爲 Embedding 算法將原始數據轉化爲了另外一個空間的數值向量,所以沒法人爲理解或者賦予輸出矩陣的每一列的實際含義。

假設建模人員構建一個「工資預測迴歸模型」,採集到的樣本特徵包括「性別、年齡、學歷、工做城市、工做年限…」,分別對應數據集中的每一列,那麼他們能夠容易的計算獲得每一個特徵的權重,而且可以比較哪一個特徵的權重較高,即特徵重要性的排序,獲得諸如「工做年限對工資高低的影響比性別更重要」這樣的結論。

可是在使用 TDS 平臺輸出的數據構建模型的時候,咱們沒辦法向上述模型同樣分析比較每一列特徵對模型的影響,只能得出增長 Embedding 特徵對於模型效果是否有提高這樣粒度較粗的結論。顯然,若是建模人員對於模型的解釋性有特別嚴苛的需求的話,TDS 平臺暫時沒有辦法提供解決方案。

做者:TalkingData數據科學家 周婷

做者簡介

周婷,TalkingData 數據科學家,專一移動大數據的深度挖掘和基於Spark 的機器學習平臺開發,爲 TalkingData 智能營銷雲和數據智能市場提供算法支持,主要負責精準營銷預測、企業級用戶畫像等產品的算法研發,長期關注互聯網廣告、金融營銷、反欺詐檢測等領域。

相關文章
相關標籤/搜索