数据预处理——数据清理

“脏数据”对算法模型的直接影响是不能被使用,间接影响是降低模型的精度。这种情况下就需要对数据进行清理,包含(但不局限于):不合格数据修正、缺失值填充、噪声值处理、离群点处理。
1.不合格数据修正
不合格数据泛指一切不符合直观期望的数据。例如一份CSV文件数据
Name, sex, age
Jack, male, 23
Lucy**;**female, 22
Tom, $%%^^, 24
中间的分隔符和部分数据有误,需要手动操作或者在代码处理时进行异常捕获,以忽略不合格数据。
2.缺失值填充
缺失值即某些属性的值为空。例如在一份CSV文件数据中,sex列有数据缺失:
Name, sex, age
Jack, male, 23
Lucy;female, 22
Tom, , 24
常见的缺失值处理方法(但不局限于):
1.忽略数据:在使用数据时忽略“Tom,,24”这一行数据
2.人工填写缺失值:当数据集很大时,这种方法比较耗时
3.使用全局固定值填充:将缺失的属性值使用同一个常量(如Null,None)进行填充
4.使用属性的中点度量(如均值、中位数)进行填充:如使用非缺失值的平均数(24+22)/2=23进行填充
5.使用与给定元组属于同一类的所有样本的属性均值或中位数填充,如Tom和Jack均为男性,那么猜测Tom的年龄和Jack一样大(当有多个样本时,求对应的均值即可)。
6.使用回归、决策树等工具进行推理:该种方法较可靠,是最流行的处理方法。
3.噪声值处理
噪声是指数据中的干扰数据、对场景描述不正确的数据。例如,导航地图服务商的数据采集员在采集数据的过程中会开车在各条公路上行驶,进行拍照,并将数据上报。但是如果在采集的过程中遇到急刹突发事件等,就会对信号采集产生影响,生成噪声数据。
通常认为‘观察数据=真实数据+噪声值’。真实值是由观察数据除掉噪声数据得到的。
在数据挖掘中,往往认为离群点和噪声都属于数据集中的“脏数据”,所以对两者的处理方法的通用的。
4.离群点处理
离群点也被称为异常值,即数据集中包含了一些数据对象,它们与数据的一般行为或模型不一致。例如,一份人口统计数据中的年龄范围是-20~200,这显然是不合理的。
当得到数据中的异常值时,往往采用删除的方法得到“干净”数据,然后进行模型训练等。常见的异常值检测方法包括:正太分布检测、Tukey‘s Test、基于模型检测等。
(1)正态分布检测
正态分布检测基于统计学进行异常值检测。
在这里插入图片描述
统计学的知识点大家可以翻翻课本!
(2)Tukey‘s Test
这种方法是基于四分位数计算出数据集中的最小估计值和最大估计值,超过最小估计值和最大估计值的数为异常值。
最小估计值为Q1-k(Q3-Q1),最大估计值Q3+k(Q3-Q1)
Q1为下四分位数,Q2为中位数,Q3为上四分位数
当k=1.5时,小于最小估计值和大于最大估计值的为中度异常
当k=3时,小于最小估计值和大于最大值的为重度异常。
(3)基于模型检测
基于模型的检测主要包括:基于聚类的异常点检测、基于回归的异常点检测、基于邻近度/距离/相似度的异常点检测、基于密度的异常点检测等。
注意:
基于模型检测的异常值处理方法很多。通常情况下,基于统计学的检测方法(正态分布和Tukey‘s Test)可以处理大部分数据中的异常值。但是在异常检测和安全检测方面,基于统计学的方法就略显薄弱了,此时需要采用一些复杂的基于模型的检测方法。

你可能感兴趣的:(数据分析)