大数据

【译】数据探索完全指南

2019-02-27  本文已影响0人  歌湾汐云

【翻译】原文:A Comprehensive guide to Data Exploration,作者: Sunil Ray

前言
数据探索没有捷径。如果你现在认为只要数据足够多,思想有多远,机器学习就能带你走多远,那么很不幸的告诉你,机器学习做不到。如果有一天,你突然意识到你正在努力提高模型的准确性却毫无进展,这时你会发现,算法已经无能为力,在这种情况下,数据探索技术将可能对你有些帮助。

我可以很自信地说,因为我经历过这样的情况,很多很多。

我做业务分析已经近三年了。在刚开始的时候,我的一个导师建议我一定要花大量时间和精力在探索和分析数据上。他的忠告确实帮我少走很多弯路。

我创建这个教程,以帮助您了解数据探索的基本技术。一如既往,我已经尽我所能用最简单的方式解释这些概念。为了更好的理解,我举了几个例子来演示复杂的概念。

目录

  1. 数据探索的步骤

  2. 数据准备工作

    • 变量识别
    • 单变量分析
    • 双变量分析
  3. 缺失值的处理

    • 为什么要处理缺失值?
    • 为什么我的数据会有缺失值?
    • 处理缺失值的方法有哪些?
  4. 异常值检测与处理技术

    • 什么是异常值?
    • 异常值(离群点)有哪几种类型?
    • 什么导致的异常值?
    • 数据集中的异常值有什么影响?
    • 如何检测异常值?
    • 如何去掉异常值?
  5. 特征工程的艺术

    • 什么是特征工程?
    • 特征工程如何做?
    • 什么是变量转换?
    • 我们什么时候应该做变量转换?
    • 变量转换的常用方法有哪些?
    • 什么是变量/特征创建?它有什么好处?

0. 数据探索的步骤

记住,你的输入质量决定你的输出质量。所以,花多少时间和精力在数据探索上都是有意义的。就我看,数据探索,清洗和预处理需要占用您项目总时间的70%左右。

以下是探索,清洗和准备数据的步骤:

  1. 变量识别
  2. 单变量分析
  3. 双变量分析
  4. 缺失值的处理
  5. 异常值处理
  6. 变量变换
  7. 创建新变量

最后,我们将需要重复步骤4–7多遍,最终才能得到比较好的模型。

现在,让我们详细研究一下每个阶段。

1. 数据准备工作

变量识别

首先,识别预测(输入)和目标(输出)变量。然后,确定变量的数据类型和类别。

让我们以一个例子来更清楚地了解这一步。

例如:假设,我们要预测,学生是否会玩板球(参考下面的数据集)。在这里,您需要确定预测变量、目标变量、变量的数据类型和变量的类别。

下图,将上面这些变量按预测/目标、数据类型和变量类别三个维度进行了划分:


单变量分析

在这个阶段中,我们将一个个地探索每个变量。进行单变量分析的方法取决于变量的类型是分类变量(Categorical)还是连续变量(Continuous)。让我们来分别看一下不同类型的变量的探索方法:

连续变量: 对于连续变量,我们需要了解变量的集中趋势(如匀数、中数与众数)和分散程度。可以使用如下统计指标和可视化方法:

注:单变量分析也被用来突出显示缺失值和异常值。在后面的章节,我们将介绍处理缺失值和异常值的一些方法。要更深入了解这些方法,你可以参考课程descriptive statistics from Udacity

分类变量: 对于分类变量,我们将使用频率表来展现每个类别的分布。它可以使用2个度量:计数和占比。另外,条形图可以用作可视化的方法。

双变量分析

双变量分析是为了发现两个变量之间的关系。我们可以对分类变量和连续变量的任何组合进行双变量分析。可能的组合有:分类变量与分类变量,分类变量与连续变量,连续变量和连续变量。在分析过程中,需要对不同的组合使用不同的方法来分析。

让我们来详细看看处理不同组合的方法:

连续变量与连续变量: 在对两个连续变量进行双变量分析时,我们应该看散点图,它是发现了两个变量之间的关系的一个极好的方式。散点图表示变量之间的关系。关系可以是线性的或非线性的。

