本综合指南主要参考《A Comprehensive Guide to Data Exploration》进行编写,用作日常学习。原文中将缺失值插补与异常值处理两大块作为数据探索部分,通过查阅资料及结合数据分析经验,本文将变量识别、单变量分析、双变量分析划为探索性数据分析(EDA) 部分,将缺失值插补、异常值处理、变量转化、特征/变量构造、特征筛选及降维划为特征工程部分。
对于数据挖掘相关任务,数据输入的质量决定了输出的质量。数据探索、清理和准备可能占用总项目时间的70%。在这里花费大量时间和精力是有意义的。
EDA主要包括如下三个部分:变量识别、单变量分析、双变量分析。
首先,确定预测变量(输入)和目标变量(输出)。接下来,确定变量的数据类型和类别。
示例:- 假设,我们想要预测,学生是否会打板球(参考下面的数据集)。在这里,您需要识别预测变量、目标变量、变量的数据类型和变量的类别。
执行单变量分析的方法取决于变量类型是分类类型还是连续类型。下面是分类变量和连续变量的方法和统计度量:
注意:单变量分析还用于突出显示缺失值和异常值。
双变量分析是找出两个变量之间的关系。在预定义的显著性水平上寻找变量之间的关联和分离。我们可以对分类变量和连续变量的任意组合进行双变量分析。组合可以是:分类和分类,分类和连续以及连续和连续。在分析过程中,使用不同的方法来处理这些组合。
散点图显示两个变量之间的关系,但不指示它们之间的关系强度。为了找到关系的强度,我们使用相关性。相关性在 -1 和 +1 之间变化。
相关性公式推导,查看博客协方差,协方差矩阵理论(机器学习)
分类和分类: 要找到两个分类变量之间的关系,可以使用以下方法:
分类和连续: 在探索分类变量和连续变量之间的关系时,可以为每个级别的分类变量绘制箱形图。如果水平数量较少,则不会显示统计显著性。要查看统计显著性,我们可以执行 Z 检验、T 检验或方差分析。
方差分析:- 它评估两个以上组的平均值在统计上是否不同。
例:假设,我们要测试五种不同练习的效果。为此,我们招募了20名男性,并为4名男性(5组)分配了一种类型的锻炼。几周后记录它们的体重。我们需要找出这些练习对它们的影响是否显着不同。这可以通过比较 5 组每组 4 名男性的体重来完成。
训练数据集中缺少数据会降低模型的拟合度,或者可能导致模型有偏差,因为我们没有正确分析行为和与其他变量的关系。它可能导致错误的预测或分类。
请注意上图中的缺失值:在左侧场景中,我们尚未处理缺失值。从这个数据集中推断,男性打板球的机会高于女性。另一方面,如果您查看第二个表格,该表显示了处理缺失值(基于性别)后的数据,我们可以看到与男性相比,女性打板球的机会更高。
前文以及论述处理数据集中缺失值的重要性,接下来分析出现缺失值的原因。主要发生在两个阶段:
删除:它有两种类型:成列删除和成对删除。
均值/众数/中位数插补:插补是一种用估计值填充缺失值的方法。目标是使用可以在数据集的有效值中识别的已知关系来帮助估计缺失值。均值/众数/中位数插补是最常用的方法之一。它包括用该变量的所有已知值的平均值或中位数(定量属性)或模式(定性属性)替换给定属性的缺失数据。它可以有两种类型:
预测模型:预测模型是处理缺失数据的复杂方法之一。在这里,创建了一个预测模型来估计将替代缺失数据的值。将数据集分为两组:一组没有变量缺失值,另一组有缺失值。第一个数据集成为模型的训练数据集,第二个具有缺失值的数据集是测试数据集,具有缺失值的变量被视为目标变量。之后创建一个模型来根据训练数据集的其他属性预测目标变量,并填充测试数据集的缺失值。可以使用回归、方差分析、逻辑回归和各种建模技术来执行此操作。这种方法有两个缺点:
KNN 插补:在这种插补方法中,使用与缺失值的属性最相似的给定数量的属性来插补属性的缺失值。使用距离函数确定两个属性的相似性。它也有一定的优势和劣势。
在处理完缺失值之后,接下来的任务就是处理异常值。
离群值是一种观察结果,它看起来很远并且偏离了样本中的整体模式。举个例子,做客户画像时,发现客户的平均年收入是80万美元。但是,有两个客户的年收入分别为 4 美元和 420 万美元。这两个客户的年收入与其他人群差距明显。这两个观察结果将被视为异常值。
异常值可以有两种类型: 单变量和多变量。上文讨论了单变量离群值的例子。当查看单个变量的分布时,可以找到这些异常值。多变量异常值是 n 维空间中的异常值。为了找到它们,必须查看多维分布。
举个例子,假设我们正在理解身高和体重之间的关系。下面,有身高、体重的单变量和双变量分布。看看箱线图。我们没有任何异常值(高于和低于 1.5*IQR,最常用的方法)。现在看看散点图,在这里,有两个低于和一个高于特定体重和身高分布的异常点。
每当我们遇到异常值时,解决它们的理想方法是找出产生这些异常值的原因。处理它们的方法将取决于它们发生的原因。异常值的原因可分为两大类:
异常值可以极大地改变数据分析和统计建模的结果。数据集中的异常值有许多不利影响:
为了深入了解影响,让我们举个例子来检查数据集中有和没有异常值的数据集会发生什么。
例子:
具有异常值的数据集具有显著不同的均值和标准差。在第一种情况下,我们会说平均值是 5.45。但有了异常值,平均值飙升至 30。这将完全改变估计。
最常用的检测异常值的方法是可视化。我们使用了各种可视化方法,如Box-plot、Histogram、Scatter Plot(上面,我们使用了 box plot 和 scatter plot 进行可视化)。一些分析师还使用各种经验法则来检测异常值。他们之中有一些是:
大多数处理异常值的方法类似于缺失值的方法,如删除观察值、转换它们、分箱、将它们视为一个单独的组、插补值等统计方法。在这里,我们将讨论用于处理异常值的常用技术:
删除观察值: 如果由于数据输入错误、数据处理错误或异常值数量非常小,可以删除离群值。还可以在两端使用修剪来去除异常值。
转换和装箱值: 转换变量也可以消除异常值。值的自然对数减少了由极值引起的变化。分箱也是变量变换的一种形式。对变量进行分箱,决策树算法可以很好地处理异常值。还可以使用为不同的观察值分配权重。
插补: 与缺失值插补一样,也可以使用均值、中值、众数等方法插补异常值。在估算值之前,应该分析它是自然异常值还是人为异常值。如果它是人为的,可以使用估算值。除上述方法,还可以使用统计模型来预测异常值的观察值,然后用预测值来估算它。
分开处理: 如果有大量异常值,我们应该在统计模型中分开处理。一种方法是将两个组视为两个不同的组,并为两个组构建单独的模型,然后组合输出。
在数据建模中,转换是指用函数替换变量。例如,用平方根/立方根或对数 x 替换变量 x 是一种转换。换句话说,转换是改变变量与其他变量的分布或关系的过程。
以下是需要进行变量转换的情况:
当我们想要更改变量的比例或标准化变量的值以便更好地理解时。如果有不同比例的数据,则此转换是必须的,但此转换不会改变变量分布的形状
当我们可以将复杂的非线性关系转化为线性关系时。与非线性或曲线关系相比,变量之间存在线性关系更容易理解。变换帮助我们将非线性关系转化为线性关系。散点图可用于查找两个连续变量之间的关系。这些转换也改进了预测。对数转换是这些情况下常用的转换技术之一。
对称分布优于偏态分布,因为它更容易解释和生成推论。一些建模技术需要变量的正态分布。因此,每当我们有偏斜分布时,我们都可以使用减少偏斜度的变换。对于右偏分布,我们取变量的平方/立方根或对数,对于左偏分布,我们取变量的平方/立方或指数。
变量变换也是从实现的角度(Human involvement)来完成的。让我们更清楚地了解它。在关于员工绩效的项目之一中,年龄与员工绩效直接相关,即年龄越大,绩效越好。从实施的角度来看,启动基于年龄的计划可能会带来实施挑战。然而,将销售代理分为 30 岁以下、30-45 岁和 45 岁以上三个年龄组,然后为每个组制定三种不同的策略是一种明智的方法。这种分类技术称为变量分箱。
有多种方法可用于转换变量。正如上文讨论的,其中一些包括平方根、立方根、对数、合并、倒数等等。让我们通过强调这些转换方法的优缺点来详细了解这些方法。
特征/变量构造是基于现有变量生成新变量/特征的过程。例如,我们将 date(dd-mm-yy) 作为数据集中的输入变量。我们可以生成新的变量,如日、月、年、周、工作日,这些变量可能与目标变量有更好的关系。此步骤用于突出显示变量中的隐藏关系:
有多种技术可以创建新特征。让我们看看一些常用的方法:
在数据探索及特征工程上投入的质量和努力可以觉得模型的好坏,在提出改进的模型之前,我们需要多次迭代特征工程。
后续数据探索和特征工程的相关内容,会分别更新在《数据探索》与《特征工程》两个专栏,本文特征工程的第四部分“构造虚拟变量”及第五部分“特征筛选及降维”有单独文章进行论述,特性筛选及降维。