大数据导论第二章——数据预处理与特征工程

时间:2024-04-13 18:03:03

一、数据预处理

  • 数据预处理的目标*

数据预处理的目标就是要从数据分析要解决的问题出发,产生高质量的、能够满足分析需求、提高分析质量的数据集。
从现实生活中收集到的原始数据都是低质量的数据集,会存在数据缺失、有噪音等问题;而用低质的数据直接进行分析得到的分析结果也是低质的。为了得到可靠的分析结果,首先得有高质量的数据集,因此数据预处理的目标就是得到高质量的数据集。

  • 评价数据集的指标:(从数据收集与数据处理两个角度来确定评价指标)

数据收集
适用性。数据必须适用于我们所研究问题。比如研究儿童身高和年龄的关系,但数据集却只有儿童的体重和年龄,那么问题是不可能解决的。
时效性。数据集的价值会随着时间的推移而降低,我们进行数据分析的目的就是为了将数据中隐含的价值表达出来,对现在或者将来进行指导,所以数据集必须有较高的时效性,分析才有意义。
准确性。数据要真实可靠,只有极少或没有错误值。
全面性。不管是数据量还是特征量都能满足分析需求,比如研究儿童身高和年龄的关系,那么数据集就必须有身高和年龄这两个特征,并且每一年龄段的数据量不能太少
可扩展性。数据集是可扩展的,不能是一成不变的,随着时间的推移我们会收集到更多的数据,而这些新的数据可以被很容易的加入到现有数据集中。
数据处理:
唯一性。数据不能有重复,比如研究公司员工收入时特征中既有月收入又有年收入,这两个特征的数据就重复了。
规范性(一致性)。数据的格式、单位必须统一,比如研究儿童身高和年龄的关系,身高对应的数据就必须保证单位一致,不能既有厘米(cm)又有米(m)。
完整性。数据集没有缺失值和空行。

  • 数据清洗

数据清洗是数据预处理的第一步,内容包括:数据格式化(一致性)、缺失值处理(完整性)、异常值处理(准确性)、噪声数据处理。
数据格式化,通过统一格式,统一单位等格式化操作来使数据集满足规范性。
例:原始数据集:
编号 出生日期 身高
1 2001-1-1 180cm
2 20011001 1.7m
3 10-20-2009 1.6m
格式化数据后
编号 出生日期(yyyymmdd) 身高(cm)
1 20010101 180
2 20010101 170
3 20091020 160
缺失值处理,通过填充删除或者重新获取等方法,使数据集具有完整性。具体使用哪种方法处理缺失值,主要从两个方面考虑:属性重要度和缺失率,下图中体现了不同重要度和缺失率的缺失值处理方法。

大数据导论第二章——数据预处理与特征工程

对于重要度高缺失率低的数据,一般会进行缺失值填充。缺失值填充的方法有:
利用同一属性的其他值的计算结果进行填充。对数值型数据填充可以用均值、众数等方法,特别的如果数据前后有联系的话(比如时间序列数据),可以使用最近数据进行插值进行填充;对非数值型数据,可以用中位数、众数等进行填充。
例:原始数据集,该数据集为汽车行驶过程中GPS系统自动记录到的行驶速度数据.表格中很明显可以看出2017/12/18 13:42:13.000的数据缺失了,但由于车速前后有联系间隔时间也很短,因此我们可以利用前后车速均值进行插值。
例:原始数据集:
时间 GPS车速
2017/12/18 13:42:12.000. 4.5
2017/12/18 13:42:14.000. 6.9
2017/12/18 13:42:15.000. 9
利用前后数据进行缺失值填充后
时间 GPS车速
2017/12/18 13:42:12.000. 4.5
2017/12/18 13:42:13.000 5.7
2017/12/18 13:42:14.000. 6.9
2017/12/18 13:42:15.000. 9
利用其他属性中包含的相同信息进行填充。例如数据集中同时包含性别属性与身份证号属性,如果某个体的性别属性缺失但身份证号是存在的,我们就可以通过身份证号倒数第二位的数字奇偶性来对缺失的性别属性进行填充。
异常值处理,通过对异常值进行处理,使数据集具备准确性。
异常值的判定与处理往往需要结合实际根据经验确定。常用的异常值判定方法有
3σ准则:在数据近似服从正态分布的情况下,如果数据与均值之间的绝对距离大于3倍标准差,即 [-∞,μ-3σ]和[μ+3σ,+∞],我们把这一部分值称为是异常值。因为数据在满足正态分布时,一般认为出现3倍标准差以外数据的可能性很小,所以把这一部分数据当作异常值。
箱形图:箱形图是利用数据的上下界、上下四分位数、中位数这些基本信息绘制出的图形,我们把超过上下界的值称为异常值。
常用的异常值处理方法有;删除含有异常数据的记录、将异常值看作缺失值进行处理、利用平均值、众数等方法进行修正、不做处理。对于不做处理的理解为:除去一些十分明显的异常值外(比如,一个人的年龄为300岁、体重2000千克),其他异常值都是我们利用一些判定方法确定的,所以该数据并不一定是异常值,有时候处理了反而会使数据成为错误值。

