用姓名字段统计人数_基于 Wide amp; Deep 网络和 TextCNN 的敏感字段识别
數據治理 (Data Governance) [1]作為一種數據管理的重要一環,主要目的在于保證數據在整個生命周期內的高質量性。數據治理的核心包括:數據的可用性 (Availability),易用性 (Usability),一致性 (Consistency),完整性 (Integrity) 和安全性 (Security)。數據的安全性作為關鍵的一項,旨在保護數據中敏感和隱私數據,因此對于數據中敏感和隱私信息的識別至關重要。利用機器學習算法對敏感字段識別不僅能夠提高識別的準確率,同時也能極大的提高識別的效率,從而幫助數據倉庫運營人員高效地完成敏感數據的存儲策略制定和數據落庫。
本文實現了一種基于 Wide & Deep 網絡和 TextCNN 的敏感字段識別算法,主要探究:
- 數據探索性分析
- Wide & Deep 網絡和 TextCNN
- 敏感字段識別模型
數據探索性分析
首先,我們對接入整個數據倉庫貼源層中的所有表所有字段的敏感類型 (也就是模型的目標變量Y)進行了統計,其中敏感類型的字段占全部字段 2% 左右,主要的敏感信息類型包括:姓名,身份證號,手機號,固定電話號,銀行卡號,郵箱等。可以看出這一個樣本極度不均衡的問題。
其次,我們對于所能獲取到的用于判斷一個字段敏感類型的信息 (也就是模型的自變量X)統計如下:
對于上表中的原始特征,通過統計分析確定相應的數據預處理方法和參數,從而衍生出更多的特征。例如,對于數據庫名稱 (db_name),我們衍生出數據庫名稱長度 (db_name_len)特征,并對其在是否為敏感字段上的分布統計如下:
從上圖中不難看出,數據庫名稱長度對于字段是否為敏感具有一定的區分性。從字段類型 (column_type) 角度分析,不同字段類型的敏感和非敏感字段占比如下:
最終,通過數據預處理,特征衍生等多種手段得到模型最終的輸入特征。
Wide&Deep網絡和TextCNN
Wide & Deep 網絡是由 Google 提出的一種用于推薦系統的深度神經網絡模型 [2]。整個網絡框架如下圖所示:
模型 Wide Models 部分的輸入為數值型和利用 One-Hot 編碼的分類型特征,Deep Models 部分通過學習得到了分類特征的Embedding 編碼。對兩部分進行合并得到最終的 Wide & Deep 網絡,模型預測的條件概率為:
TextCNN是由 Kim 等人提出的一種利用卷積神經網絡對文本進行分類的深度神經網絡模型[3]。整個網絡框架如下圖所示:
敏感字段識別問題的輸入中包含了大量的文本特征,因此可以采用 TextCNN 網絡進行處理。
敏感字段識別模型
對于敏感字段識別問題,從問題和數據的特點出發,對原始的 Wide & Deep 模型和 TextCNN 做出了如下改進:
Wide&Deep網絡改進
原始 Wide & Deep 網絡的深度模型的輸入均為分類型特征,但在敏感字段識別問題還存在大量的文本特征。考慮到 CNN 在文本分類上具有較好的效果,因此對于文本特征在通過 Embedding 層后利用 CNN 網絡對其進行處理,其它的分類型特征在通過 Embedding 層后仍使用全連接網絡進行處理。改進后的網絡框架如下圖所示:
原始的 TextCNN 解決的是英文文本的分類問題,對于敏感字段識別問題,文本特征中存在大量的漢語信息。不同于英文,漢語沒有天然的分隔符,傳統的做法是采用分詞技術對漢語文本進行預處理。但是這樣模型的效果就會受制于分詞效果的好壞,同時計算效率也會有一定的下降,因此我們選擇不分詞,直接采用字向量處理文本。
同時需要注意的是 CNN 會隱含地利用到文本的位置信息,因此對于不同的文本特征組合成一個定長的文本時,需先對每個文本特征進行截取和補全,再將其進行拼接得到最終的定長文本。改進后的網絡框架如下圖所示:
模型訓練
在數據探索性分析階段,我們指出了數據的不平衡性。因此在處理數據不平衡問題時可以采用如下兩個方法:
對于訓練數據的生成,由于字段數量是有限的,但字段內容值 (column_value) 是大量的。因此我們以一個不為空的字段內容值搭配其他特征為一個訓練樣本。數據的劃分采用常用的模式:訓練集測試集劃分 7:3,訓練集內部訓練集驗證集劃分 8:2。
模型訓練的超參數采用常用的模式:
- Wide 部分 Dropout 比例:0.5
- Deep 部分 Dropout 比例:0.5
- Concat 部分 Dropout 比例:0.5
- Embedding 維度:128
- 優化器: Adam(lr=0.001, beta_1=0.9, beta_2=0.999)
- 訓練數據 Batch Size: 128
模型性能
敏感字段識別問題為一個多分類問題,訓練好的模型在測試集上的整體準確率為 93% 左右。但其在一些具體類型上的效果略有欠缺,通過具體的分析定位問題在于訓練數據中包含了一些標注錯誤的樣本,例如:敏感類型為“地址”,但該字段保存的卻不是地址類型的數據。
實施流程
模型的整個實施流程如下:
[1] https://en.wikipedia.org/wiki/Data_governance
[2] Cheng, H.-T., Koc, L., Harmsen, J., Shaked, T., Chandra, T.,Aradhye, H., … Shah, H. (2016). Wide & Deep Learning for RecommenderSystems. ArXiv:1606.07792 [Cs, Stat].
[3] Kim, Y. (2014). Convolutional Neural Networks for SentenceClassification. In Proceedings of the 2014 Conference on Empirical Methods inNatural Language Processing (EMNLP) (pp. 1746–1751).
文章來源:京東數科技術說總結
以上是生活随笔為你收集整理的用姓名字段统计人数_基于 Wide amp; Deep 网络和 TextCNN 的敏感字段识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 儿子变性想断绝父子关系!马斯克回应:“她
- 下一篇: 国产造车新势力第二家!小鹏汽车累计交付量