散点图可以显示两个变量之间的相关关系,但没有办法显示它们之间的相关程度。一般情况下,我们可以用相关性因子表示这种相关程度。相关性因子是在-1到1之间的一个值:

相关性因子使用以下公式计算得出:
Correlation = Covariance(X,Y) / SQRT( Var(X) Var(Y))*

各种工具都有计算变量之间相关性的函数。比如在Excel中,CORREL()用于返回两变量之间的相关性;在SAS中,PROC CORR用于计算相关性。这些函数都是返回皮尔森相关因子,以确定变量之间的关系:

在上面的例子中,变量X和Y有良好的正相关关系(0.65)。

分类变量与分类变量: 我们可以使用下面的方法探索两个分类变量之间的关系:

其中,O代表观察到频率,E代表在零假设的情况下的预期的频率,可用如下方法计算得到:

拿上面的双向表的例子来说,Product Category为(1,Small)的预期的频率为0.22。计算方法:row total(9)和column total(2)的乘积,然后除以样本总量(81)。这是每个单元格计算E的过程。用于分析关系强弱的统计方法有:

不同的数据科学语言和工具都有具体的方法来进行卡方检验。

分类变量和连续变量: 在同时探索分类和连续变量之间的关系的时候,我们可以为每个分类绘制箱线图(boxplot)。但是如果分类上的连续数值量很小,它不会显示出明显的统计意义。为了在统计意义上进行分析,我们可以进行Z-test,T-test或方差分析(Analysis of Variance,简称ANOVA)。

例子: 假设,我们要测试五种不同的训练的效果。为此,我们招募了20名男子,并将他们分为5组,每组4个人,每组进行一种运动。训练几周后,记录下他们的体重。现在我们就可以通过比较5组中每个男子的体重确定这些练习对他们的影响是否显著。

到目前为止,我们已经学习了数据探索的前三步:变量识别,单变量和双变量分析。我们还学习了各种统计方法和可视化方法来确定变量之间的关系。

现在,我们将看看处理缺失值的方法。更重要的是,我们也将探讨一下我们的数据为什么会出现缺失值,以及为什么必须要处理这些缺失值。

2. 缺失值的处理

为什么要处理缺失值?

训练集中的缺失值会减弱模型的效果,甚至导致模型错误。因为我们没有正确的分析这个变量本身以及它和其他变量的关系,这有可能导致预测或分类错误。

注意上图中的缺失值:在左边的图中,我们没有处理缺失值。从这个数据集得到的推论是,男性玩板球的概率于女性一样。而在右边的图中,这是我们处理了缺失值后的数据(根据称呼),可以看到,女性玩板球的概率高于男性。

为什么我的数据会有缺失值?

上面,我们讲了数据集中缺失值处理的重要性。现在,让我们看看这些缺失值发生的原因。他们可能发生在2个阶段:

  1. 数据提取: 提取过程中可能存在问题。在这种情况下,我们应该仔细检查数据的正确性。一些哈希程序也可以用来确保数据提取是正确的。在数据提取阶段的错误通常比较容易找到,并且也很容易纠正。

  2. 数据采集: 缺失发生在数据采集时,这种情况纠正起来比较难。这种缺失可以分为四种类型:

    • 完全随机缺失: 发生缺失的概率对所有观测的值是相同的。例如:数据收集过程中的被调查者扔硬币来决定是否填写他们的收入。如果扔到的是正面,被调查者就填写他/她的收入,反之亦然。这里每个观测值都有相同的缺失值概率。

    • 随机缺失: 变量缺失是随机的,但是对于不同的其他输入变量,他们的丢失概率是不同的。例如:我们收集年龄数据,女性比男性有更高的缺失值。

    • 由未被观察的因素导致的缺失: 缺失值不是随机的,而是与某种未被观察的因素相关。例如:在医学研究中,如果一个患者感到不适,那么他很有可能退出此研究。这个缺失值不是随机的,除非我们有“不适”作为所有患者的一个输入变量。

    • 由缺失值本身导致的缺失: 缺失值发生的概率与缺失值本身直接相关。例如:有较高或较低收入的人有可能不会提供他们的收入。

