基于R的数据挖掘方法与实践(1)——数据准备
1、数据检查
在数据分析的过程中,质量控制阶段占据重要地位。通过多角度审视原始记录信息来源及内容完整性,并对可能存在偏差的数据进行核实确认。
1.1 数据类型
查看数据的构成与形态,尤其是各列的属性。
> library(MASS)
> data(ChickWeight)
> str(ChickWeight)
Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame': 578 obs. of 4 variables:
$ weight: num 42 51 59 64 76 93 106 125 149 171 ...
$ Time : num 0 2 4 6 8 10 12 14 16 18 ...
$ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
$ Diet : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
- attr(*, "formula")=Class 'formula' language weight ~ Time | Chick
.. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
- attr(*, "outer")=Class 'formula' language ~Diet
.. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
- attr(*, "labels")=List of 2
..$ x: chr "Time"
..$ y: chr "Body weight"
- attr(*, "units")=List of 2
..$ x: chr "(days)"
..$ y: chr "(gm)"
1.2 数量检查
当样本数量偏少时会制约对结果进行合理解释的能力;反过来说如果样本数量过多可能导致统计结果看似显著但实际上缺乏实际应用价值。
1.3质量检查
1.3.1数据的集中趋势
数据集中趋势的衡量方法包括平均数、中位数、众数、偏态系数、峰态系数等。
1.3.2数据的变异程度
数据的变异程度可以用标准差、四分位距、变异系数等进行衡量。
该psych包中的describe()函数可用于数据验证。它能够计算非缺失观测的数量以及均值等关键统计指标。这些指标包括标准差(standard deviation)、中位数(median)以及截尾均值(trimmed mean)等参数。\n此外,在提供上述基本统计信息的同时,默认还会计算绝对中位差(median absolute deviation, MAD)、最小值(minimum)和最大值(maximum)的信息。\n最后,在提供这些描述性统计数据的同时,默认还会计算出均方根误差(root mean squared error, RMSE)。
> library(psych)
> describe(ChickWeight)
vars n mean sd median trimmed mad min max range skew kurtosis se
weight 1 578 121.82 71.07 103 113.18 69.68 35 373 338 0.96 0.34 2.96
Time 2 578 10.72 6.76 10 10.77 8.90 0 21 21 -0.02 -1.26 0.28
Chick* 3 578 26.26 14.00 26 26.27 17.79 1 50 49 0.00 -1.19 0.58
Diet* 4 578 2.24 1.16 2 2.17 1.48 1 4 3 0.31 -1.39 0.05
定义function,用以求得众数:
> Mode <- function(x)
+ {
+ return(as.numeric(names(table(x))[table(x) == max(table(x))]))
+
+ }
> varNames = colnames(ChickWeight)
> for (i in 1:ncol(ChickWeight))
+ {
+ print(varNames[i]); print(Mode(ChickWeight[, i]))
+ }
[1] "weight"
[1] 41
[1] "Time"
[1] 0 2
[1] "Chick"
[1] 13 9 20 10 17 19 4 6 11 3 1 12 2 5 14 7 24 30 22 23 27 28 26 25 29 21 33 37 36 31 39 38 32 40 34 35 45 43 41
[40] 47 49 46 50 42 48
[1] "Diet"
[1] 1
1.3.3数据探索与可视化
(1)盒须图
盒须图也被称作箱线图,在数据分析中主要用来反映数据分布的基本情况。其中中间50%的数据集中在盒内部分,在这种情况下如果盒子长度越大,则表明数据分布越分散。此外这些延伸出去的线条则主要用于标记那些远离常规的数据点(即离群值)以及极端情况下的异常数值(极端值)。通常当处于1.5至3倍四分位间距(IQR)范围内的观测点被视为普通波动而超出此范围的数据则被认为是可能存在的特殊现象或异常数值
boxplot(ChickWeight$weight)

(2)折线图
折线图能够体现数据分布的变化情况。用户可通过折线上升和下降这两种情况观察到序列的具体变动,并推断出数值的具体变化情况。
> ChickWeightPart = ChickWeight[1:12, ]
> plot(ChickWeightPart$weight,ChickWeightPart$Time,type="o",xlab="Time",ylab="Chick Weight",col="red",main="Chick Weight by Time",pch=c(15))

(3)散点图
散点图能够通过观察点集的疏密程度、延伸趋势以及空间布局来揭示各变量间的关系规律,在回归建模过程中,通常会将散点图设定为筛选自变量子集合的重要验证工具,并可辅助判断响应变量与解释变量间的关联性质。
> plot(ChickWeightPart$weight, ChickWeightPart$Time)