二、特征工程

  • 1.特征的定义

特征:是研究个体某方面的数学表现,是用来描述研究个体某些方面的属性或变量,此外特征还必须具备可重复性与稳定性。可重复性是指,在不同场景下收集到的研究个体特征应该是相同的;稳定性是指只有不会轻易改变的属性才能成为特征。比如在研究人时,发色这一特征就必须指的是天生的发色,而不能是某一时间段内这个人的发色。
依据特征与我们的研究目的的相关性,可以将特征分为三类:相关特征、无关特征和冗余特征。

  • 2.特征工程的动机与目标:

在整个数据分析的过程中特征工程处于数据与模型之间,所以特征工程的目标就是要在数据中针对我们的研究问题提取出最精简的特征,从而提高模型准确率、降低计算成本。

  • 3.特征选择

特征选择的主要作用是在原有特征集中删除无关或冗余特征,最后得到的结果是原始特征集的子集,特征数量会减少,属于数据降维。
特征选择一般遵循两个原则:样本中特征是否发散以及特征与目标的相关性。
特征选择的方法:
[1] 过滤型,与模型训练无关。例如方差选择法:选择方差大于预先设定阈值的特征,或者按照方差从大到小选择n个特征(n为预先设定的特征个数)。
[2] 包裹型,模型训练与特征选择同时进行。例如后退法,后退法的主要思想是先将特征一次性全部进入模型,再一个一个删去,通过判断哪个特征对模型效果影响最小,则删去;依此往复,直到达到停止条件为止。
[3] 嵌入型,模型训练与特征选择同时进行。该方法且选用的模型必须对每一个特征都会产生一个权值系数,来对特征重要度进行量化,供我们做出选择。例如为模型的损失函数加入正则惩罚项、利用回归分析等方法建立模型。

  • 4.特征提取

特征提取是指通过函数映射从原始特征中提取更少的新特征的过程,最终我们会用提取到的新特征代替原始特征,特征会减少,属于数据降维。特征提取可以将包含在特征内部的无关信息删除。
特征提取的常用方法
主成分分析(PCA):PCA 将 n 维输入数据缩减为 r 维,其中 r<n。简单地说,PCA 实质上是一个基变换,使得变换后的数据有最大的方差,也就是通过对坐标轴的旋转和坐标原点的平移使得其中一个轴(主轴)与数据点之间的方差最小,坐标转换后去掉低方差的正交轴,得到降维数据集。如下图所示,绘制包含两个原始特征(x,y)的样本散点图,我们利用主成分分析,对坐标轴进行转换,得到两个新的特征(x’,y’)可以发现转换后样本点在x’轴上方差很大,但在y’轴上波动很小即方差很小,利用特征选择所遵循的原则(样本在特征是否发散)可以将新特征y’删去,从而达到降维的效果。

主成分分析的步骤;对原始数据中心化,让每一个特征的样本均值都为0,这样可以保证Var[X]=1/(m-1)*X’X,极大的简化了计算过程;计算协方差矩阵,并做正交变换;将特征向量按照对应的特征值从大到小进行排序;确定主成分。

  • 5.特征生成

