老码农和你一起学AI系列:系统化特征工程-缺失值处理

王者杯·14天创作挑战营·第5期 10w+人浏览 673人参与

在人工智能与数据分析的世界里,数据就像构建大厦的砖块,而缺失值则是砖块上的裂缝。若不妥善处理,这些裂缝可能导致整个分析结果出现偏差,甚至让精心搭建的 AI 模型轰然倒塌。无论是 AI 领域的专业从业者,还是对 AI 感兴趣的非专业人士,了解缺失值处理的相关知识都至关重要。接下来,我们将深入且通俗地探讨缺失值处理的理论知识。

一、识别缺失值

在处理缺失值之前,我们首先要学会识别它。缺失值并非只有一种表现形式,它会以多种 “伪装” 出现在数据中,常见的有以下几种:

1. NaN(Not a Number)

这是在 Python 等编程语言的数据分析库(如 Pandas)中非常常见的缺失值形式,主要出现在数值型数据中。比如在一份学生成绩数据里,某名学生的数学成绩字段显示为 NaN,就表明该学生的数学成绩缺失了。

2. NULL

在数据库(如 MySQL、SQL Server)中,NULL 是表示缺失值的常用符号,它可以出现在各种数据类型的字段中,无论是数值型、字符型还是日期型。例如,在客户信息表中,某个客户的邮箱地址字段为 NULL,意味着我们没有收集到该客户的邮箱信息。

3. 0

在某些情况下,0 也可能代表缺失值,但这需要结合具体的业务场景来判断。比如在统计某地区每月的降雨量时,如果某个月的降雨量记录为 0,有可能是该月确实没有降雨,但也有可能是数据缺失,只是被误填为 0。再比如,在记录人们的年龄时,若出现 0 岁的记录,对于成年人样本来说,大概率就是缺失值。

4. “Unknown”

这种形式的缺失值多出现在字符型数据中。例如,在一份产品调查数据里,关于产品颜色的反馈中出现 “Unknown”,就表示被调查者没有提供该产品颜色的相关信息,即该字段存在缺失值。

识别缺失值是处理缺失值的第一步,只有准确找出这些 “空白”,才能为后续的处理工作打下坚实的基础。

二、探究缺失机制

识别出缺失值后,我们需要进一步探究缺失机制,因为它是选择合适处理方法的前提。根据缺失值与数据集中其他变量的关系,缺失机制主要分为以下三类:

1. 完全随机缺失(MCAR)

完全随机缺失是指数据的缺失与数据集中的任何变量(包括缺失变量本身和其他变量)都没有关系,缺失是完全随机发生的。例如,在一份问卷调查中,由于问卷印刷错误,随机导致部分问卷的某个问题无法填写,那么该问题对应的缺失值就属于完全随机缺失。这种缺失机制下,缺失的数据可以看作是总体数据的一个随机样本,对分析结果的影响相对较小。

2. 随机缺失(MAR)

随机缺失是指数据的缺失与缺失变量本身无关,但与数据集中的其他变量有关。比如,在调查人们的收入情况时,女性被调查者可能比男性更不愿意透露自己的收入,导致女性收入数据的缺失率高于男性。这里收入数据的缺失与性别变量相关,而与收入本身的大小无关,这种情况就属于随机缺失。在这种机制下,我们可以利用其他相关变量的信息来辅助处理缺失值。

3. 非随机缺失(MNAR)

非随机缺失是指数据的缺失与缺失变量本身的取值有关。例如,在调查人们的债务情况时,债务金额较大的人可能更不愿意填写自己的债务数据,导致债务金额较大的记录更容易缺失。这种缺失机制下,缺失的数据具有一定的系统性,若处理不当,会对分析结果产生较大的偏差,处理难度也相对较大。

只有清楚了解数据的缺失机制,我们才能在众多处理方法中找到最适合的那一种。

三、处理方法论

当我们明确了缺失值的类型和缺失机制后,就可以运用相应的处理方法来解决问题了。常见的缺失值处理方法主要包括删除法和填充法,其中填充法是重点内容。

