4、机器学习基础回顾:监督学习、无监督学习、半监督学习的基本概念,为何适用于敏感数据识别

聊敏感数据识别之前,咱先把机器学习的老底翻一翻。很多人一上来就扔算法,结果场景都选错了。我个人习惯先搞清楚数据标记情况,再挑学习范式。说白了,这个选择题做对了,后面事半功倍。

4.1 监督学习 —— 有老师带着学

监督学习,就是拿一堆已经标好「是敏感 / 不是敏感」的样本去训练模型。比如给你10万条用户数据,每条都人工标注了「含身份证号 / 不含身份证号」。模型学的是特征到标签的映射。

核心套路:

  • 输入:特征向量(比如文本长度、是否含数字、特殊字符比例)
  • 输出:离散标签(分类)或连续值(回归)
  • 常用算法:逻辑回归、决策树、随机森林、支持向量机、神经网络

在敏感数据识别里怎么用?

识别已知敏感字段,比如手机号、邮箱、身份证号。我曾在做企业邮件审计时,用随机森林去判断一段文本是否包含银行卡号。一开始特征只用了长度和数字占比,准确率只有82%。后来加了「Luhn算法校验结果」这个特征,直接飙到97%。嗯,特征工程永远是监督学习的命门。

Tips: 如果项目里已经有了人工标注的历史数据,别犹豫,上监督学习。你唯一要做的就是花钱找人标更多数据——或者,像我后来做的,用规则引擎生成伪标签,再人工抽检。
注意: 敏感数据的特点之一就是分布极度不平衡。100万条日志里可能有999,000条是正常文本,只有1000条包含敏感信息。这时候不做重采样或代价敏感学习,模型会直接学废——我曾经在召回率上吃过亏,全输出“非敏感”,准确率99.9%但毫无卵用。

4.2 无监督学习 —— 自己摸索规律

无监督学习,手里只有数据,没有标签。模型自己找结构。常用的是聚类和异常检测。你想想看,如果连什么数据是敏感的都说不清楚,那只能先让模型替你“看”哪些数据长得不一样。

核心套路:

  • 输入:无标签特征
  • 输出:簇标签或异常分数
  • 常用算法:K-Means、DBSCAN、孤立森林、自编码器

为什么敏感数据识别需要它?

因为很多敏感模式是你事先没想到的。比如内部代码泄露、自定义的用户ID格式。我记得有一次在银行项目里,规则引擎只匹配了18位身份证号,结果漏了一种员工工号——里面暗含了个税信息。后来用DBSCAN做了文本聚类,才发现有个簇全都是“EID-”开头的数据。如果没有无监督学习,这种未知风险压根不会浮出水面。

避坑指南: 我曾经用K-Means做敏感文本聚类,结果簇数量K设成10,出来的结果全是按长度分堆。根本原因——没用TF-IDF做向量化,直接用了词袋。后来换成Sentence-BERT embedding,聚类才真正抓到语义相似性。

异常检测在敏感数据识别里也特别实用。你想想,大部分的日志文本都是常规业务记录,一旦出现结构完全不同的内容(比如一段Base64编码的密码),孤立森林一揪一个准。我习惯用自编码器的重构误差作为异常得分,效果比统计方法稳定很多。

4.3 半监督学习 —— 用很少的标签撬动很多的数据

半监督学习,处于前面两者的中间地带。手头只有少量标记数据(比如几千条),但还有大量未标记数据(几百万条)。直接上监督学习?样本太少,过拟合;直接上无监督?你又可惜那几千条人工标注。半监督学习就在这种尴尬场景下上场。

常见套路:

  • 自训练(Self-training):先用小量标记数据训练一个弱分类器,再对未标记数据打上高置信度的伪标签,混入训练集,迭代
  • 协同训练(Co-training):用两个视图的特征训练两个分类器,互相给对方的最可靠预测做标记
  • 标签传播(Label Propagation):把数据看成图,标记数据作为种子,沿图扩散标签

在敏感数据识别里怎么用?

实话讲,这个场景特别常见。找安全专家去标注数据,成本极高的。我所经历的一个政府敏感文档分类项目,专家标了三天才出一千条。但我们有二十万份文档没标。最后用自训练+置信度阈值的方法,三轮迭代后模型F1从0.65升到了0.89。值得说的是,中间有一轮塞进了很多错误伪标签,导致震荡。调整策略是:只保留预测概率>0.95的样本,宁可吃不饱也别吃过毒。

警告: 半监督学习对初始标记数据质量极度敏感。如果那条种子标签标错了,后面扩散出去的都是错误。我建议开始前先做五轮交叉检验,挑出标注矛盾的数据让专家复核。别嫌麻烦——曾经一个同事没做这个步骤,最终模型把“正常地址”学成了“敏感位置”,直接引发了一次误报风暴。

4.4 三范式对比

维度 监督学习 无监督学习 半监督学习
标记数据 大量 无 少量
核心目标 分类/回归 聚类/异常检测 利用未标记数据提升精度
代表算法 RF, SVM, CNN K-Means, IF, AE Self-training, Label Propagation
敏感数据识别优势 已知敏感类型,高精度 发现未知敏感模式 标记稀缺时仍能训练
主要风险 过拟合、标签噪声 聚类结果难解释 伪标签噪声放大

4.5 为什么这三种范式都适合敏感数据识别?

敏感数据识别这个任务本身有四个特殊性质,恰恰跟三种范式的长处完美重合。

  • 数据天生是文本/结构化。 无论是个人信息还是商业机密,最终都编码成字符串。特征工程可做,嵌入可做——监督和半监督模型都能吃。
  • 模式多样且不断演变。 新的敏感字段格式每天出现(比如新的身份证号规则、加密后的令牌)。无监督学习的异常检测正好兜住这个尾巴。
  • 标签极度稀缺。 安全场景下标注风险高、成本高。这个痛点倒逼我们用半监督甚至纯无监督方案起步。
  • 误报/漏报代价不对等。 漏放一个身份证号可能造成合规罚款,而误报一个正常文本只是多花人工复核。所以很多时候需要结合多种范式做分级:先用无监督圈出可疑区域,再用监督模型精分类,中间补上半监督扩量——这个级联框架,我建议大部分团队都可以直接套用。
三种学习范式在敏感数据识别中的应用逻辑 敏感数据识别 分级检测 + 级联框架 监督学习 大量已标记样本 无监督学习 无标记,找异常/聚类 半监督学习 少量标记 + 大量未标记 常见应用 身份证、手机号、邮箱识别
规则+模型联合校验 常见应用 未知敏感模式发现
日志异常检测
隐私字段标注拓展

图4-1 展示了三种范式与敏感数据识别的协作关系:监督学习处理已知类型的高精度判定,无监督学习兜住未知模式的探索,半监督学习在标记稀缺时把数据价值放大。实际项目里,我把它们做成一条流水线——无监督模型先把所有新数据过一遍,打出异常分;异常分高的扔给监督模型细分;那些识别置信度不高的,再走半监督迭代补标。这个框架在我之后三个项目里反复用,都很稳。

好,这一章就聊到这儿。记住一句话:不要硬套范式,让数据的标签情况决定你的技术选型。下回我们再深入具体的特征提取和模型训练技巧。