数据预处理——机器学习测试(12)

发表于:2020-10-26 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:融360 AI 测试团队    来源:51Testing软件测试网原创

分享:
  9.1.2 数据预处理
  在实际生产应用中,数据来源较多,数据格式、数据完整性、数值合理性等参差不齐,对于数据的质量无法直观地进行判断。因此在进行特征构造前需要对数据进行预处理,一般包含两个方面:数据清洗和特征预处理。
  1.数据清洗
  数据清洗(Data Cleaning)是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。数据清洗是数据预处理的第一步,也是保证后续结果正确的重要一环。若不保证数据的正确性,我们可能得到错误的结果,会直接影响机器学习效果。数据清洗主要包含内容如图9-2所示:
图9-2 数据清洗示意图
  1)格式内容清洗
  在实际生产应用中,数据多由人工收集或用户填写而来,所以有很大可能性在格式和内容上存在一些问题;另外不同版本的程序、不同数据源采集的数据格式和内容也可能存在不一致情况。因此在数据清洗时,需要对数据格式内容进行处理。
  对于数据格式内容的清洗,基本思想就是将格式统一,以及对于特殊内容的过滤等。容易产生不一致的数据如表9-1所示。
  2)逻辑错误清洗
  数据的逻辑错误一般是通过业务理解、常识等去发现,常见的处理场景包括:
  数据重复清洗:对两条或多条完全相同的数据可以只保留一条数据。
  不合理值清洗:从生活常识或业务逻辑等发现的不合理数值,如籍贯为汉族等。
  矛盾内容修复:数据中有些字段可以相互验证,如身份证为xxxx19800101xxxx,年龄为18岁,明显这两个信息矛盾。此时需要根据字段的数据来源,判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段。
  3)缺失值清洗
  数据存在缺失是实际应用中常见的情况,常见的缺失值处理方法有以下三种:
  ·直接使用含有缺失值的特征数据:当仅有少量样本缺失该特征的时候可以尝试使用。
  ·删除数据:将存在缺失信息的数据对象删除。该方法简单易行,当存在缺失值的数据对象占比小的情况下非常有效;但当缺失数据对象占比较大,这种方法可能导致数据发生偏离。
  ·缺失值填充:使用一定的数据去对缺少的值进行填充,是最常用的一种方法。
  常见的缺失值填充方法有以下几种:
  统计填充:对于缺失值,尤其是数值类型的特征,一般是根据所有样本关于这维特征的统计值对其进行填充,如使用平均数、中位数、众数、最大值、最小值等,是一种简单的较为常用的方式。
  统一填充:对于含缺失值的特征,把所有缺失值统一填充为自定义值,常用的统一填充值有:“空”、“0”、“正无穷”、“负无穷”等。
  预测填充:我们可以通过预测模型利用不存在缺失值的数据来预测缺失值,也就是先用预测模型把数据填充后再做进一步的工作,如统计、学习等。虽然这种方法比较复杂,但是最后得到的结果比较好。
  多重插补:多重插补认为待插补的值是随机的,通常是估计出待插补的值,再加上不同的噪声,形成多组可选插补值,根据某种选择依据,选取最合适的插补值。
  在对缺失值进行处理时,要综合数据缺失比例和数据重要性,分别制定策略,如图9-3所示:
图9-3 缺失值处理策略示意图
  4)异常值清洗
  异常值是指样本中的个别特征值,其数值明显偏离其余的观测值。异常值通常也可称为离群点。如我们观测记录某地每天的温度,在一个月内数据基本维持在20摄氏度左右,发现某天记录的数据达到50摄氏度,可能是由于记录错误或检测设备异常而出现该结果,便可认为该天记录的数据为异常值。
  检测离群点或异常值是特征工程的核心问题之一。常用的异常值检测方法有:
  ·标准差
  在统计学中,如果数据分布近似于正态分布,那么大约68%的数据值会在均值的一个标准差范围内,大约95%的数据值会在两个标准差范围内,大约99.7%的数据值会在三个标准差范围内,如图9-4所示。因此,如果有任何数据点超过标准差的3倍,那么这些点很有可能是异常值。
图9-4 正态分布标准差示意图
  ·箱形图
图9-5 箱形图示意图
  如图9-5所示,箱形图是通过数据四分位数形成的图形化描述。这是一种非常简单但有效的可视化离群点的检测方法,任何在上下边界之外的数据点都可以认为是异常值。详细介绍可参考9.2.2小节内容。
  ·DBScan聚类
  DBScan 是一种用于把数据聚成组的聚类算法。它同样也被用于单维或多维数据的基于密度的异常检测。其它聚类算法比如K均值和层次聚类也可用于检测离群点。
图9-6 DBScan聚类示意图
  如图9-6所示,边界点b与核心点c位于同一个簇中,但前者距离簇的中心要远得多,其他任何点都被称作噪声点,它们是不属于任何簇的数据点。因此这些点可能是异常的,对此需要进一步研究。
  对于异常值处理通常遵循以下几种原则:
  1)删除含有异常值的记录:直接将含有异常值的记录删除。
  2)视为缺失值:将异常值视为缺失值,利用缺失值处理的方法进行处理。
  3)平均值修正:可用前后两个观测值的平均值修正该异常值。
  4)不处理:直接在具有异常值的数据集上进行数据挖掘。
  2.特征预处理
  特征预处理通常是对数据进行转换,以增强数据效果。常见方法如图9-7所示。
图9-7 特征预处理方法
  1)特征无量纲化
  无量纲化是使不同规格的数据转换到同一规格,以消除不同量级数据对机器学习算法的影响。常见的无量纲化方法有标准化和正则化。
  ·数据标准化
  数据标准化通常分为两种,一种是将原数据变换为服从标准正态分布的数据,另一种是将数据缩放到0~1之间,也称归一化。主要方法有z分数标准化和min-max标准化。
  z分数标准化是最常见的标准化技术,利用统计学里简单的z分数(标准分数)思想,使输出被重新缩放,均值为0、标准方差为1,如图9-8所示。计算公式为:
  其中,z是输出值,x是特征原来的值,μ是该特征的均值,σ是特征的标准差。
图9-8 z分数标准化示意图

查看《机器学习测试入门与实践》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号