处理缺失值的方法有哪些?

  1. 删除法: 删除法分两种:行删除(List Wise Deletion)和成对删除(Pair Wise Deletion)。

    • 行删除:只要一行中有缺失值,我们就把整行删除。这种方法的主要优点就是简单。但因为这种方法减少了样本量,所以会降低模型的效果。
    • 成对删除:我们对每一个变量就用它不缺失的样本进行分析。这种方法的优点是,它尽可能多的保存了用于分析的样本数据。它的缺点是,不同的变量有不同的样本量。
    • 注意:只有当缺失值属于“完全随机缺失”的情况下,才能使用删除法,否则非随机缺失的样本会导致模型错误。
  2. 均值/众数/中位数插补法: 插补是一种用估计值填充缺失值的方法。目的是利用数据集中有效数据的性质,估计缺失值的值。均值/众数/中位数插补法是最常用的方法之一,即使用变量的所有已知值的平均值、中位数或众数,替换缺失值。具体可以分为2种类型:

    • 一般插补: 在这种情况下,我们计算该变量所有已知值的平均值或中位数,然后用平均值或中位数替换缺失值。例如在上述表格中,变量“Manpower”存在缺失值,我们计算所有已知的值的平均值(28.33),然后用它替换所有缺失值。
    • 相似样本插补: 我们分别计算“男性”(29.75)的平均值和“女性”的平均值(25),然后按照不同的性别分别替换缺失值。是“男”的话,我们用29.75替换缺失值,是“女”的话,我们用25替换缺失值。
  3. 预测模型法: 预测模型法是处理缺失值的方法中比较复杂的一种。它是指创建一个预测模型来估计缺失值,然后取代缺失值。在这种情况下,我们将我们的数据集分为2组:一组没有缺失值,另一组全是缺失值。第一组数据集成为模型的训练集,而二组数据集是测试集,变量中的缺失值被视为目标变量。接下来,我们根据训练集的其他属性建立了一个模型来预测目标变量,并填充测试集中的缺失值,我们可以用回归,方差分析,逻辑回归等各种建模技术来建立这个模型。这种方法有2个缺点:

    1. 模型估计值相比真正的值,通常太过于循规蹈矩。
    2. 如果数据集中的属性和缺失值之间没有关系,那么该模型估计的缺失值将不准。
  4. KNN 插补法: 这种方法,是使用指定个数(K)的与缺失值的样本相似的样本的值,填补缺失值。利用距离函数确定了2个属性的相似性。这个方法优缺点如下:

    • 优点:
      • 无论是定性还是定量的属性,K近邻算法都可以预测。
      • 不需要给每个含有缺失值的属性创建预测模型。
      • 很容易处理多个属性都有缺失值的情况。
      • 考虑了数据的相关性
    • 缺点:
      • KNN算法在所有的数据中寻找最相似的实例,在分析大量数据时非常耗时。
      • 选择K值很关键也很难。K过大会包含一些与我们不相似甚至显著不同的样本,而K太小意味着错过了重要的属性。

处理完缺失值之后,下一个任务是处理异常值。在我们创建模型时,常常忽视了异常值。这是一个悲剧的做法。异常值常常会使您的数据倾斜,并降低模型的精度。下面,让我们看看如何处理异常值。

3. 异常值检测与处理技术

什么是异常值?

异常值(离群点)是数据分析师和数据科学家一种常用的术语,数据分析需要密切关注它,因为它可能会导致错误的估计。简单的说,异常值(离群点)就是大大偏离样本总体格局的值。

举个例子来说,我们做客户分析,发现客户的平均年收入是80万美元。但是,有两个客户的年收入为400万和420万美元。这两个客户的年收入比其他人高出很多。这两点就被视为异常值(离群点)。

异常值(离群点)有哪几种类型?

异常值有两种:单变量和多变量。上面的例子是单变量离群的例子。我们可以通过观察单一变量的分布发现这些异常值。多变量异常是一个n维空间的离群点。为了找到这种异常值,你必须观察多维分布。

