一、引言
在机器学习项目中,数据探索是至关重要的一步。它不仅是模型构建的基础,还是确保模型性能稳定、预测准确的关键。数据探索的过程中,数据质量和数据特征分析占据了核心地位。数据质量直接关系到模型能否从数据中提取有效信息,而数据特征分析则决定了模型能否准确捕捉数据的内在规律和模式。
高质量的数据能够减少模型训练时的噪声干扰,提高模型的泛化能力。相反,如果数据中存在大量错误、重复或缺失的值,模型的性能将受到严重影响。同样,对数据特征进行深入分析,有助于理解数据的分布、相关性以及潜在的规律,从而为模型选择和特征工程提供有力支持。
因此,在机器学习项目中,进行充分的数据探索,特别是对数据质量和数据特征进行深入分析,对于提高模型性能具有不可替代的作用。
二、数据质量分析
数据质量分析是数据挖掘过程中不可或缺的一环,它位于数据准备的核心阶段,为数据预处理提供了关键的指导,更是确保数据挖掘分析结论有效性和准确性的基石。没有坚实可靠的数据支撑,数据挖掘所构建的模型将如同空中楼阁,缺乏实际价值和应用意义。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。在常见的数据挖掘工作中,脏数据包括如下内容。
- 缺失值。
- 异常值。
- 不一致的值。
- 重复数据及含有特殊符号(如#、¥、*)的数据。
本小节将主要对数据中的缺失值、异常值和一致性进行分析。
2.1 缺失值分析
数据的缺失是一个普遍存在的问题,主要表现为记录整体的缺失或记录中某个特定字段的信息缺失。这两种情况都可能导致分析结果的偏差。以下,我们将从缺失值产生的原因和其对分析的影响,以及如何处理这些缺失值等几个方面进行详细探讨。
-
缺失值可能产生的原因。有时,某些信息可能暂时无法获取,或者获取这些信息的成本过高,因此选择留空。另外,有些信息的缺失可能是由于人为疏忽,如输入时认为某些信息不重要、忘记填写或对数据理解有误等。同时,非人为因素也可能导致数据缺失,如数据采集、存储或传输过程中的故障。还有一种情况是,某些属性值对于某些对象来说本身就是不存在的,例如未婚者的配偶信息或未成年人的收入等。
-
缺失值对数据分析和挖掘的影响。首先,缺失值会导致大量有用信息的丢失,从而影响数据挖掘模型的准确性和完整性。其次,缺失值会使模型的不确定性增加,使得模型中的规律更难被准确捕捉和理解。最后,包含缺失值的数据可能会干扰建模过程,导致模型输出不可靠,从而影响决策的有效性。
针对缺失值的问题,我们需要进行仔细的分析和处理。通过简单的统计分析,我们可以了解哪些属性存在缺失值,以及每个属性的缺失程度。在处理缺失值时,我们可以选择删除存在缺失值的记录、对缺失值进行插补或保留缺失值不做处理等方法。具体选择哪种方法,需要根据数据的实际情况和分析目的来决定。
2.2 异常值分析
异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响; 重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。
异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。
- (1)简单统计量分析
可以先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理的范围。如客户年龄的最大值为199岁,则该变量的取值存在异常。
- (2)3
δ
\delta
δ原则
正态分布图根据正态分布的定义可知,数据点落在偏离均值正负1倍标准差(即sigma值)内的概率为68.2%;数据点落在偏离均值正负2倍标准差内的概率为95.4%;数据点落在偏离均值正负3倍标准差内的概率为99.6%。
所以,换个角度思考上文提到的概率值,如果数据点落在偏离均值正负2倍标准差之外的概率就不足5%,它属于小概率事件,即认为这样的数据点为异常点。同理,如果数据点落在偏离均值正负3倍标准差之外的概率将会更小,可以认为这些数据点为极端异常点。为使读者直观地理解文中提到的概率值,可以查看标准正态分布的概率密度图,如下图所示:
如果数据服从正态分布,在3
δ
\delta
δ原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。在正态分布的假设下,距离平均值3
δ
\delta
δ之外的值出现的概率为
P
(
x
−
μ
>
3
δ
)
≤
0.003
P(x-μ>3\delta)≤0.003
P(x−μ>3δ)≤0.003,属于极个别的小概率事件。
如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。
3
δ
\delta
δ原则使用案列:
# 读入外部数据
pay_ratio = pd.read_excel(r'C:\Users\Administrator\Desktop\pay_ratio.xlsx')
# 绘制单条折线图,并在折线图的基础上添加点图
plt.plot(pay_ratio.date, # x轴数据
pay_ratio.ratio, # y轴数据
linestyle = '-', # 设置折线类型
linewidth = 2, # 设置线条宽度
color = 'steelblue', # 设置折线颜色
marker = 'o', # 往折线图中添加圆点
markersize = 4, # 设置点的大小
markeredgecolor='black', # 设置点的边框色
markerfacecolor='black') # 设置点的填充色
# 显示图形
plt.show()
# 添加上下界的水平参考线(便于判断异常点,如下判断极端异常点,只需将2改为3)
plt.axhline(y = pay_ratio.ratio.mean() - 2* pay_ratio.ratio.std(), linestyle = '--', color = 'gray')
plt.axhline(y = pay_ratio.ratio.mean() + 2* pay_ratio.ratio.std(), linestyle = '--', color = 'gray')
# 导入模块,用于日期刻度的修改(因为默认格式下的日期刻度标签并不是很友好)
import matplotlib as mpl
# 获取图的坐标信息
ax = plt.gca()
# 设置日期的显示格式
date_format = mpl.dates.DateFormatter("%m-%d")
ax.xaxis.set_major_formatter(date_format)
# 设置x轴每个刻度的间隔天数
xlocator = mpl.ticker.MultipleLocator(7)
ax.xaxis.set_major_locator(xlocator)
# 为了避免x轴刻度标签的紧凑,将刻度标签旋转45度
plt.xticks(rotation=45)
- (3)箱型图分析
箱型图提供了识别异常值的一个标准:异常值通常被定义为小于 Q L − 1.5 I Q R Q_L-1.5IQR QL−1.5IQR或大于 Q U + 1.5 I Q R Q_U+1.5IQR QU+1.5IQR的值。 Q L Q_L QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小; Q U Q_U QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数Qu与下四分位数,之差,其间包含了全部观察值的一半。
箱型图依据实际数据绘制,没有对数据作任何限制性要求(如服从某种特定的分布形式),它只是真实直观地表现数据分布的本来面貌;另一方面,箱型图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性,如图所示。
2.3 一致性分析
数据不一致性是指数据之间存在矛盾或不相容的情况。如果直接对这类数据进行挖掘分析,那么得出的结果很可能与实际情况相悖,导致错误的结论。
在数据挖掘的流程中,数据不一致的问题通常出现在数据集成阶段。这往往是因为所挖掘的数据来源于多个不同的数据源,或者对于重复存储的数据没有进行同步更新。举个例子来说,假设有两张表都记录了用户的电话号码,但是当用户的电话号码发生变动时,如果只更新了其中一张表的数据,那么这两张表中的数据就会出现不一致的情况。因此,在进行数据挖掘之前,必须对数据进行清洗和整合,以确保数据的一致性和准确性。
三、数据特征分析
对数据进行质量分析以后,接下来可通过绘制图表、计算某些特征量等手段进行数据的特征分析。
3.1 分布分析
分布分析能揭示数据的分布特征和分布类型。对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表、绘制频率分布直方图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。
1.定量数据的分布分析
对于定量变量而言,选择“组数”和“组宽”是做频率分布分析时最主要的问题,一般按照以下步骤进行。
-
求极差:
极差是数据集中最大值与最小值之间的差值,它反映了数据的离散程度。通过计算极差,我们可以对数据集的波动范围有一个初步的了解。 -
决定组距与组数:
组距是指每个数据分组之间的间隔大小,而组数则是数据被分为多少个组。组距和组数的选择对于准确反映数据的分布特征至关重要。过小的组距和过多的组数可能导致信息过于繁琐,而过大的组距和过少的组数则可能掩盖数据的真实分布。因此,需要根据数据的实际情况和分析目的,选择合适的组距和组数。 -
决定分点:
分点是根据组距将数据集中的每个数值分配到相应的组中。分点的确定应确保每个数值都能被准确地归类到其所属的组中,以便后续的频率分布统计。 -
列出频率分布表:
频率分布表是将数据集按照分组进行统计,列出每个分组中的频数(即该分组中的数据个数)。频率分布表能够直观地展示数据的分布情况,便于后续的分析和比较。 -
绘制频率分布直方图:
频率分布直方图是根据频率分布表绘制的图形,它更直观地展示了数据的分布情况。在直方图中,每个分组的频数用矩形的面积表示,矩形的宽度表示组距,高度表示频数。通过直方图,我们可以快速地了解数据的分布形态、集中趋势和离散程度。
2.定性数据的分布分析
定性数据的分布分析主要关注数据的类别属性,通过分析不同类别的分布情况来揭示数据的内在特征。
-
数据分类:
首先,需要对定性数据进行分类,明确数据的类别属性。这些类别可以是根据问题的性质和研究目的自行定义的,也可以是已有的分类标准。 -
频数统计:
然后,对每个类别进行频数统计,即统计每个类别在数据集中出现的次数。频数统计有助于我们了解各类别在总体中的分布情况。 -
比例计算:
除了频数统计外,还可以计算各类别的比例,即每个类别的频数占总频数的百分比。比例计算能够更直观地展示各类别在总体中的相对重要性。 -
可视化展示:
为了更好地展示定性数据的分布情况,可以使用饼图、条形图等可视化工具进行展示。这些图形能够直观地展示各类别的比例和分布情况,便于分析和解释。
3.2 对比分析
对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。特别适用于指标间的横纵向比较、时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的步骤,只有选择合适,才能做出客观的评价,选择不合适,评价可能得出错误的结论。
对比分析主要有以下两种形式。
(1) 绝对数比较
绝对数比较是一种直接利用数值大小进行比较的方法,它侧重于分析不同数据组之间的实际数量差异。这种比较方式直观明了,能够清晰地展示各个数据组的具体数值,从而揭示它们之间的规模、水平或总量的差异。
(2)相对数比较
-
结构相对数:
结构相对数用于描述某一总体内部各组成部分所占的比重或分布状况。例如,在一份关于员工构成的报告中,结构相对数可以展示不同部门或不同职位的员工数量占总员工数量的比例,从而揭示员工构成的分布情况。 -
比例相对数:
比例相对数用于比较两个不同总体之间的数量关系。例如,比较两个城市的GDP增长率,可以通过计算它们的比例相对数来展示两个城市在经济增长方面的差异。 -
比较相对数:
比较相对数用于比较同一总体在不同时期或不同条件下的数量变化。例如,比较一个公司今年和去年的销售额,可以通过计算比较相对数来揭示销售额的增长或下降情况。 -
强度相对数:
强度相对数用于描述两个有联系的不同总体之间的数量对比关系。例如,在人口统计学中,强度相对数可以用于比较人口数量和土地资源之间的关系,从而揭示人口承载能力的状况。 -
计划完成程度相对数:
计划完成程度相对数用于评估实际完成数与计划完成数之间的比例关系。这种相对数常用于评估项目、计划或任务的完成情况,帮助决策者了解实际进度与预期目标之间的差距。 -
动态相对数:
动态相对数用于描述某一现象在不同时期的发展速度或变化程度。例如,计算一个国家近几年的GDP增长率,可以揭示该国经济发展的动态趋势。
3.3 统计量分析
统计量分析通常包括中心趋势统计量、散布程度统计量和分布形状统计量等几类。中心趋势统计量用于表示数据的集中趋势,如均值、中位数和众数等。均值是所有数值的总和除以数值的数量,它描述了数据的平均位置;中位数则是将一组数据从小到大排列后,位于中间位置的数值,特别适用于倾斜的数据集;众数则是数据集中出现频率最高的数值。
散布程度统计量用于衡量数据的离散程度,如标准差和四分位极差。标准差反映了每个数值与均值之间的平均差异,它越大,说明数据越分散;四分位极差则是上四分位数与下四分位数之差,它描述了数据集中间50%的数值的散布范围。分布形状统计量可以帮助我们了解数据的分布形态,如偏度和峰度。偏度描述了数据分布的不对称性,而峰度则反映了数据分布的尖锐程度。
3.4 周期性分析
周期性分析可以应用于多个时间尺度。在较长的时间尺度上,我们可以观察到年度性周期性趋势和季节性周期性趋势。例如,某些行业或产品的销量可能会随着季节的更替而呈现出明显的起伏变化。而在较短的时间尺度上,我们可以观察到月度、周度、天度甚至小时度的周期性趋势。这些短周期的波动可能受到多种因素的影响,如特定节假日、促销活动或日常工作生活的规律等。
3.5 贡献度分析
贡献度分析又称帕累托分析,它的原理是帕累托法则,又称20/80定律。同样的投入放在不同的地方会产生不同的效益。例如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润。
贡献度分析的核心在于通过一系列统计和数据分析技术,识别并量化各个因素或变量对总体目标的贡献。这通常涉及对数据的收集、整理、清洗和转换,以及应用适当的统计分析方法。在分析过程中,可能需要考虑多个因素之间的相互作用和相关性,以更全面地了解它们对总体目标的影响。
3.6 相关性分析
分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。
-
1.直接绘制散点图
判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图,如图所示。
-
2.绘制散点图矩阵
需要同时考察多个变量间的相关关系时,一一绘制它们间的简单散点图是十分麻烦的。此时可利用散点图矩阵同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关性,这在进行多元线性回归时显得尤为重要。
-
3.计算相关系数
为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的有Pearson相关系数、Spearman秩相关系数和判定系数。
( 1 ) Pearson相关系数
一般用于分析两个连续性变量之间的关系,其计算公式如下:
r
=
∑
i
=
1
n
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
∑
i
=
1
n
(
x
i
−
x
ˉ
)
2
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
r = \frac{\sum_{i = 1} ^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i = 1} ^n(x_i-\bar{x})^2\sum_{i = 1} ^n(y_i-\bar{y})^2}}
r=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2
∑i=1n(xi−xˉ)(yi−yˉ)
相关系数
r
r
r的取值范围:
−
1
≤
r
≤
1
-1 \leq r \leq 1
−1≤r≤1
{
r
>
0
为正相关,
r
<
0
为负相关
∣
r
∣
=
0
表示不存在线性关系
∣
r
∣
=
1
表示完全线性关系
\begin{cases} r > 0为正相关,r < 0为负相关 \\ \mid r \mid = 0 表示不存在线性关系 \\ \mid r \mid = 1 表示完全线性关系 \end{cases}
⎩
⎨
⎧r>0为正相关,r<0为负相关∣r∣=0表示不存在线性关系∣r∣=1表示完全线性关系
0
<
∣
r
∣
<
1
0 < \mid r \mid < 1
0<∣r∣<1表示存在不同程度线性关系:
{
∣
r
∣
≤
0.3
为不存在线性相关
0.3
<
∣
r
∣
≤
0.5
为低度线性相关
0.5
<
∣
r
∣
≤
0.8
为显著线性相关
∣
r
∣
>
0.8
为高度线性相关
\begin{cases} \mid r \mid \leq 0.3 为不存在线性相关 \\ 0.3 < \mid r \mid \leq 0.5为低度线性相关 \\ 0.5 < \mid r \mid \leq 0.8为显著线性相关 \\ \mid r \mid > 0.8 为高度线性相关 \end{cases}
⎩
⎨
⎧∣r∣≤0.3为不存在线性相关0.3<∣r∣≤0.5为低度线性相关0.5<∣r∣≤0.8为显著线性相关∣r∣>0.8为高度线性相关
( 2 ) Spearman秩相关系数
Pearson线性相关系数要求连续变量的取值服从正态分布。不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数,也称等级相关系数来描述。
其计算公式如下。
r s = 1 − 6 ∑ i = 1 n ( R i − Q i ) 2 n ( n 2 − 1 ) r_s=1-\frac{6\sum_{i = 1} ^n(R_i-Q_i)^2}{n(n^2-1)} rs=1−n(n2−1)6∑i=1n(Ri−Qi)2
对两个变量成对的取值分别按照从小到大(或者从大到小)顺序编秩,
R
i
R_i
Ri代表
x
i
x_i
xi的秩次,
Q
i
Q_i
Qi代表
y
i
y_i
yi的秩次,
R
i
−
Q
i
R_i-Q_i
Ri−Qi为
x
i
、
y
i
x_i 、y_i
xi、yi的秩次之差。
下表给出一个变量
x
(
x
1
,
x
2
,
.
.
.
,
x
i
,
.
.
.
,
x
n
)
x(x_1,x_2,...,x_i,...,x_n)
x(x1,x2,...,xi,...,xn)秩次的计算过程。
变量 x 秩次的计算过程 \bold{变量x秩次的计算过程} 变量x秩次的计算过程
x i x_i xi从小到大排序 | 从小到大排序时的位置 | 秩次 R i R_i Ri |
---|---|---|
0.5 | 1 | 1 |
0.8 | 2 | 2 |
1.0 | 3 | 3 |
1.2 | 4 | (4+5)/2=4.5 |
1.2 | 5 | (4+5)/2=4.5 |
2.3 | 6 | 6 |
2.8 | 7 | 7 |
因为一个变量的相同的取值必须有相同的秩次,所以在计算中采用的秩次是排序后所在位置的平均值。
只要两个变量具有严格单调的函数关系,那么它们就是完全Spearman相关的,这与Pearson相关不同,Pearson相关只有在变量具有线性关系时才是完全相关的。
在实际应用计算中,上述两种相关系数都要对其进行假设检验,使用t检验方法检验其显著性水平以确定其相关程度。研究表明,在正态分布假定下,Spearman秩相关系数与Pearson相关系数在效率上是等价的,而对于连续测量数据,更适合用Pearson相关系数来进行分析。
( 3 ) 判定系数
判定系数是相关系数的平方,用 r 2 r^2 r2表示;用来衡量回归方程对y的解释程度。判定系数取值范围: 0 ≤ r 2 ≤ 1 0≤r^2≤1 0≤r2≤1。 r 2 r^2 r2越接近于1,表明 x x x与 y y y之间的相关性越强; r 2 r^2 r2越接近于0,表明两个变量之间几乎没有直线相关关系。
五、总结
数据探索在机器学习的全过程中扮演着至关重要的角色。它是数据预处理的关键步骤,是模型构建的基础,更是确保模型性能稳定、预测准确的核心保障。通过对数据的深入探索,我们可以理解数据的结构、质量、特征分布以及与目标变量的关系,从而为后续的模型选择、特征工程以及参数调优提供有力的依据。
在数据质量分析阶段,我们特别关注了缺失值的处理。缺失值不仅可能影响模型的训练效果,还可能导致模型对数据的解释能力下降。因此,对缺失值的识别、原因分析和处理是数据探索中不可或缺的一部分。通过选择合适的填充方法或删除策略,我们可以有效地减少缺失值对模型性能的影响。
在数据特征分析阶段,我们利用统计描述、可视化工具以及相关性分析等方法,深入挖掘了数据中的有用信息。通过对特征与目标变量之间关系的探究,我们可以筛选出对模型性能有提升作用的特征,同时去除那些与目标变量无关或相关性较弱的特征,从而提高模型的预测精度和泛化能力。
此外,数据探索还有助于发现数据中的异常值和潜在模式。异常值可能是由于数据录入错误、测量误差或特殊事件引起的,如果不加以处理,可能会对模型的训练产生干扰。通过数据探索,我们可以及时发现并处理这些异常值,确保模型的稳定性和可靠性。
综上所述,数据探索是机器学习项目中的一项重要任务,它贯穿于整个项目流程,从数据收集、预处理到模型构建和评估,都离不开数据探索的支持。只有充分、深入地探索数据,我们才能更好地理解数据,从数据中提取有价值的信息,为机器学习模型的构建和优化提供坚实的基础。
注:
后面的【机器学习】数据探索—python主要的探索函数将重点介绍在数据探索阶段使用的功能函数;让我们一起来学习数据处理的步骤和功能函数,为机器学习的模型提升更有效的保障。