1.4 数据清理
数据在使用前可能存在以下问题:
(1)不正确的数据
验证数据的准确性的一种方法是首先明确其有效区间。例如一个学生的身高测量为5011厘米显然超出了合理范围
(2)不一致的数据
由于各来源的数据属性可能存在差异,在数据表达形式、比例定义方式或编码方式上也存在差异,并由此导致数值或字段出现不一致的情况。例如,在称重记录过程中,有的设备会采用kg为单位记录重量值而有的则采用ton作为单位进行标示。在使用这些数据时,则需先对这些数值进行转换以达到统一。
(3)重复的数据
在数据库数据表的操作中,在实际应用中经常会遇到两组完全相同的记录;对于这类情况下的数据,请采取措施删除其中一个副本以避免冗余信息的存在。
(4)冗余的数据
数据冗余主要指那些意义相同或相互之间存在明确转换关系的数据类型。例如,在一个数据集中,如果同时包含了学生的出生日期和年龄信息,则可以认为其中一项信息(如年龄)属于冗余数据并予以剔除。这是因为从出生日期可以推算出相应的学生年龄。
(5)遗漏值
在许多情况下缺失值可能出现。举例来说,在一项调查中被调查者未填写某些数据就是一个例子,在数据录入过程中可能出现遗漏的情况,在数据采集设备故障导致数据缺失的情况下也可能出现,在数据存储过程中出现遗失的情况也会出现等。处理缺失值的方式取决于具体情况。
通过删除该观测值来解决缺失问题是一种较为直接的方法。然而,在数据缺失比例较高的情况下,则可能导致大量数据丢失而无法完成后续分析任务。
ii) 人工填写缺失值。由人工根据主观判断填补缺失值的过程较为繁琐且耗时耗力;当缺失数据较多时,则不建议采用这种方法
iii) 以全局常数填充缺失值。比如将所有缺失值统一以"9999"进行替代,但这种方法仅能弥补部分数据输入的不足,并不能揭示遗失属性所蕴含的信息
iv) 采用属性均值进行处理。对于存在缺失的数据项,在计算时将被字段均值替代缺失值这一做法虽然简便易行但存在明显的局限性其不足之处在于缺乏客观依据具体而言当原始数据包含类别特征或等级信息时这种方法可能导致估计结果出现偏差
v) 用同一类别的所有样本平均值填充遗漏值。
vi) 采用数据挖掘模式进行缺失值填补。回归分析等方法均可用于填补缺失值。
(6)噪声
噪声体现了一个数据分析中的随机偏差或外界干扰的表现形式。这些偏差与干扰通常源于人为因素或是机械设备所导致的结果。
在面对带噪的数据时,在原始数据分析中不存在任何随机偏差的情况下,
通过相应的去噪方法能够有效地去除这些干扰。
如果原始数据分析本身就存在随机偏差,则可采用以下几种降噪技术来减弱其对结果的影响。
i) 分箱法
分箱法基于邻近数值进行局部平滑保存至同一箱子中的数据。按照数据排序结果进行处理后,在线性排列的基础上依次分配至预先确定的箱体中。分配策略可选包括均匀区间划分(Equal Width)和均匀样本分布(Equal Frequency)两种主要方法。随后分别计算每个箱体内均值(Mean)、中间趋势(Central Tendency)以及极端情况(Extremes)作为统计数据用于后续的数据处理过程。
ii) 数据配适
通过建立一个新的函数模型来使数据趋于光滑,并且使用简单线性回归基于一个解释变量预测目标变量。
(7)离群值
当某一批次的数据明显偏离其他数值分布范围时,在统计学中将其视为异常现象;以班级为例,在某一学习阶段的学生身高普遍集中在140至160厘米之间(cm),但有几位同学的身高突破200厘米(cm),则其体长数值则被定义为离群值(outliers)。由于离群值的存在可能对数据分析结果产生显著影响(尤其是在线性回归模型中),因此建议在开展数据分析前需对离群值进行剔除或修正处理。
i) 直接删除
在遇到因仪器或工具引发的误判情形下,在能够明确判定数据明显失准的情形下,则可考虑将这些数据予以剔除。
ii) 用其他数值替换,将数据范围归一化
当数值字段存在缺失值或为非数字类型的数据时,则假设所处理的数据集能够较好地反映整体情况时,则可以考虑用其他可用的数据进行替代。
iii) 聚类分析
在聚类分析中可以识别出离群数据,在此过程中将具有相似特征的数据归为同一群体。随后通过评估这些数据的价值,并决定是否移除或保留它们。
1.5 数据转换
1.5.1 数据值转换
(1)归一化
归一化是指通过比例分配将属性数据纳入一个特定区间内。归一化能够防止较大的初始值域与较小的初始值域之间相互比较的情况以及权重过大带来的问题。
基于极小值与极大值的比例缩放是一种常见的归一化技术。该方法的主要作用是对原始数据进行线性变换。具体而言,在这种情况下,我们假设minXA和maxXA分别代表属性A的最小观测值与最大观测值,其计算公式如下:
X’ =(X - minXA)*(newmaxXA - newminXA)/(maxXA - minXA) + newminXA
(2)标准化
数据标准化其主要依据是属性A的平均值和标准差这一指标。经过标准化处理后,A的值X将转换为Z值,并按照以下公式计算结果为Z:
Z = (X- avgXA)/SA
其中,avgXA和SA分别为属性A的平均值和标准差。
1.5.2 数据类型转变
(1)离散型数据转成连续型数据
将离散型数据转换为连续型数据需要融入领域知识来设定离散值之间的距离或相似度
(2)连续型数据转成离散型数据
通过将原始数据按照数值大小进行排序处理后,并依据设定的标准对原始数据进行分类处理以实现离散化操作。典型的离散化过程包含四个步骤:i) 对原始数据按照数值大小进行排序处理;ii) 根据设定的标准对原始数据进行分类处理以实现离散化操作;iii) 完成分类处理后需判断是否满足终止条件进而完成整个过程的操作流程。
