3. 需求文档基础
做AI产品,说白了就是喂数据给模型吃。但数据从哪来、干不干净、标没标对、合不合法——这四个问题要是没想清楚,后面全白搭。我见过太多项目,模型在实验室跑得飞起,一上线就崩,十有八九是数据这关没把好。
今天咱们就聊聊数据需求分析。嗯,这部分我习惯把它拆成四个维度:来源、质量、标注、合规。一个一个来。
3.1 数据来源:别让模型吃错东西
数据来源决定了模型的天花板。你想想看,用二手数据训练出来的模型,上限就在那儿了。
我个人习惯把数据来源分成三类:
- 自有数据:公司内部积累的用户行为、交易记录、日志等。优点是可控,缺点是量可能不够。
- 公开数据集:像ImageNet、COCO、开源语料库。适合起步,但要注意版权和领域偏差。
- 第三方采购:数据标注公司、数据交易所。质量参差不齐,我踩过坑。
⚠️ 避坑指南
我曾经接手过一个NLP项目,团队用了某公开爬虫数据集做训练。结果模型上线后,对特定行业的专业术语识别率极低。后来一查,那个数据集里该行业的样本占比不到0.1%。所以啊,数据来源的领域覆盖度一定要提前评估。
我曾经接手过一个NLP项目,团队用了某公开爬虫数据集做训练。结果模型上线后,对特定行业的专业术语识别率极低。后来一查,那个数据集里该行业的样本占比不到0.1%。所以啊,数据来源的领域覆盖度一定要提前评估。
这里有个简单的评估表格,我每次做数据调研都会填一遍:
| 评估维度 | 自有数据 | 公开数据集 | 第三方采购 |
|---|---|---|---|
| 数据量级 | 通常有限 | 大但可能过时 | 可定制 |
| 领域匹配度 | 高 | 低 | 中 |
| 版权风险 | 低 | 中 | 需合同约定 |
| 获取成本 | 低(但采集成本高) | 免费 | 高 |
3.2 数据质量:垃圾进,垃圾出
这句话在AI圈都快被说烂了,但真能做到的团队不多。数据质量不是一句「我们清洗过了」就能交代的。
我一般从五个维度卡数据质量:
- 完整性:字段有没有空值?缺失率超过5%就要警惕。
- 一致性:同一字段的格式、单位、编码是否统一?比如日期有的是"2024-01-01",有的是"01/01/2024"。
- 准确性:数据是否反映真实情况?我遇到过传感器数据漂移,温度值凭空多了10度。
- 时效性:数据是否过时?用户画像用三年前的数据,预测结果能准才怪。
- 唯一性:有没有重复记录?重复样本会导致模型对某些特征过拟合。
💡 我的经验
做数据质量检查时,别光看统计指标。我习惯随机抽100条样本,肉眼过一遍。虽然土,但经常能发现自动化检查漏掉的问题。比如有一次,我发现某个分类字段里混入了HTML标签——清洗脚本没处理干净。
做数据质量检查时,别光看统计指标。我习惯随机抽100条样本,肉眼过一遍。虽然土,但经常能发现自动化检查漏掉的问题。比如有一次,我发现某个分类字段里混入了HTML标签——清洗脚本没处理干净。
数据质量检查的代码片段,我一般这样写:
import pandas as pd
def data_quality_report(df):
report = {}
report['total_rows'] = len(df)
report['missing_ratio'] = df.isnull().mean().to_dict()
report['duplicate_ratio'] = df.duplicated().mean()
report['dtype_check'] = df.dtypes.astype(str).to_dict()
return report
# 使用示例
df = pd.read_csv('training_data.csv')
report = data_quality_report(df)
print(report)
3.3 数据标注:人工还是自动?这是个问题
标注是AI产品里最容易被低估的环节。很多人觉得「不就是打标签嘛」,但做过的人都知道——标注质量直接决定模型效果的上限。
我经历过三种标注模式:
- 全人工标注:质量最高,但成本也最高。适合小规模、高精度场景,比如医疗影像。
- 半自动标注:先用规则或预训练模型打底,人工再修正。我比较推荐这种方式,性价比高。
- 主动学习:模型自己挑「最不确定」的样本让人工标。适合数据量大、标注预算有限的情况。
📌 小技巧
标注规范一定要写清楚。我曾经见过标注员把「背景中的行人」也标成了目标对象,导致模型学会了识别背景。规范里要明确:什么该标,什么不该标,边界怎么画。
标注规范一定要写清楚。我曾经见过标注员把「背景中的行人」也标成了目标对象,导致模型学会了识别背景。规范里要明确:什么该标,什么不该标,边界怎么画。
标注质量的评估,我常用这个公式:
# 标注一致性评估(Kappa系数)
from sklearn.metrics import cohen_kappa_score
# 假设两个标注员对100个样本的标注结果
annotator_a = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
annotator_b = [1, 0, 1, 0, 0, 1, 0, 0, 1, 1]
kappa = cohen_kappa_score(annotator_a, annotator_b)
print(f'标注一致性: {kappa:.2f}')
# 一般要求 kappa > 0.8
3.4 隐私合规:红线不能碰
这部分我多说两句。隐私合规不是法务部门的事,是产品经理和工程师的事。你想想看,数据一旦出事,轻则产品下架,重则吃官司。
国内主要看这几个法规:
- 《个人信息保护法》:处理个人信息必须告知目的、方式、范围,并取得同意。
- 《数据安全法》:重要数据要进行分级分类保护。
- 《网络安全法》:网络运营者不得泄露、篡改、毁损其收集的个人信息。
实操层面,我建议做好这四件事:
- 数据脱敏:身份证号、手机号、地址等敏感字段,训练前必须脱敏。可以用哈希、掩码或差分隐私。
- 最小化原则:只收集模型必需的数据。别贪多,多一个字段就多一分风险。
- 数据分级:把数据分成公开、内部、敏感、绝密四级,不同级别不同管控策略。
- 审计追踪:谁在什么时间访问了什么数据,都要有日志。出了事能追溯。
⚠️ 血的教训
我曾经参与过一个智能客服项目,团队直接拿用户聊天记录做训练,没做脱敏。结果测试阶段,模型竟然「记住」了某个用户的手机号,在对话中自动补全了。这事要是上线了,后果不堪设想。从那以后,我要求所有文本数据必须过一遍PII(个人身份信息)检测。
我曾经参与过一个智能客服项目,团队直接拿用户聊天记录做训练,没做脱敏。结果测试阶段,模型竟然「记住」了某个用户的手机号,在对话中自动补全了。这事要是上线了,后果不堪设想。从那以后,我要求所有文本数据必须过一遍PII(个人身份信息)检测。
数据合规的检查清单,我一般这样列:
| 检查项 | 要求 | 状态 |
|---|---|---|
| 数据来源合法性 | 有授权协议或公开声明 | ✅ |
| 敏感字段脱敏 | 所有PII字段已处理 | ✅ |
| 用户同意记录 | 有明确的隐私政策弹窗 | ✅ |
| 数据存储加密 | AES-256或以上 | ✅ |
| 访问权限控制 | 基于角色的最小权限 | ✅ |