特征生成是从原始特征中推断或构建额外特征的过程,最终特征会增加。
特征生成的常用方法
[1] 时间戳处理
时间戳属性通常需要分离成多个维度比如年、月、日、小时、分钟、秒钟。
例如,原始数据集中的时间特征如下
时间 GPS车速
2017/12/18 13:42:12.000. 4.5
2017/12/18 13:42:14.000. 6.9
2017/12/18 13:42:15.000. 9
经过时间戳处理后
年 月 日 时 分 秒 GPS车速

  • 12 18 3 42 12 4.5
  • 12 18 3 42 14 6.9
  • 12 18 3 42 15 9
    [2] 分解类别属性(one-hot)
    一些属性是类别型而不是数值型,如果我们只是将类别属性转换成一个标量值,例如对于颜色属性用{1,2,3}表示{红,绿,蓝},这种方法存在两个问题,首先,对于一个数学模型,这种方法某种意义上意味着红色和绿色比红色和蓝色更“相似”(因为|1-3| > |1-2|),这样可能会在之后训练模型时对模型产生误导;其次,这种标量值的做法还会导致统计指标(比如均值)无意义,假如数据集包含相同数量的红色和蓝色,但是没有绿色的,但是颜色的均值恰好为2(绿色),这个均值毫无意义。所以我们需要对类别属性进行分解,分解后的均值就可以代表该特征出现的概率。
    例:原始数据集,用{1,2,3}表示{红,绿,蓝}
    花朵编号 花色
    1 1
    2 2
    3 3
    分解类别属性“花色”后
    花朵编号 花色是否为红色 花色是否为绿色 花色是否为篮色
    1 1 0 0
    2 0 1 0
    3 0 0 1
    [3] 分箱/分区(数值型转类别型)
    有时候,将数值型属性转换成类别型更有意义。将一定范围内的数值划分成确定的区间,使算法减少噪声的干扰。但这种方法只有该属性的数值落入一个区间时能够呈现出共同的特征,的情况下才有意义。分箱操作也能减小数据的微小错误带来的影响。比如绘制直方图就用到了分箱思想。
    [4] 交叉特征(组合分类特征)
    交叉特征是特征工程中非常重要的方法之一,它将两个或更多的类别属性组合成一个。数学上来说,这种方法是对类别特征的所有可能值进行交叉相乘。假如拥有一个特征A,A有两个可能值{A1,A2}。拥有一个特征B {B1,B2}、。然后,A&B之间的交叉特征如下:{(A1,B1),(A1,B2),(A2,B1),(A2,B2)},这样就得到了组合特征,每个组合特征都是着A和B协同作用的结果。比如(经度,纬度)就是交叉特征应用的典型例子,一个相同的经度对应了地图上很多的地方,纬度也是一样。但是一旦将经度和纬度组合到一起,它们就代表了地理上特定的一块区域。
    [5] 特征缩放
    包括数据标准化、归一化等方法。当某些特征和其他特征相比具有较大的跨度值时采用此方法。例如,将一个人的收入和他的年龄进行比较,年龄一般不会超过100岁,但收入可以达到几十万甚至几百万,两个特征数值上相差太大。通过缩放可以避免某些特征比其他特征获得大小非常悬殊的权重值。
    特征选择、特征提取、特征生成的区别
    设原始特征集为A1,A2,A3,A4,A5,特征提取是从五个原始特征中选择A1,A2,A3,特征提取是利用五个原始特征得到新特征B1,B2,B3,特征生成是在原始特征的基础上扩充特征集,得到新的特征集A1,A2,A3,A4,A5,A1’,A2’.
    大数据导论第二章——数据预处理与特征工程
  • 6.数据约简

