本文共 4110 字,大约阅读时间需要 13 分钟。
Exploratory Data Analysis(EDA)是指对已有数据在尽量少的先验假设下通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法,该方法在上世纪70年代由美国统计学家J.K.Tukey提出。
传统的统计分析方法常常先假设数据符合一种统计模型,然后依据数据样本来估计模型的一些参数及统计量,以此了解数据的特征,但实际中往往有很多数据并不符合假设的统计模型分布,这导致数据分析结果不理想。EDA则是一种更加贴合实际情况的分析方法,它强调让数据自身“说话”,通过EDA我们可以最真实、直接的观察到数据的结构及特征。
探索性数据分析(EDA)与传统统计分析(Classical Analysis)的区别
传统的统计分析通常是先假设样本服从某种分布,然后把数据套入假设模型再做分析。
探索性数据分析方法重视数据的真实分布,强调数据的可视化,使分析者能一目了然看出数据中隐含的规律,从而得到启发,以此帮助分析者找到适合数据的模型。
“探索性”是指分析者对有待解决的问题的理解会随着研究的深入不断变化。
EDA出现之后,数据分析的过程就分为两步:探索阶段和验证阶段。探索阶段侧重于发现数据中包含的模式或模型,验证阶段侧重于评估所发现的模式或模型,很多机器学习算法(分为训练和测试两步)都是遵循这种思想。
在数据分析工作中,利用统计学,可以更深入、更细致地观察数据是如何进行精确组织的,并且基于这种组织结构确定数据分析的方法,来获取更多的信息。
探索性数据分析通常有以下几个步骤:
- 是否有缺失值
- 是否有异常值
- 是否有重复值
- 数据分布是否均衡
- 是否需要抽样
- 变量是否需要转换
- 是否需要增加新的特征
- 连续变量:常见的统计量有:平均值、中位数、众数、最小值、最大值、四分位数、标准差等。使用频数分布表、直方图、箱线图等。
- 无序性离散变量:各个变量出现的频数和占比;使用频数分布表、柱形图、条形图、茎叶图、饼图等;
- 有序性离散变量:各个变量出现的频数和占比;使用频数分布表,堆积柱形图,堆积条形图等
- 离散变量
- 连续变量
总结以下,如果要对数据集(假设为dataset)进行探索性分析,通常的分析步骤:
假设使用工具 Jupyter 和 Python 语言
第1步:读取数据集,并显示数据的前10行,看看数据是否被正确加载;
第2步:有必要时对列进行重命名;
第3步:查看数据整体情况(可以使用 dataset.info()和dataset.describe()查看连续变量的统计性描述);
第4步:处理缺失值、异常值、重复值等问题;
第5步:必要时进行数据类型转换;
第6步:看是否需要添加新的特征;
第7步:确定分析思路,用思维导图来出分析思路;
第8步:按照分析思路进行数据分析并画出相应的数据描述图形;
第9步:总结分析结果。
探索性数据分析(EDA)目的是最大化对数据的直觉,完成这个事情的方法只能是结合统计学的图形以及各种形式展现出来。通过EDA可以实现:
研究数据集时经常使用的统计技术,包括偏差、方差、算数平均值、中位数、众数、极差、百分数等等。
集中趋势度量常常采用的统计量有:均值、中位数、众数等。
离中趋势度量常常采用的统计量有:极差、标准差、变异系数、四分位数间距等。
理解特征统计并且在代码中实现都是非常容易的。请看下面的箱线图:
箱线图中一个箱体包含五个值:上边缘(最大观测值或样品最大值)、上四分位数(Q3)、中位数(Q2)、下四分位数(Q1)和下边缘(最小观测值或样品最小值)。另外在箱体外还可以用圆形点表示异常值,下面是箱线图组成部分示意图:
上图中,中间的黑色粗直线表示数据的中位数(Q2)。中位数用在平均值上,因为它对异常值更具有健壮性。下四分位数本质上是25%,即数据中的25%要低于该值。上四分位数是75%,即数据中的75%要低于该值。而上边缘和下边缘表示该数据范围的上下两端。
举例:来自对红酒质量分析的一个案例
我们来看看上图中对应的数值结果:
箱形图很好地说明了基本统计特征的作用:
可以将概率定义为一些事件将要发生的可能性大小,以百分数来表示。在数据科学领域中,这通常被量化到0到1的区间范围内,其中0表示事件确定不会发生,而1表示事件确定会发生。那么,概率分布就是表示所有可能值出现的几率的函数。
请看下图:
常见的概率分布,均匀分布(上)、正态分布(中间)、泊松分布(下):
均匀分布是其中最基本的概率分布方式。它有一个只出现在一定范围内的值,而在该范围之外的都是0。我们也可以把它考虑为是一个具有两个分类的变量:0或另一个值。分类变量可能具有除0之外的多个值,但我们仍然可以将其可视化为多个均匀分布的分段函数。
正态分布,通常也称为高斯分布,具体是由它的平均值和标准偏差来定义的。平均值是在空间上来回变化位置进行分布的,而标准偏差控制着它的分布扩散范围。与其它的分布方式的主要区别在于,在所有方向上标准偏差是相同的。因此,通过高斯分布,我们知道数据集的平均值以及数据的扩散分布,即它在比较广的范围上扩展,还是主要围绕在少数几个值附近集中分布。
泊松分布与正态分布相似,但存在偏斜率。象正态分布一样,在偏斜度值较低的情况下,泊松分布在各个方向上具有相对均匀的扩散。但是,当偏斜度值非常大的时候,我们的数据在不同方向上的扩散将会是不同的。在一个方向上,数据的扩散程度非常高,而在另一个方向上,扩散的程度则非常低。
如果遇到一个高斯分布,那么我们知道有很多算法,在默认情况下高思分布将会被执行地很好,因此首先应该找到那些算法。如果是泊松分布,我们必须要特别谨慎,选择一个在空间扩展上对变化要有很好健壮性的算法。
降维这个术语可以很直观的理解,意思是降低一个数据集的维数。在数据科学中,这是特征变量的数量。请看下图:
上图中的立方体表示我们的数据集,它有3个维度,总共1000个点。以现在的计算能力,计算1000个点很容易,但如果更大的规模,就会遇到麻烦了。然而,仅仅从二维的角度来看我们的数据,比如从立方体一侧的角度,可以看到划分所有的颜色是很容易的。
通过降维,我们将3D数据展现到2D平面上,这有效地把我们需要计算的点的数量减少到100个,大大节省了计算量。
另一种方式是我们可以通过特征剪枝来减少维数。利用这种方法,我们删除任何所看到的特征对分析都不重要。
例如,在研究数据集之后,我们可能会发现,在10个特征中,有7个特征与输出具有很高的相关性,而其它3个则具有非常低的相关性。那么,这3个低相关性的特征可能不值得计算,我们可能只是能在不影响输出的情况下将它们从分析中去掉。
用于降维的最常见的统计技术是PCA,它本质上创建了特征的向量表示,表明了它们对输出的重要性,即相关性。PCA可以用来进行上述两种降维方式的操作。
过拟合和欠拟合是用于分类问题的技术。例如,我们有1种分类的2000个样本,但第2种分类只有200个样本。这将抛开我们尝试和使用的许多机器学习技术来给数据建模并进行预测。那么,过拟合和欠拟合可以应对这种情况。
请看下图:
在上面图中的左右两侧,蓝色分类比橙色分类有更多的样本。在这种情况下,我们有2个预处理选择,可以帮助机器学习模型进行训练。
欠拟合意味着我们将只从样本多的分类中选择一些数据,而尽量多的使用样本少的分类样本。这种选择应该是为了保持分类的概率分布。我们只是通过更少的采样来让数据集更均衡。
过拟合意味着我们将要创建少数分类的副本,以便具有与多数分类相同的样本数量。副本将被制作成保持少数分类的分布。我们只是在没有获得更多数据的情况下让数据集更加均衡。
完全理解为什么在我们使用贝叶斯统计的时候,要求首先理解频率统计失败的地方。大多数人在听到“概率”这个词的时候,频率统计是首先想到的统计类型。它涉及应用一些数学理论来分析事件发生的概率,明确地说,我们唯一计算的数据是先验数据(prior data)。
假设我给了你一个骰子,问你掷出6点的几率是多少,大多数人都会说是六分之一。
但是,如果有人给你个特定的骰子总能掷出6个点呢?因为频率分析仅仅考虑之前的数据,而给你作弊的骰子的因素并没有被考虑进去。
贝叶斯统计确实考虑了这一点,我们可以通过贝叶斯法则来进行说明:
在方程中的概率P(H)基本上是我们的频率分析,给定之前的关于事件发生概率的数据。方程中的P(E|H)称为可能性,根据频率分析得到的信息,实质上是现象正确的概率。
例如,如果你要掷骰子10000次,并且前1000次全部掷出了6个点,那么你会非常自信地认为是骰子作弊了。如果频率分析做的非常好的话,那么我们会非常自信地确定,猜测6个点是正确的。同时,如果骰子作弊是真的,或者不是基于其自身的先验概率和频率分析的,我们也会考虑作弊的因素。
正如你从方程式中看到的,贝叶斯统计把一切因素都考虑在内了。当你觉得之前的数据不能很好地代表未来的数据和结果的时候,就应该使用贝叶斯统计方法。
转载地址:http://lpvdi.baihongyu.com/