写点什么

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别

  • 2020-03-22
  • 本文字数:2132 字

    阅读完需:约 7 分钟

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别

01 数据探索性分析

首先,我们对接入整个数据仓库贴源层中的所有表所有字段的敏感类型 (也就是模型的目标变量 Y)进行了统计,其中敏感类型的字段占全部字段 2% 左右,主要的敏感信息类型包括:姓名,身份证号,手机号,固定电话号,银行卡号,邮箱等。可以看出这一个样本极度不均衡的问题。


其次,我们对于所能获取到的用于判断一个字段敏感类型的信息 (也就是模型的自变量 X)统计如下:



对于上表中的原始特征,通过统计分析确定相应的数据预处理方法和参数,从而衍生出更多的特征。例如,对于数据库名称 (db_name),我们衍生出数据库名称长度 (db_name_len)特征,并对其在是否为敏感字段上的分布统计如下:



从上图中不难看出,数据库名称长度对于字段是否为敏感具有一定的区分性。从字段类型 (column_type) 角度分析,不同字段类型的敏感和非敏感字段占比如下:



最终,通过数据预处理,特征衍生等多种手段得到模型最终的输入特征。

02 Wide&Deep 网络和 TextCNN

Wide&Deep 网络

Wide & Deep 网络是由 Google 提出的一种用于推荐系统的深度神经网络模型 [2]。整个网络框架如下图所示:



模型 Wide Models 部分的输入为数值型和利用 One-Hot 编码的分类型特征,Deep Models 部分通过学习得到了分类特征的 Embedding 编码。对两部分进行合并得到最终的 Wide & Deep 网络,模型预测的条件概率为:



其中,Y 为预测标签,为 Sigmoid 函数,为原始特征的 X 的特征组合,为偏置项,为 Wide 部分的权重,为应用在 Deep 部分最后一层的权重。原文中 Wide 部分采用 FTRL 进行优化,Deep 部分采用 AdaGrad 进行优化。


敏感字段识别问题的输入中包含了大量的数值型特征和分类型特征,因此可以采用 Wide & Deep 网络进行处理。

TextCNN

TextCNN 是由 Kim 等人提出的一种利用卷积神经网络对文本进行分类的深度神经网络模型[3]。整个网络框架如下图所示:



在卷积层中,一个特征由一个窗口内的词生成:



其中, h 为窗口的大小,为词向量表示,为卷积核参数,为偏置项, k 为词向量的维度。


敏感字段识别问题的输入中包含了大量的文本特征,因此可以采用 TextCNN 网络进行处理。

03 敏感字段识别模型

对于敏感字段识别问题,从问题和数据的特点出发,对原始的 Wide & Deep 模型和 TextCNN 做出了如下改进:

Wide&Deep 网络改进

原始 Wide & Deep 网络的深度模型的输入均为分类型特征,但在敏感字段识别问题还存在大量的文本特征。考虑到 CNN 在文本分类上具有较好的效果,因此对于文本特征在通过 Embedding 层后利用 CNN 网络对其进行处理,其它的分类型特征在通过 Embedding 层后仍使用全连接网络进行处理。改进后的网络框架如下图所示:


TextCNN 改进

原始的 TextCNN 解决的是英文文本的分类问题,对于敏感字段识别问题,文本特征中存在大量的汉语信息。不同于英文,汉语没有天然的分隔符,传统的做法是采用分词技术对汉语文本进行预处理。但是这样模型的效果就会受制于分词效果的好坏,同时计算效率也会有一定的下降,因此我们选择不分词,直接采用字向量处理文本。


同时需要注意的是 CNN 会隐含地利用到文本的位置信息,因此对于不同的文本特征组合成一个定长的文本时,需先对每个文本特征进行截取和补全,再将其进行拼接得到最终的定长文本。改进后的网络框架如下图所示:


模型训练

在数据探索性分析阶段,我们指出了数据的不平衡性。因此在处理数据不平衡问题时可以采用如下两个方法:


  1. 数据的过采样和欠采样。即对较少类型的数据多采样一些,或者对于较多类型的数据少采样一些。

  2. 代价敏感学习。即在损失函数中赋予较少类型的样本更大的损失值,增加其在一批数据中的重要程度。


对于训练数据的生成,由于字段数量是有限的,但字段内容值 (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).


2020-03-22 21:042183

评论

发布
暂无评论
发现更多内容

云原生(九) | Devops篇之Jenkins安装与实战

Lansonli

云原生 7月月更

git clone出错--必看贴

坚果

git Mac git 学习 7月月更

博物馆数字化——数字藏品app开发

开源直播系统源码

区块链数字藏品 数字藏品软件开发

TableWidget 排序的多种方式

小肉球

qt 7月月更

一年时间过去了,LiveData真的被Flow代替了吗? LiveData会被废弃吗?

编程的平行世界

android android jetpack

Qt | Qt的项目文件.pro文件详解

YOLO.

qt 7月月更

ES6 类聊 JavaScript 设计模式之结构型模式

devpoint

JavaScript 设计模式 桥接模式 适配器模式 7月月更

正则什么的,你让我写,我会难受,你让我用,真香!

掘金安东尼

前端 正则 7月月更

mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法

No Silver Bullet

MySQL 数据库 7月月更 批量更新

LeetCode-94. 二叉树的中序遍历(java)

bug菌

Leet Code 7月月更

行业分析| 物流对讲

anyRTC开发者

人工智能 音视频 物流 调度 快对讲

源启数字化:既有模式,还是开源创新?|砺夏行动

OneFlow

活动

阿里云技术专家杨泽强:弹性计算云上可观测能力构建

阿里云弹性计算

DevOps 可观测性 CI/CD metrics

Wallys/industrial Wireless AP/IPQ6018,IPQ4019,IPQ4029,802.11ax,802.11ac,outdoor ap

wallys-wifi6

wallys/industrial Wireless AP/industrial Wireless AP

wallys-wifi6

IPQ4019/IPQ4029

Qt|控制QScrollBar显示位置

中国好公民st

qt 7月月更

我,AI博士生,在线众筹研究主题

OneFlow

研究

P9力荐!阿里巴巴最新出品776页JDK源码+并发核心原理解析小册

程序员小毕

Java 程序员 面试 程序人生 jdk源码

常用 CSS 代码片段集合,建议收藏

南城FE

CSS 前端 CSS语法 7月月更

SAP ABAP 解析 excel 文件的函数 TEXT_CONVERT_XLS_TO_SAP 单步执行分析

汪子熙

Cloud SAP abap Netweaver 7月月更

即刻报名|如何降低云上数据分析成本?

Kyligence

数据分析 智能多维数据库

【LeetCode】使数组可以被整除的最少删除次数Java题解

Albert

LeetCode 7月月更

STM32+ENC28J60+UIP协议栈实现WEB服务器示例

DS小龙哥

7月月更

Java RMI

沃德

Java 程序员 7月月更

wallys/industrial Wireless AP/IPQ4019 IPQ4029 ,802.11ac /VSSupport IPQ6018 IPQ4019 IPQ4029 802.11ax 802.11ac

wallys-wifi6

java零基础入门-java8新特性(中篇)

喵手

Java 7月月更

有一说一,要搞明白优惠券架构是如何演化的,只需10张图!

程序员小毕

Java 编程 程序员 架构 面试

云原生 SIG 直播:关于 cni 与 hybridnet 核心技术分享 | 第 35 期

OpenAnolis小助手

开源 云原生 直播 sig 龙蜥大讲堂

基于 Wide & Deep 网络和 TextCNN 的敏感字段识别_文化 & 方法_京东数字科技产业AI中心_InfoQ精选文章