在数据集成与清洗后,我们能够得到整合了多数据源同时数据质量完好的数据集。但是,集成与清洗无法改变数据集的规模。我们依然需通过技术手段降低数据规模,这就是数据约简(Data Reduction)
数据约简的目的:在保证数据完整度的前提下,缩小数据挖掘所需要的数据规模,从而减少数据挖掘所需要的时间,提高数据挖掘处理精度,归纳出精简的数学模型;还能降低存储数据的成本。
数据约简可以分为维度约简与数量约简,常用方法如下:
[1] 维度约简。作用:减少所需自变量的个数。(与特征选择和特征提取类似)
常用方法:直接删除不相关、弱相关、以及冗余属性,找到最小特征集(特征选择);特征合并创建新特征。代表方法:主成分分析(把原始数据投影到较小的空间)(特征提取)
[2] 数量约简。作用:用较小的数据集替换原始数据。
代表方法为聚类、抽样等。聚类算法将数据进行分群,用每个群中的代表来替换实际数据,以达到数据规约的效果;抽样方法是选取随机样本,用小数据代替大数据,包括简单随机抽样、整群抽样、分层抽样等。

  • 7.数据变换

数据变换是指将数据从一种表示形式变为另一种表现形式的过程。
数据变换目标:消除量纲,方便置信区间分析或者可视化 (缩放数据,对称分布);为了获取更容易解释的特征 (获取线性特征);降低数据复杂度;方便使用简单的回归模型。
标准化的常用方法
[1] 零均值化。该方法是基于原始数据的均值(μ)进行数据标准化,将A的原始值x使用中心化到x’,零均值化后的数据均值为0,主成分分析就应用了此方法。公式如下:
x^’= x-μ
[2] Min-max 标准。该方法是基于原始数据的最小值和最大值进行数据标准化。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化到x’,此方法将原始数据全部映射到区间[0,1]。其公式为:
x^’=(x-minA)/(maxA-minA)
[3] 归一化。该方法是基于原始数据的和(∑▒x_i )进行的数据标准化,将A的原始值x使用归一化到x’。此方法处理过后的数据之和为1。公式为:
x^’=x/(∑▒x_i )
[4] 中心化。这种方法基于原始数据的均值(μ)和标准差(std)进行数据的标准化,将A的原始值x使用中心化到x’。此方法处理过的数据均值变为0,方差变为1。公式为:
x^’=(x-μ)/std
偏态分布的处理方法
[1] 对数变换:适用于高度右偏的数据,右偏分布是因为样本数据中出现了过大的值,由于对数函数在x很大时增长率很小,因此对右偏数据进行对数变换可以在保持数据大小关系的条件下将过大的值映射为一个较小的值。
[2] 平方根变换:适用于轻度右偏的数据,与对数函数相似,但平方根函数的增长率要比对数函数大一些。
[3] 指数变换,适用于高度左偏分布,与右偏分布相反,左偏分布是因为样本数据中出现了过小的值,因此我们利用对数函数的反函数指数函数,对数据进行处理。
[4] 反正弦变换:适用于中度偏态的数据
连续变量离散化的方法:
[1] 等宽离散化:制定定长的间隔将数据放入对应的区间内,绘制直方图就采用 了这种方法。该方法缺点在于对极端值十分敏感,一旦出现了一个极端值就会使得宽度被拉长,但数据集中在前面的区间内,后面的区间几乎没有数据。
[2] 等频离散化:制定一个频率将数据进行分箱,很明显每个箱子内的数据量是一样的(都等于总数据量*设定的频率),该方法的缺点是两个相同的数据可能会被放入不同的箱子中。
[3] 利用聚类进行离散化,制定聚类数目K作为分箱数量,K-均值算法首先从数据集中随机找出K个数据作为K个初始区间的重心;然后,根据这些重心的欧式距离,对所有的对象聚类:如果数据x距重心Gi最近,则将x划归Gi所代表的那个区间;然后重新计算各区间的重心,并利用新的重心重新聚类所有样本。逐步循环,直到所有区间的重心不再随算法循环而改变为止。

三、补充知识

  • 回归与拟合的区别

拟合(fitting)已知一些点去寻找一个曲线或曲面去尽可能的描述这些点的变化规律。
回归(regression)中有自变量(X)与因变量(Y)之分,回归就是要找到自变量与因变量的之间的定量关系式,即确定Y=f(X)中的映射关系f,根据f中的系数去用自变量解释因变量。
所以回归更偏向统计学,重点是要得到映射关系f,利用模型参数去解释自变量与因变量的关系;而拟合偏向与机器学习,更注重拟合精度,因此可能会牺牲模型的可解释性去追求更高的精度。