机器学习-数据清洗(一)
数据的预处理(清洗、集成、变换、规约)
在进行数据挖掘中,原始海量的数据中存在着大量不完整(有缺失值)、不一致、有异常的数据,严重影响到数据挖掘建模的执行效率,甚至可能导致挖掘结果的偏差,所以对首先对数据进行清洗就显得尤为重要,在数据清洗完成后,后续伴随着数据集成、转换、规约等一系列的处理,该过程就是数据预处理。数据预处理一方面是要提高数据的质量,另一方面是要让数据更好地适应特定的挖掘技术或工具。统计发现,在数据挖掘的过程中,数据预处理工作量占到了整个过程的60%。
数据预处理的主要内容包括:数据清洗、数据集成、数据变换和数据规约
.
1、数据清洗(Data Cleaning)
目标:修复数据中的噪声、缺失、不一致等问题。
1.1 、具体内容:
1.1.1、缺失值处理
- 方法:删除缺失记录、均值/中位数填充、插值法、模型预测填充。
- 示例:年龄字段缺失时,用数据集的平均年龄填充。
1.1.2、异常值处理
- 方法:Z-score法(标准化)、IQR(四分位距法)、描述性分析、散点图、箱形图、直方图查找异常并处理。
- 示例:检测到某商品价格超过正常范围的3倍标准差,判定为异常并剔除。
1.1.3、噪声数据
- 方法:分箱、回归、孤点分析。
- 示例:
1.1.4、重复值处理
- 方法:删除完全重复的行。
- 示例:电商订单数据中同一订单被重复记录两次,删除冗余行。
2、数据集成(Data Integration)
目标:涉及整合多源数据,解决冗余和实体识别冲突。
2.1、具体内容:
2.1.1、实体识别
- 方法:统一字段命名(如 CustomerID 和 Cust_ID 合并为同一字段)。
- 示例:合并销售表(含 ProductID)和库存表(含 ProdID),需统一字段名。
2.1.2、冗余数据处理
- 方法:分析相关性,删除冗余列(如同时存在 身高(cm) 和 身高(m))。
- 示例:合并两个客户表时,发现 年龄 和 出生年份 存在冗余,删除其一。
3、数据变换(Data Transformation)
目标:将数据转换为适合数据挖掘分析的格式,有规范化、离散化、特征构造等。
3.1、具体内容:
3.1.1、规范化(Normalization)
- 方法:最小-最大标准化(缩放到 [0,1])、Z-score标准化(均值为0,方差为1)。
- 示例:将收入从 [1000, 100000] 缩放到 [0,1]。
3.1.2、离散化
- 方法:分箱(等宽/等频)、聚类离散化。
- 示例:将年龄分为 [0-18, 19-35, 36-60, 60+]。
3.1.3、特征构造
- 方法:生成新特征(如从日期中提取星期几)。
- 示例:将 购买日期 转换为 季节 或 是否为周末。
4、数据规约(Data Reduction)
目标:减少数据规模但保持完整性,同时保留关键信息。
4.1、具体内容:
4.1.1、属性(维度)规约
- 方法:主成分分析(PCA)、删除低方差特征、逐步回归。
- 示例:用 PCA 将 20 维数据降为 3 维主成分。
4.1.2、数值规约
- 方法:聚类抽样、分层抽样、直方图分箱。
- 示例:从 100 万条数据中随机抽取 10% 进行分析。