Lecture 3:数据预处理¶
学习要点¶
真实数据可能不完整、含噪或相互矛盾。数据预处理(data preprocessing)把原始数据转换为适合分析的数据,主要包括数据清洗、数据集成、数据变换、数据归约与数据离散化。输入数据质量会直接影响分析结果,常用原则是“垃圾进,垃圾出”(Garbage In, Garbage Out,GIGO)。
1. 抽取、转换与加载¶
抽取、转换与加载(Extract, Transform, Load,ETL)是把多个来源的数据汇入目标仓库的流程:先抽取所需数据,再清洗、统一和变换,最后加载到数据仓库、数据湖或应用中。实际系统也常采用 ELT,即先加载原始数据,再在目标平台中转换。
2. 数据清洗¶
脏数据(dirty data)常见问题:
| 问题 | 示例 | 常见处理 |
|---|---|---|
| 缺失(incomplete) | 收入为空、字段未采集 | 删除少量不适用记录,或按业务与统计规则填补 |
| 噪声(noisy) | 传感器误差、录入错误、极端值 | 核验来源,平滑数据或标记异常值 |
| 不一致(inconsistent) | USA 与 usa、日期格式混杂、单位不同 |
统一代码、格式、单位和约束 |
| 重复(duplicate) | 同一实体重复入库 | 按主键或业务键去重并保留可追溯规则 |
缺失值处理¶
先判断缺失原因与比例,再选择方法。可删除缺失过多且不关键的记录、用常量标记(如 unknown)、用均值或中位数填补,或按类别分组填补。需要建模推断时可使用回归或其他预测方法;填补方案应记录在数据处理流程中。
| Python | |
|---|---|
不应机械地用均值填补所有字段:偏态分布容易被极端值影响,缺失本身也可能具有业务含义。分类标签缺失时尤其要谨慎,不能随意推断真实类别。
噪声与异常值¶
- 分箱平滑(binning):先排序并分箱,再用箱均值、中位数或边界值替换箱内数据。等宽分箱每箱覆盖相同数值区间,易受离群值影响;等深分箱让每箱样本数近似相同。
- 聚类(clustering):把相似记录分组,远离主要簇的点可作为异常候选,但需业务核实。
- 回归(regression):拟合趋势以平滑随机波动。
- 人工或半自动检查:结合领域规则验证可疑值。
异常值不一定是错误;应先区分录入错误、测量噪声与真实但罕见的事件。
正则表达式(regular expression,regex)用字符模式搜索、校验、提取或替换文本,常用于格式清洗:
| Python | |
|---|---|
| |
常用符号:. 匹配一个字符,\d 匹配数字,\w 匹配字母/数字/下划线,\s 匹配空白;+ 表示至少一个,* 表示零个或多个,{m,n} 指定重复次数,^ 与 $ 锚定文本开头和结尾。Python 原始字符串 r"..." 可避免反斜杠被字符串语法提前处理。
校验与一致性¶
可利用字段类型、取值范围、唯一性、非空约束、连续性和跨字段依赖发现错误。例如年龄必须非负,结束日期不能早于开始日期,邮政编码需符合指定格式。数据审计(data auditing)可通过统计关系或聚类发现可疑记录;数据清理(data scrubbing)则使用领域规则纠正常见错误。
3. 数据集成¶
数据集成(data integration)将多个来源合并成一致的数据集,核心工作包括:
- 模式集成(schema integration):统一字段名称、类型、层级与单位;
- 实体识别(entity identification):判断不同来源的记录是否描述同一现实对象;
- 冲突处理:解决币种、度量单位、编码或取值时间不同导致的冲突;
- 冗余消除:识别重复字段和可由其他字段推导的属性。
例如把英寸转换为厘米、把不同日期格式转为统一标准,并根据可靠度和时间戳决定冲突记录的保留规则。
4. 数据变换¶
数据变换(data transformation)包括平滑、聚合、泛化、规范化和特征构造。规范化(normalization)把数值尺度调整到可比较的范围。
最小-最大规范化¶
把属性值线性映射到区间 \([a,b]\):
Z 分数规范化¶
用均值和标准差表达观测值偏离均值的程度:
十进制缩放¶
选择最小整数 \(j\),使转换后最大绝对值小于 1:
聚合(aggregation)将细粒度记录汇总,例如按季度求年度销售总额;泛化(generalization)用更高层概念替代细节,例如把年龄映射到年龄段;特征构造(feature construction)从已有字段创建有助于分析的新属性。
5. 数据归约¶
数据归约(data reduction)用更小的数据表示保留相同或近似的分析结论,以降低存储和计算成本。
- 维度归约(dimensionality reduction):选择重要特征,或将高维数据映射到较低维空间;特征更少也更容易解释。
- 数据压缩(data compression):无损压缩可完整还原;有损压缩以部分精度换取更小体积,常用于图像、音频和视频。
- 数量归约(numerosity reduction):用模型、直方图、聚类或抽样代替完整记录。
- 聚合:通过数据立方体或分组统计保留分析所需的汇总层级。
分层抽样(stratified sampling)先按类别或子群分层,再从每层抽样,可避免少数群体在样本中被忽略。
6. 离散化与概念层次¶
离散化(discretization)将连续数值范围划分为区间,并以区间标签替代原值,例如年龄转换为“青年、中年、老年”。概念层次(concept hierarchy)把低层细节逐步汇总成高层类别,例如“城市 → 地区 → 国家”。
常用离散化方法包括等宽或等深分箱、直方图分析、聚类、基于熵和信息增益的阈值选择,以及按数据范围递归划分。选择方法时要考虑类别分布和分析目标;分箱过粗会丢失信息,过细则难以简化数据。
复习要点¶
- 数据清洗解决缺失、噪声、重复和不一致;数据集成解决多来源模式、实体与值冲突。
- 规范化统一数值尺度,聚合与泛化形成更高层摘要,特征构造创建新属性。
- 数据归约减少存储或计算规模,离散化把连续值转换为区间类别。
- 正则表达式适合基于明确格式抽取或校验文本,但复杂文本仍需结合语境与来源验证。