数据分类分级-结构化数据识别与分类的算法实践

简介: 本文分享了用九智汇数据分类分级产品开发过程中,对数据识别和数据分类中涉及的算法进行抽象、融合,以形成标准化产品所做的努力和积累的经验。当然,算法只是分类分级产品的一小部分,整个产品设计,工程实现,也是支撑标准化产品的关键,但是限于作者水平有限,本文只讨论算法相关的话题,欢迎大家关注公众号以了解更多信息。

本文分享了用九智汇数据分类分级产品开发过程中,对数据识别和数据分类中涉及的算法进行抽象、融合,以形成标准化产品所做的努力和积累的经验。当然,算法只是分类分级产品的一小部分,整个产品设计,工程实现,也是支撑标准化产品的关键,但是限于作者水平有限,本文只讨论算法相关的话题,欢迎大家关注公众号以了解更多信息。

背景

       数据分类是数据安全和数据合规体系建设的基石。无论是数据安全策略制定、数据合规性评估,还是事件响应处置和员工数据安全意识引导,都离不开对数据进行有效的标记和分类。通常所说的数据分类其实包括两部分事情,首先是数据识别,即需要知道数据是什么,如姓名、手机号、证券代码、金额、药品名称等;然后才是结合业务进行的分类,例如,进一步将姓名区分为用户信息,员工信息,或公开的企业信息等,药品名称区分为公开的药物说明信息、医嘱信息、个人疾病信息等。为了进行区分,我们把数据识别的结果称为标识,而数据分类的结果才称为类别。

       数据识别的方法主要有三种方式:

       1、正则匹配,适用于固定格式的数据,识别数据内容,比如手机号,邮箱地址等;

       2、文本分类模型,适用于简短的自然语言构成的数据,比如姓名,产品名称等;

       3、针对元数据的匹配,如数据库的表名、字段名、字段备注等;

       这几种方式做好了都能达到不错的效果,也各有优缺点。正则匹配能以很高的召回率应对各类ID或code,但是准确率存在一些问题。通过一定优化后,文本分类模型准召能达到不错的平衡,但是通常运行所需成本也更高。而如果企业的数据治理水平较高,且相关人员已经对数据有清楚的认识,针对元数据进行匹配是效率非常高的手段。

       数据分类则几乎只有通过元数据一种手段:基于企业的数据模型,以及表名、列名中出现的一些关键词等,判断数据来自于什么业务系统。为了增加分类的准确率,同一张表是其他列的数据识别结果,也是一个有用的信息。但总的说来,技术可选择的方案不算太多。

我们的实践

1、统一的数据识别框架

       如上文所说,已有的数据识别方案需要根据数据的情况,在三种方法选择其一,这在设计上就不够优雅,而且我们很难融合不同信息以提高准确率和召回率。因此,我们不得不将三种做法进行抽象和融合,以形成统一的方案。

       在用九智汇的方案中,正则匹配和针对元数据的方法的结果将会被视为特征,并且我们会通过‘特征工程’来进一步的加工、处理这些特征;即使对于姓名、地址等原本使用文本分类的方法进行识别的数据,我们也暂时放弃了昂贵的端到端的模型(如LSTM),而是提取特征和开发传统机器学习模型,如逻辑回归、随机森林、支持向量机。做出这些调整的主要观察在于,我们是针对数据库某列进行数据识别,而非单条数据,一列数据意味着可以抽样很多条样本,这些样本中不少都是属于同一标识的数据,因此我们没必要对每一条数据都做出非常准确的判断,而是更多考虑性能的问题。我们选择相信概率论,只要我们抽样了足够多(例如300条),大数定理会保证结果足够准确。

       我们还需要处理同一列存储了多种标识的情况,如证件列中可能存储了身份证号和护照号,投资人可能存储了个人的姓名和机构的公司名称,因此我们首先会使用一个较为‘宽泛’的正则表达式对采样数据进行‘过滤’。当列中有足够的样本通过率某标识的过滤条件,那么就会进入到该标识的识别逻辑——特征计算和模型预测。使用宽泛的正则表达式进行过滤的一个更大好处在于:很接近的负样本也会参与到特征计算中,这对于开发出更加鲁棒的模型,从而提升识别的准确率,有非常大的帮助。最终,我们为每个数据标识建立一个模型,来判别某个字段是否属于该标识。

       我们可以看一个简化后的例子,来理解用九智汇的数据识别是如何工作的。(需要注意的是,这只是一个方便展示的例子,并非真实的识别逻辑,在落地时,我们还考虑了各种复杂的情况)

       例子:识别某列数据中存储了姓名

       1)采样的某列数据中,如果2-4个汉字组成的字符串达到了一定比例,就会进入姓名的识别逻辑;

       2)以下列举了姓名识别使用的几个特征:

       a.该列采样的符合过滤条件的数据中,字符串第一个字属于百家姓的比例(百家姓覆盖了全国83%+的人口);

       b.该列采样的符合过滤条件的数据中,2-3个汉字的字符串占比;

       c.该列采样的符合过滤条件的数据中,包含常见top100取名用字的字符串占比;

       d.该列采样的符合过滤条件的数据中,包含不常用,但是取名较常见汉字top100的字符串占比;

       e.该列采样的符合过滤条件的数据中,不重复的字符串的数量与总数量的比值;

       f.列名中是否包含一些关键词,如name、user、customer等;

       这些特征计算可以通过正则匹配、求平均值完成等,在我们实际落地中,这几类特征抽取算子时使用频率最高的。

      3)这些特征的指将作为姓名识别模型的输入,最终产出姓名的分数,分数越高,该列为姓名的置信度也越高;


       在工程侧,我们对正则匹配进行了优化,无论正则表达式的数量是多少,我们也做到了只分析一遍字符串。而整个特征抽取和模型预测,用九智汇则凭借核心团队成员们此前在某大厂设计和开发实时风控平台的经验,通过合理的任务调度、内置规则引擎、生成计算图等方式,极大的提升了执行效率。我们做到了设置100个标识识别逻辑,只使用一台4核8G的普通机器的情况下,对触发识别逻辑的列,平均在200-300ms 内完成识别。

