数据预处理的方法有哪些:依托实操场景适配对应处理方式
做数据分析和建模的新手阶段,最容易踩的误区就是直接用原始数据跑模型,结果就是准确率极低、数据偏差严重,后来在一次次项目实操里,慢慢摸清数据预处理的方法有哪些,也明白了所有方法都要贴合数据问题去用,不是照搬模板就行。
最开始接手用户行为数据集时,完全没章法,拿到数据就直接导入工具。原始数据里密密麻麻全是问题,大量空白值、错乱的字符、重复的条目,硬生生把简单的用户画像分析做成了一团乱麻。当时天真地以为只要删掉所有缺失数据就万事大吉,结果样本量直接缩水一半,最后分析出来的结果完全不具备参考性。
折腾好久才搞明白,缺失值处理根本不是一刀切删除。
数据里的用户年龄、消费金额这类核心数值型字段,少量缺失的话,用同字段的均值、中位数填充是最稳妥的方式,不会打乱整体的数据分布。而用户备注、偏好标签这类非核心文本字段,缺失之后没有填充意义,直接剔除对应行就可以。还有部分时间字段的缺失,因为是随机出现的,不影响整体数据规律,保留样本空值标记即可,不用过度处理。
除了缺失值,数据重复也是高频问题。
第一次做电商销量数据统计时,没做重复值筛查,后台导出的订单数据里,存在大量重复录入的订单条目。当时肉眼根本看不出来,直到最后统计销量翻倍,才发现问题。后续实操里固定了处理方式,直接根据唯一订单ID、用户ID做重复筛查,完全重复的整行数据直接删除,部分字段重复、核心信息不同的数据,单独筛选出来人工核对修正,避免误删有效数据。
异常值处理是最容易被新手忽略的步骤,也是影响结果精度的关键。
之前做月度客流数据分析,数据集里混着几个极端数值,凌晨时段的客流数据居然远超高峰期。一开始没在意,直接代入计算,导致月度平均客流数据严重虚高。后来才反应过来,这些异常数据是设备故障、系统bug导致的无效数据。日常实操不用复杂的算法,用箱线图就能快速筛出极端异常值,轻微偏离正常区间的数值可以保留,避免过度清洗丢失数据特征,严重偏离、不符合业务逻辑的异常值,直接剔除或替换为正常区间临界值。
文本和格式标准化处理,是让杂乱数据能被机器识别的基础操作。
拿到的原始数据永远是五花八门的,同一字段里有的是大写英文、有的是小写,有的带特殊符号、有的夹杂空格,时间格式更是混乱,年月日、年月、时间戳格式混在一起。之前吃过格式不统一的亏,批量运算时大量数据匹配失败。现在固定会做标准化处理,统一文本大小写、清除无效特殊字符和多余空格,把所有时间数据统一转换成标准时间格式,分类文本数据做统一归类,比如将“非常满意”“超满意”统一归为满意类别。
还有一个很关键的步骤是数据归一化,很多新手会跳过这一步。
做多维度建模的时候,消费金额、访问次数、停留时长的数值量级差距极大,消费金额动辄上万,访问次数只有个位数,模型会优先放大大数值字段的权重,导致分析结果失衡。实操里会用归一化的方式,把所有数值型数据统一映射到0-1的区间里,让所有维度的权重保持均衡,保证模型训练的公平性和准确性。
做完这整套预处理流程后,原本杂乱、无效、失衡的原始数据,才能变成干净、可用、适配分析建模的标准数据。
上次整理完一整套用户行为数据,预处理结束后已经是深夜,盯着干净规整的数据集,只是默默保存了文件,关掉电脑起身接了一杯温水。