1. 删除法:“舍弃” 缺失的数据

删除法是一种简单直接的处理方法,即把含有缺失值的记录或字段删除。它主要分为列表删除和成对删除两种:

(1)列表删除(Listwise Deletion)

列表删除也称为行删除,是指将数据集中任何含有缺失值的记录(行)全部删除。例如,在一份包含学生姓名、语文成绩、数学成绩和英语成绩的数据集里,如果某条记录中语文成绩缺失,那么就将这条记录整体删除。

适用场景:当数据集中缺失值的比例较低(通常认为低于 5%),且缺失机制为完全随机缺失时,列表删除是比较合适的选择。因为此时删除少量含有缺失值的记录,对整体数据的代表性影响较小。

优点:操作简单,能够快速得到一个完整的数据集,后续的分析工作可以在无缺失值的数据集上进行。

缺点:如果缺失值比例较高,会导致大量数据被删除,造成数据资源的浪费,同时可能使剩余数据的代表性降低,影响分析结果的准确性;而且当缺失机制不是完全随机缺失时,删除含有缺失值的记录可能会引入偏差。

(2)成对删除(Pairwise Deletion)

成对删除也称为列删除,是指在进行不同的分析时,只删除与该分析相关的含有缺失值的记录。例如,当我们要计算语文成绩和数学成绩的相关性时,只删除语文成绩或数学成绩缺失的记录,而对于英语成绩缺失的记录,只要语文和数学成绩完整,就会保留下来用于计算相关性。

适用场景:当数据集中不同变量的缺失值分布不均匀,且在进行特定分析时,只关注部分变量,此时成对删除可以保留更多有用的数据。

优点:相比列表删除,能够保留更多的数据,减少数据资源的浪费,在一定程度上提高了数据的利用率。

缺点:不同分析所使用的样本量可能不同,导致分析结果之间缺乏可比性;而且如果缺失值的分布存在一定规律,也可能引入偏差。

2. 填充法:“弥补” 缺失的数据

填充法是指用合适的值来填补数据中的缺失值,从而得到一个完整的数据集。它是处理缺失值的重点方法,根据填充值的获取方式不同,可分为以下几种:

(1)统计量填充

统计量填充是利用数据集中其他非缺失值的统计特征来填充缺失值,适用于不同类型的数据:

  • 数值型数据:常用的统计量有均值和中位数。均值是所有非缺失值的平均值,它能反映数据的集中趋势,但容易受到极端值的影响。例如,在一份员工工资数据中,大部分员工的工资在 5000-8000 元之间,但有少数高管的工资高达 50000 元,此时若用均值填充缺失的工资数据,就会拉高整体的平均水平,导致结果偏差。而中位数是将所有非缺失值按大小排序后,位于中间位置的数值,它不受极端值的影响,当数据中存在极端值时,用中位数填充更为合适。
  • 类别型数据:常用的统计量是众数,即数据集中出现频率最高的类别。比如在一份产品颜色偏好调查数据中,“红色” 出现的频率最高,那么对于缺失的颜色偏好数据,就可以用 “红色” 来填充。

适用场景:当数据的缺失机制为完全随机缺失或随机缺失,且缺失值比例较低时,统计量填充是一种简单有效的方法。

优点:操作简便,计算速度快,能够快速填补缺失值,且不会改变数据的样本量。

缺点:用统计量填充会减少数据的变异性,可能导致分析结果的偏差;而且它没有考虑数据之间的相关性,填充值只是一个平均或常见的水平,不能很好地反映个体的差异。

(2)模型预测填充