2、理解数据库的命名方式

       上文中提到我们在数据识别中,暂时放弃了端到端的模型(即深度学习),主要是出于运行效率的考虑。如果一定要在数据识别中使用深度学习的话,除了代替我们目前使用的传统机器学习模型外,将采样的数据输入直接作为输入,得到嵌入(embedding), 作为一组特征使用也是不错的方式。当然,出于实际运行效率的考虑,我们并没有这么做。但是在数据分类中,我们则有了使用这种高成本方式的理由:数据库中数据会变,但是表名、列名、表备注、列备注、库名等是几乎不会经常变化的,因此如果我们使用元数据信息的话,即使成本高,也基本只是预测一次的投入。

       不同于备注本来就是写给人看的内容,数据库中表、字段的命名方式则通常不说‘人话’,带有很强的个人风格和业务熟悉。虽然如此,只要不是刻意隐藏,或者实现过于糟糕,也有很强的规律性,对于人类,稍微熟悉之后一眼就能看懂其含义。那AI有没有可能也能‘看懂’,而不是只去简单匹配一些关键词呢?

       当然,直接训练一个是用表名、列名的进行分类模型是不现实的,因为如果预测本身也是一次性的,完成了数据标注就几乎完成了这整件事情,在标注了足够多的数据之后,再开发模型就是画蛇添足。

       因此控制所需的有标注数据的数量是最重要的一步。由于涉及商业机密,这里只介绍基本思想:我们将表名、列名,去与备注进行对齐,从而获取一个性能较好的基础模型,用于提取表名、列名的特征,这样只需少量样本即可进行数据分类模型的训练。利用这种方式,我们减少了对训练需要标注的数据量,并且能够在落地时对模型进行微调,以适配企业实际的数据模型。

结语

       在数据分类分级领域,用九智汇致力于推出标准化产品,以最低的成本来保障数据分类的效果,并且通过与律师合作,让更多企业可以在负担得起的情况下进行数据分类,从而推进数据安全与数据合规的建设与落实。


       特别声明:本文中介绍的结构化敏感数据识别、数据库命名方式理解方法均已申请专利保护,分类分级平台已经申请软著。



阅读原文:数据分类分级-结构化数据识别与分类的算法实践

相关文章
|
1月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
60 4
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
1月前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
2月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
93 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1月前
|
机器学习/深度学习 人工智能 Rust
MindSpore QuickStart——LSTM算法实践学习
MindSpore QuickStart——LSTM算法实践学习
40 2
|
1月前
|
存储 缓存 分布式计算
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
这篇文章是关于数据结构与算法的学习指南,涵盖了数据结构的分类、数据结构与算法的关系、实际编程中遇到的问题以及几个经典的算法面试题。
30 0
数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
1月前
|
机器学习/深度学习 算法 数据建模
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践
30 0
|
1月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
22 0
下一篇
无影云桌面