让我们以一个例子来说明这个问题。比如我们研究高度和重量之间的关系。下图,展示了高度,重量的一元和二元分布。看前两个箱图。我们没有任何异常值(上端和下端是1.5*IQR,这是很常用的方法)。再看散点图。其中有2个值在平均以下,一个在平均以上。

什么导致的异常值?

我们解决异常值问题的最好方法就是找出有导致这些异常值的原因。对付他们的方法取决于他们发生的原因。异常值出现的原因可以分为两大类:

  1. 人工(错误)/非自然因素
  2. 自然因素

让我们更详细的看看各种类型的异常值:

数据集中的异常值有什么影响?

异常值可以极大地改变数据分析和统计模型的结果。数据集中的异常值有许多不利的影响:

** 例子:**

正如你所见,有异常值的数据集有着显著不同的平均值和标准偏差。在没有异常值的情况下,平均值是5.45。但有异常值的情况下,平均值上涨为30。这将完全改变预测结果。

如何检测异常值?

最常用的检测异常值的方法是可视化。我们可使用各种可视化方法,如箱形图,直方图,散点图(上面,我们就使用了箱形图和散点图)。一些分析师也凭一些经验来检测异常值。例如:

如何去掉异常值?

处理异常值的方法与处理缺失值的方法很类似,如删除、转换、合并,把他们作为一个单独的组,插补值以及其他一些可用的统计方法。现在,我们讨论一下处理异常值的一般方法:

到目前为止,我们已经学习了数据探索、缺失值处理以及异常值检测和处理。这3个步骤可以提高原始数据的可用性和准确性。让我们现在进入数据探索的最后阶段——特征工程。

4. 特征工程的艺术

什么是特征工程?

特征工程是从现有的数据中提取更多信息的科学(或者说是艺术)。在这个阶段,你没添加任何新的数据,但却让你已有的数据变得更有用。

假如,你在做一个根据日期预测购物中心人流量的项目。如果你直接使用日期,你可能无法从数据中提取有意义结论。这是因为人流量很少受日期的影响,而更多是受这是一周中星期几的影响。这个星期几的信息就隐含在你的数据中。你需要把它找出来,才能创建出更好的模型。

从数据中提取出有用信息的过程就是所谓的特征工程。

特征工程如何做?

一旦完成了数据探索中的前5个步骤——变量识别,单变量分析,双变量分析,缺失值处理和异常值处理, 你就可以开始特征工程了。特征工程本身可以分为2个步骤:

这两种技术在数据挖掘中具有重要的作用,对模型预测能力有着显著的影响。下面我们了解一下每一步的细节。

什么是变量转换?

在数据建模中,转换是指用一个函数替换一个变量。例如,把一个变量x用它的平方根、立方根或者是对数替换。换言之,变量转换就是改变一个变量的分布或它与其他变量的关系的过程。

我们什么时候应该做变量转换?

在以下的情况下,变量转换很有必要:

变量转换的常用方法有哪些?

变量转换的方法很多。上面的讨论中我们已经提到了一些,其中包括平方根、立方根、对数、装箱(分类)等许多方法。下面让我们详细地看一下这些转换方法的优点和缺点。

什么是变量/特征创建?它有什么好处?

特征/变量创建是指根据已有变量生成一个新的特征/变量。比如说,我们数据集中有个变量date(DD/MM/YY),我们可以由它生成一些可能与目标变量更相关的新变量,如日,月,年,周,星期几。这中手法可以把变量中的隐藏关系突出显示出来:

创造新特征的方法有很多。让我们来看一些常用的方法:

要想了解更多,可以看看这个文章:5 Simple manipulations to extract maximum information out of your data

尾注

正如一开始所提到的,在数据探索方面的质量和努力将决定一个模型好坏。

数据探索和准备指南到此已经结束了。在这个完全指南中,我们详细地讨论了数据探索的七个步骤。本文的目的是为数据科学中这个非常重要的过程,提供一个深入和详细的指导。

上一篇 下一篇

猜你喜欢

热点阅读