模型预测填充是利用数据集中其他非缺失的特征变量,建立预测模型来预测缺失值。常用的模型有 K 近邻(KNN)和随机森林等:

  • K 近邻(KNN):KNN 算法的基本思想是,对于一个含有缺失值的样本,根据某种距离度量(如欧氏距离)找到数据集中与该样本最相似的 K 个样本(邻居),然后用这 K 个邻居中对应缺失字段的非缺失值的均值(数值型)或众数(类别型)来填充该样本的缺失值。例如,在一份包含身高、体重、年龄等特征的人体数据中,某个人的体重缺失,我们可以通过计算该人与其他样本的身高、年龄等特征的距离,找到最相似的 K 个样本,用这 K 个样本的体重均值来填充该人的体重缺失值。
  • 随机森林:随机森林是一种集成学习算法,它由多个决策树组成。在处理缺失值时,可以将含有缺失值的字段作为目标变量,其他非缺失字段作为特征变量,构建随机森林模型,然后利用该模型预测缺失值。例如,在一份客户消费数据中,客户的消费频率字段存在缺失,我们可以将消费频率作为目标变量,客户的年龄、性别、收入、购买商品种类等作为特征变量,建立随机森林模型,预测出缺失的消费频率值。

适用场景:当数据集中变量之间存在一定的相关性,且缺失值比例适中时,模型预测填充能够利用变量间的关系得到更准确的填充值。

优点:考虑了数据之间的相关性,填充值更贴近真实数据的分布,能够减少因缺失值带来的偏差,提高数据的质量。

缺点:操作相对复杂,需要建立预测模型,计算成本较高;而且模型的预测效果依赖于特征变量的选择和模型的参数设置,如果特征变量选择不当或参数设置不合理,可能会导致填充结果不准确。

(3)高级技巧:添加 “缺失标志” 变量

在进行填充处理时,我们还可以采用一种高级技巧 —— 添加 “缺失标志” 变量。即除了用上述方法填充缺失值外,再额外增加一个二进制变量(通常取值为 0 或 1),用来标识该字段是否存在缺失值。例如,对于一份含有 “收入” 字段的数据,若某条记录的收入缺失,我们先用合适的方法(如均值)填充收入值,同时增加一个 “收入缺失标志” 变量,该变量在这条记录中取值为 1,在收入未缺失的记录中取值为 0。

适用场景:当缺失值的存在可能蕴含一定的信息,或者我们想在后续的分析中区分原始数据和填充数据时,添加 “缺失标志” 变量是很有必要的。

优点:能够保留缺失值的相关信息,便于后续分析人员了解数据的缺失情况,同时也为后续的模型分析提供了更多的信息,有助于提高模型的准确性。

缺点:会增加数据的维度,给数据存储和后续的分析工作带来一定的额外负担。

四、核心思想

通过对缺失值处理方法的介绍,我们可以发现,每种处理方法都有其适用场景、优点和缺点,没有最好的缺失值处理方法,只有最合适的方法。选择哪种处理方法,主要取决于以下几个因素:

1. 缺失机制

如果缺失机制是完全随机缺失,且缺失值比例较低,删除法或简单的统计量填充法可能就足够了;如果是随机缺失,且变量之间存在相关性,模型预测填充法会是更好的选择;而对于非随机缺失,处理起来则更为复杂,可能需要结合更多的业务知识和更复杂的方法,甚至需要重新设计数据收集方案。

2. 数据量

当数据量较大时,即使缺失值比例稍高,采用删除法也可能不会对分析结果产生太大影响;但当数据量较小时,删除少量含有缺失值的记录就可能导致数据代表性不足,此时更适合采用填充法,尽量保留数据。

3. 特征的重要性

如果含有缺失值的特征是分析或建模的关键特征,那么我们需要更加谨慎地处理缺失值,可能需要采用更复杂、更准确的填充方法(如模型预测填充),以尽量减少对关键特征的影响;如果该特征不是很重要,对分析结果的影响较小,那么可以采用相对简单的处理方法,如删除法或统计量填充法。

最后小结:

总之,在处理缺失值时,我们需要综合考虑以上因素,根据具体的情况选择最合适的处理方法,以确保后续的数据分析和 AI 模型构建能够基于高质量的数据,得到准确、可靠的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值