案例詳解 | 基于Embedding的特征安全計(jì)算
前言
傳統(tǒng)的數(shù)據(jù)開放共享方式,很多是將原始數(shù)據(jù)以明文的方式直接輸出,這樣在數(shù)據(jù)安全和隱私保護(hù)方面存在顯著風(fēng)險(xiǎn),不符合日益完善的法律法規(guī)要求,也越來越不能滿足當(dāng)今數(shù)據(jù)體量、規(guī)模日益龐大而復(fù)雜的應(yīng)用需求。另外,也存在加工為標(biāo)簽類的數(shù)據(jù)再進(jìn)行輸出的方式,但通常存在信息漏損,使用這類數(shù)據(jù)進(jìn)行建模,效果大打折扣。
經(jīng)過實(shí)踐,TalkingData 借助機(jī)器學(xué)習(xí)技術(shù)探索出一套新的方案,通過對(duì)原始數(shù)據(jù)進(jìn)行分布式的隱含表征提取計(jì)算(一種數(shù)據(jù)變換方式),再將變換后的數(shù)據(jù)用于開放共享,既可以滿足數(shù)據(jù)輸出的安全性要求,又提升了大數(shù)據(jù)輸出的處理速度。該數(shù)據(jù)輸出方式主要基于機(jī)器學(xué)習(xí)的分布式 embedding 算法(嵌入算法)。Embedding 算法是一系列算法的統(tǒng)稱,該類算法能夠?qū)υ紨?shù)據(jù)進(jìn)行變換,并挖掘其中的潛在關(guān)聯(lián)。Embedding 算法處理后的數(shù)據(jù)由于信息漏損較少,相對(duì)標(biāo)簽數(shù)據(jù)有更好的建模效果,被廣泛用于推薦系統(tǒng)、自然語言處理等領(lǐng)域。
TalkingData 將該類算法應(yīng)用到數(shù)據(jù)安全輸出領(lǐng)域,使得原始數(shù)據(jù)在經(jīng)過變換后,能夠以不具備可識(shí)別性的方式輸出,而數(shù)據(jù)獲取方無法從中提取到與個(gè)人身份相關(guān)的敏感信息,也就實(shí)現(xiàn)了對(duì)隱私數(shù)據(jù)的匿名化保護(hù)。
基于保護(hù)用戶隱私、保障數(shù)據(jù)輸出安全性以及提升大數(shù)據(jù)輸出處理速度的考量,構(gòu)建了 TalkingData System 平臺(tái)(以下簡(jiǎn)稱 TDS)。TDS 平臺(tái)的底層基于 Spark 和 Hadoop 生態(tài)搭載了 embedding 算法,對(duì)原始數(shù)據(jù)進(jìn)行計(jì)算和處理,再將結(jié)果通過前端平臺(tái)頁面輸出給企業(yè)用戶,目前已經(jīng)在金融、零售、互聯(lián)網(wǎng)、廣告等行業(yè)中得到應(yīng)用。
借助 TDS 平臺(tái),企業(yè)可以將內(nèi)部來自垂直領(lǐng)域的第一方數(shù)據(jù),比如用戶群體的活躍、消費(fèi)、人口屬性標(biāo)簽等,與 TalkingData 的第三方數(shù)據(jù)進(jìn)行融合,豐富企業(yè)的自有模型特征維度。理論上,不需要業(yè)務(wù)解釋或識(shí)別的預(yù)測(cè)模型均可使用本方法輸出的數(shù)據(jù)。
算法方案詳解
本算法具有通用性,可以應(yīng)用于任何能變換為標(biāo)準(zhǔn)格式的原始數(shù)據(jù)輸出。下面通過一個(gè)示例詳解說明處理過程:
1,TDS 平臺(tái)的使用方上傳了一批設(shè)備 ID(設(shè)備標(biāo)識(shí)),通過 ID 匹配,得到對(duì)應(yīng)的 TDID(即 TalkingData 自有的加密標(biāo)識(shí)符)。
2,使用 TDID 作為索引,提取原始數(shù)據(jù)。假設(shè)有 M 個(gè) TDID,TDID 可以看作每一臺(tái)智能移動(dòng)設(shè)備的虛擬唯一編號(hào),則提取后的原始數(shù)據(jù)共有 M 行,每行對(duì)應(yīng)一個(gè)設(shè)備的屬性信息。假設(shè)屬性個(gè)數(shù)為 N,每個(gè)設(shè)備的每個(gè)屬性值為 1 或 0,代表一個(gè)設(shè)備具有或不具有某個(gè)屬性。將該原始數(shù)據(jù)變換為 M*N 的稀疏矩陣,每行對(duì)應(yīng)一個(gè)設(shè)備,每列對(duì)應(yīng)一個(gè)屬性。例如第三行第五列為 0,則表示第三個(gè)設(shè)備不具有第五列對(duì)應(yīng)的屬性。
稀疏矩陣相對(duì)普通矩陣來比,能夠極大的節(jié)省存儲(chǔ)空間。構(gòu)造稀疏矩陣的方法可以理解為以下步驟:
(1)創(chuàng)建一個(gè) M*N 的矩陣,將其中的值全部填充為零。
(2)逐行掃描,如果一個(gè)設(shè)備具有某個(gè)屬性,就將該處的值替換為 1,直到掃描完成。
(3)記錄哪些行和哪些列的數(shù)據(jù)為 1,存儲(chǔ)這些信息。存儲(chǔ)下來的這些信息,實(shí)際上就是一個(gè)系數(shù)矩陣。
3,通過嵌入模型對(duì)標(biāo)準(zhǔn)格式的原始數(shù)據(jù)進(jìn)行表征學(xué)習(xí)。實(shí)際上就是對(duì)輸入的原始矩陣進(jìn)行分解。嵌入模型可以使用的算法很多,此處以奇異值分解 SVD(Singular Value Decomposition)算法為例進(jìn)行介紹。
提到 SVD,就不得不提到與其相關(guān)的概念——PCA(Principal Components Analysis),即主成分分析,又被稱為特征值分解。關(guān)于 PCA 方法,大家的普遍聯(lián)想是降維 。簡(jiǎn)單來說,PCA 所做的就是在原始空間中順序地找一組相互正交的坐標(biāo)軸,第一個(gè)軸是使得方差最大的,第二個(gè)軸是在與第一個(gè)軸正交的平面中使得方差最大的,第三個(gè)軸是在與第 1、2 個(gè)軸正交的平面中方差最大的。這樣,假設(shè)在 N 維空間中,我們可以找到 N 個(gè)這樣的坐標(biāo)軸,我們?nèi)∏?r 個(gè)去近似這個(gè)空間,這樣就從一個(gè) N 維的空間壓縮到 r 維的空間了,而我們選擇的 r 值對(duì)空間的壓縮要能使數(shù)據(jù)的損失最小。
PCA 從原始數(shù)據(jù)中挑選特征明顯的、比較重要的信息保留下來,這樣一來問題就在于如何用比原來少的維度去盡可能刻畫原來的數(shù)據(jù)。同時(shí),PCA 也有很多的局限,比如說變換的矩陣必須是方陣,而 SVD 算法能夠避免這一局限。
SVD 算法,能夠?qū)⒁粋€(gè)矩陣分解為三個(gè)子矩陣(三個(gè)子矩陣相乘可以還原得到原始矩陣)。我們將這三個(gè)矩陣稱為 U、Sigma 及 V,其中 Sigma 矩陣為奇異值矩陣,只有對(duì)角線處有值,其余均為 0。
案例詳解 | 基于Embedding的特征安全計(jì)算
假設(shè)原始矩陣是 10,000 行 1,000 列,那么分解后即可得到如下三個(gè)子矩陣:
U 矩陣為 10,000*10,000
Sigma 矩陣為 10,000*1,000(除了對(duì)角線的元素都是
0,對(duì)角線上的元素稱為奇異值)
V(^)T矩陣(V 的轉(zhuǎn)置)為 1,000*1,000
實(shí)際應(yīng)用過程中,我們只保留 U 矩陣的前 512 列,于是三個(gè)矩陣的維度就變成了:10,000*512,512*512,512*1,000。為什么是保留 512 列呢?原因是奇異值在矩陣Σ中是從大到小排列,而且奇異值的減小特別快,在很多情況下,前 10% 甚至 1% 的奇異值之和,就占了全部奇異值之和的 99% 以上了。根據(jù)我們的多次實(shí)驗(yàn),512 列已經(jīng)能夠很好的保留奇異值的信息。
4,矩陣分解得到三個(gè)子矩陣后,將 U 和 Sigma 相乘,得到輸出矩陣。輸出矩陣的維度為 10,000*512??梢钥吹剑敵鼍仃嚺c輸入矩陣有著相同的行數(shù),每一行仍舊代表一個(gè)設(shè)備。但是輸出矩陣的列數(shù)變?yōu)榱?12,與原始矩陣中每一列是一個(gè)屬性不同,此時(shí)的輸出矩陣中每一列對(duì)應(yīng)一個(gè)特征。該特征不具備可解釋性和可識(shí)別性,這也就保證了輸出數(shù)據(jù)不會(huì)泄露個(gè)人隱私。
5,將輸出矩陣直接輸出,TDS 平臺(tái)的使用方可以通過數(shù)據(jù)接口進(jìn)行調(diào)用。因?yàn)槠脚_(tái)使用方無法獲得 V 矩陣,故而無法還原得到原始矩陣,也就無法還原出任何與個(gè)人相關(guān)的原始屬性信息。
輸出時(shí),需要將所有的數(shù)據(jù)先整理成步驟 2 中的標(biāo)準(zhǔn)輸入格式,然后拼接成一個(gè)輸入矩陣。之后的步驟與上述示例中相同。
效果
對(duì)于 Embedding 算法在數(shù)據(jù)安全輸出的實(shí)際表現(xiàn),TalkingData 做了很多相關(guān)實(shí)驗(yàn),也在多個(gè)實(shí)際項(xiàng)目中進(jìn)行了驗(yàn)證。以下用兩個(gè)真實(shí)案例進(jìn)行說明:
案例一:性別標(biāo)簽預(yù)測(cè)效果提升
性別標(biāo)簽是基于設(shè)備信息通過機(jī)器學(xué)習(xí)模型預(yù)測(cè)打分得出的。在過往的建模過程中,算法人員往往會(huì)對(duì)原始信息進(jìn)行一定的處理,比如將非結(jié)構(gòu)性的數(shù)據(jù)處理為結(jié)構(gòu)性的統(tǒng)計(jì)數(shù)值,或者將其他標(biāo)簽作為特征輸入到模型中。但是,這些特征工程方法都會(huì)產(chǎn)生一定的信息漏損或者誤差引入。
而 Embedding 處理后的數(shù)據(jù)相比人工的特征篩選,由于信息漏損較少,理論上會(huì)取得更好的建模效果。從以下兩圖可以看出,基于相同原始數(shù)據(jù),使用 Embedding 模型的預(yù)測(cè)效果比原始性別預(yù)測(cè)模型提升 (0.71 - 0.63)/0.63 = 13.7%。
案例二:某金融企業(yè)的風(fēng)控模型預(yù)測(cè)效果提升
在與很多企業(yè)的合作中,會(huì)將 TalkingData 的人口屬性標(biāo)簽和應(yīng)用興趣標(biāo)簽作為第三方數(shù)據(jù)引入。在與某金融企業(yè)的合作中,TalkingData 將數(shù)據(jù)通過 TDS 輸出給該企業(yè)并應(yīng)用在風(fēng)控模型中。
在相同的假陽率(False Positive Rate)下,企業(yè)原有算法的生產(chǎn)準(zhǔn)確率為 0.42,而加入 Embedding 算法輸出的數(shù)據(jù)后,經(jīng)過優(yōu)化的生產(chǎn)準(zhǔn)確率達(dá)到 0.52,提升 25%。在風(fēng)控領(lǐng)域中,25% 的提升能夠幫助企業(yè)避免很大的經(jīng)濟(jì)損失。
關(guān)于其他 Embedding 方法的思考
Embedding 方法被廣泛應(yīng)用于自然語言處理領(lǐng)域,也就是使用數(shù)學(xué)語言表示一篇文本。雖然上文提到的 SVD 算法的有效性在實(shí)際模型計(jì)算中被驗(yàn)證了,但是在文本特征表示方面仍有缺陷。
首先,它是一個(gè)詞袋模型(BOW,bag of words),不考慮詞與詞之間的順序,而在實(shí)際文本中,詞語的順序也非常重要,而且每個(gè)詞在句子中的重要性各不相同;其次,它假設(shè)詞與詞之間相互獨(dú)立,但在大多數(shù)情況下詞與詞是相互影響的,這也是為什么我們?cè)谧?ldquo;閱讀理解”的時(shí)候經(jīng)常要聯(lián)系上下文的原因。
如今 Embedding 領(lǐng)域早已向深度學(xué)習(xí)的方向衍化,大致可以分為以下四種常見應(yīng)用:
不依賴文本語法和語序的詞袋模型:one-hot、tf-idf、textrank 等;
主題模型:LSA、pLSA、LDA;
基于詞向量的固定表征:word2vec、fastText、glove
基于詞向量的動(dòng)態(tài)表征:elmo、GPT、bert
其中,Word2vec 是獲得工業(yè)界廣泛應(yīng)用的算法之一。提到 Word2vec 就不得不引入“詞向量”的概念。NLP 領(lǐng)域中,最細(xì)粒度的是詞語,詞語構(gòu)成句子,句子再組成段落、篇章、文檔。如何用數(shù)學(xué)語言表示每一個(gè)詞語,成為研究詞與詞之間關(guān)系的關(guān)鍵。Word2vec 正是來源于這個(gè)思想,可以把它看作是簡(jiǎn)單化的神經(jīng)網(wǎng)絡(luò)模型,但是它的最終目的,不僅僅是用數(shù)值表示文本符號(hào),還有模型訓(xùn)練完后的副產(chǎn)物——模型參數(shù)(這里特指神經(jīng)網(wǎng)絡(luò)的權(quán)重)。該模型參數(shù)將作為輸入詞語的某種向量化的表示,這個(gè)向量便稱為——詞向量。
舉例子說明如何通過 Word2vec 尋找相近詞:
結(jié)合 TalkingData 應(yīng)用 Embedding 的實(shí)際場(chǎng)景,與詞向量的最大區(qū)別就是被表示的特征之間沒有上下文的聯(lián)系。TalkingData 以分析移動(dòng)設(shè)備行為數(shù)據(jù)為主,對(duì)大多數(shù)設(shè)備屬性來說,打亂排列的順序?qū)τ趯?shí)際意義來說沒有任何影響,但是一個(gè)句子里面的詞語是不能被打亂順序排列的,句式結(jié)構(gòu)對(duì)于詞向量表示來說是非常重要的。基于實(shí)際業(yè)務(wù)場(chǎng)景的考量,我們沒有選擇用 Word2vec 或更復(fù)雜的 Embedding 算法來轉(zhuǎn)換原始數(shù)據(jù)。
雖然,我們保證了原始數(shù)據(jù)輸出的安全性,但是伴隨而來的是數(shù)據(jù)可解釋性較弱的問題。由于 Embedding 算法將原始數(shù)據(jù)轉(zhuǎn)化為了另一個(gè)空間的數(shù)值向量,因此無法人為理解或者賦予輸出矩陣的每一列的實(shí)際含義。
假設(shè)建模人員構(gòu)建一個(gè)“工資預(yù)測(cè)回歸模型”,采集到的樣本特征包括“性別、年齡、學(xué)歷、工作城市、工作年限…”,分別對(duì)應(yīng)數(shù)據(jù)集中的每一列,那么他們可以容易的計(jì)算得到每個(gè)特征的權(quán)重,并且能夠比較哪個(gè)特征的權(quán)重較高,即特征重要性的排序,得到諸如“工作年限對(duì)工資高低的影響比性別更重要”這樣的結(jié)論。
但是在使用 TDS 平臺(tái)輸出的數(shù)據(jù)構(gòu)建模型的時(shí)候,我們沒辦法向上述模型一樣分析比較每一列特征對(duì)模型的影響,只能得出增加 Embedding 特征對(duì)于模型效果是否有提升這樣粒度較粗的結(jié)論。顯然,如果建模人員對(duì)于模型的解釋性有特別嚴(yán)苛的需求的話,TDS 平臺(tái)暫時(shí)沒有辦法提供解決方案。