机器学习是一个令人着迷的领域,它吸引了众多人的关注。通过机器学习,可以实现从自动回复系统到家庭清洁机器人,从推荐电影或产品到帮助检测疾病等多种功能。如今,所见的许多事物已经开始利用机器学习来提升自身性能。尽管构建模型相对容易,但最具挑战性的任务是数据预处理和筛选出有用的数据。本文将讨论在构建优秀机器学习模型的初期,面临的一个最大且常见的问题——数据缺失。
如果用简单的术语来解释,数据就像模型的燃料,如果燃料脏了、有杂质或数量不足,它将影响车辆的性能。毫无疑问,车辆会运行,但期望的车辆性能将无法实现。
在深入探讨数据缺失问题之前,让先看看数据缺失是如何以及为何在数据集中发生的。数据缺失的主要原因包括:
数据丢失:有时,如果数据存储在系统中,由于系统崩溃,只能恢复部分数据,或者文件损坏导致部分数据丢失。
数据未被捕捉:这是经常面临的问题之一,如果从在线表单中收集数据,一些字段没有被标记为必填,那么用户可能会跳过这些字段。
数据集中存在错误值:这种情况也很常见,由于数据源收集时验证不当,收集到错误的数据,比如年龄为250而不是25,或者地点、人物的拼写错误等。这也可能是由于进行调查的人犯错误造成的。
正如在引言中简要概述的,让更详细地了解数据缺失的影响。数据缺失与大多数用于机器学习的Python库(最常见的是skLearn)不兼容,它们没有自动处理这些缺失数据的机制,可能导致错误。大量缺失数据可能导致数据集变量分布的扭曲,即增加或减少数据集中某个特定类别的值。正如前面所述,这些缺失数据可能导致数据集的偏差,并导致模型分析错误。由于样本的代表性。
接下来,将讨论如何纠正或控制这些问题,但在那之前,需要正确识别它们。这些缺失数据主要分为三大类别,通常用于识别它们。
缺失数据可以分为以下三大类别:
完全随机缺失(MCAR):这意味着数据在数据集中缺失的概率不依赖于任何因素,对所有列来说可能都是一样的。它还表明,数据集中任何观察到的或缺失的观察结果之间没有关系。
随机缺失(MAR):其基本思想是数据随机缺失,即数据缺失基于可用信息。例如,女性比男性更不愿意分享她们的体重、身高和出生日期。因此,可以在性别和体重/身高或出生日期之间找到关系。所以,缺失数据的概率取决于性别。
非随机缺失(MNAR):不属于上述两个类别的任何情况自动归入这一类。这意味着缺失的数据不仅取决于观察到的值,还取决于一些未观察到的值,这些值是基于数据集中的某种机制引入的,比如学生的缺席可能在很大程度上取决于他的健康或家庭问题,但没有记录它们。
既然知道数据可能会在数据集中缺失,可以采用以下技术来克服这些问题:
了解数据来源:克服/处理这些缺失数据的一个重要步骤是“了解数据来源”,即数据是如何收集的,用于收集数据的机制,以及从哪里获取数据。
了解数据:这一步认为很重要,如果深入了解数据集,了解每个列的重要性、预期的数据类型以及可能的列/变量限制,它可以成为一个游戏规则改变者。
插补:这是用来处理缺失数据的技术。由于这是一个大主题,将为这些技术写一个单独的博客。