全文共2134字,预计学习时长6分钟
图源:towardsdatascience
数据清理占到数据科学家工作时间的很大一部分,原始数据必须经过处理才能使用,因而数据准备是数据科学中最重要也是首要的部分,它包括数据预处理和数据整理。
原始数据的来源纷杂,不适合直接进行分析。例如,重复的条目,或者可能在记录客户的电子邮件id时出现了打字错误,或者有一些调查员遗留下来的问题。对于未清理的数据集,无论尝试什么类型的算法,都无法获得准确的结果。
更好的数据胜过更高级的算法
不过,数据清理的步骤和技术因每个数据集而异,但有一套步骤可作为任何数据集清理的标准方法。运行一个基本的描述性统计测试可以对数据的初始意义进行检查,包括缺失值、特征的变化、特征的基数。
汇总统计信息
检查空值
用红色突出异常值
识别相关数据,剔除不相关数据
对不相关数据的识别主要进行两种检查:
1.重复条目:数据通常从多个来源收集并连接在一起形成一个数据集,这可能导致观察结果的重复性。如果观察(数量较少)重复几次可能没有问题,但如果观察重复太多次,可能会导致错误行为。因此,最好删除重复的观察结果,以获得更干净的数据集。
2.不相关数据:数据集将包含对特定任务可能没有用处的观察结果。例如,如果你只分析女性的购物行为,你就不需要在数据集中对男性进行观察。同样,你的数据可能有一个关于雇员id或姓名的列,这对预测没有很大帮助,可以按列删除。
修正不规则基数和结构错误
图源:unsplash
· 删除基数为1(对于分类特性)、或方差为零或非常低(对于连续特性)的列。这些特性不能提供太多信息,对构建预测模型也没有帮助。
· 由于拼写错误或大小写不一致,分类这列可能有大量类。例如,gender这列可能有许多类,如male、female、m、f、M和F,这些只表示两个级别——male和female。这样的类应该被映射到适当的级别,其余的级别应该被删除。条形图可以用来突出这些问题。
· 确保数据以正确的数据类型表示,例如,数字存储为int/float, date存储为date对象。
还可能会有很多问题,比如特性值中的空格、特性中的数据可能有混合数据类型,比如数字列可能有一些数字是数字,而一些是字符串或对象。修正这些错误将使数据集更清晰、更便于使用。
异常值
我们可以将数据点视为:
· 如果数据遵循非高斯分布,则高于Q3+1.5*IQR或低于Q1-1.5*IQR
· 如果数据遵循高斯分布,则偏离特征平均值(z分数)2或3个标准差
· 通过绘制框图、直方图或散点图来可视化单变量
这些方法适用于单变量或双变量(散点图)的初始分析,但不适用于多变量或高维数据。对于这种情况,应该使用先进的方法,如聚类、PCA、LOF和HiCS:基于密度的离群值排序的高对比度子空间。
处理异常值的方法
1.保留或删除:我们不应在没有仔细考虑的情况下丢弃任何观测值,因为这些信息对于理解数据中的异常行为或异常现象很有价值,除非我们确定异常值可能是由于测量误差造成的,或者异常值的存在影响了模型的拟合度。
Figure 4:有了异常值(左图),回归线似乎受到了顶部极值点的影响。没有异常值(右图)。在去除极值点后,回归线对数据的拟合效果更好。
2. Winsorising或Clamp转换:Winsorising用最近的非可疑数据替换离群值。这也被称为钳位变换,因为我们将高于阈值和低于下限阈值的所有值钳制到这些阈值区间,从而限制异常值:
其中fi是特征f的一个特定值,lower和upper是下限和上限,由上面讨论的IQR方法或z分数给出。
当怀疑模型由于异常值的存在而表现不佳时,建议应用钳位变换。评估winsoring影响的更好方法是比较在应用了转换和没有应用转换的数据集上训练的不同模型的性能。
3. 使用对异常值稳健的算法:基于树的算法和boosting方法对异常值不敏感,这是由于递归二进制分割方法用于划分特征空间的固有特性。当输入特征中存在异常值时,这些算法是最佳选择。
如果目标变量中存在异常值,基于树的算法是很好的,但是在选择损失函数时必须小心。原因是:如果我们使用均方误差函数,那么差异是平方的,并且会极大地影响下一个算法,因为boosting试图拟合损失的梯度。然而,有更稳健的误差函数可以用于增强树算法,如Huber损失和平均绝对偏差损失。
图源:unsplash
数据清理是数据科学生命周期中非常重要的组成部分,理解数据对于深入了解人口行为是至关重要的,它还可以帮助决定应用哪些转换,以及哪些算法可以为特定业务问题提供最佳结果。
一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)