数据探索是数据分析工作必不可少的环节。主要的目的包括
- 了解数据内容、数据结构
- 锁定重要特征变量
- 识别离群点、异常数据
了解数据格式,分布情况是决定采用什么数据指标、什么方法模型进行分析的基本前提。
此外数据质量决定了分析质量所能达到的上限,事先掌握数据问题并予以解决,是分析前的必要工作。如果指望通过分析算法来决绝所有数据问题,结果注定是失败的。
而基本的探索方法,可以分为绘图方法以及量化方法。
根据数据格式绘制数据的原始图像,能帮助了解数据全貌,看看有没有什么规律。而一些统计图也同样大有帮助。通过对比,往往能发现不同类别数据之间的差异和相同点。量化方法也是一样,看看数据的统计指标有没有什么特点,数据的取值范围,分布情况,变量间的相关性。都能帮助我们了解数据情况。
数据识别
首先当然要查看数据都包含那些属性,分别是什么数据类型。
分清什么数据是输入维度,什么数据是输出维度。还要注意哪些数据是数值的,哪些是非数值的。一般非数值数据的含义多为标签,或一些序号类数据。标签数据多具有实际含义,如上图中的ocean_proximity维度,共有5种不同值,分别表示离海的远近程度。而序号类数据,如员工编号,可能含有字母,不具备实际含义。
由于分析算法往往需要输入输出为数值数据,对于类别数据则需要进行标签化处理转换为数字。各种分析工具中也会提供类似LabelEncoder、StringToLable这样的方法,来转换标签。
或采用One-Hot Encoding进行编码,得到稀疏表示。
数据分布
了解了数据中所包含的属性,还要对各属性下数据的数据量级和分布情况有一个大体的了解。一般分析工具数据对象都有describe方法,会发挥各数值属性的最大最小值、平均值、标准差、各分位数等信息。
通过画图了解各属性数据的分布情况则更直观一些。
对于时间序列数据,要按时间排序归途,注意观察是否存在周期性特征。
除了单个属性的分布,属性之间的关联性也是需要了解的。
对于连续性的数值变量之间的关系,通过散点图(scatter)观察变量之间是否存在相关性。
对于存在线性关系的变量,可通过相关系数来度量它们的相关程度。相关性是一个大于-1小于1的值。-1表示强负线性相关,+1表示强正线性相关,0则意味着不相关。当然相关系数无法测量非线性的相关性,要配合数据分布的散点图予以识别。
类别变量之间的关系则可通过总数/占比的二维表格来反映。行和列分别表示一个变量,每一个(row,column)为总数或者占比的值。
而对于类别变量和连续变量之间的关系,则可以按类别变量分类绘制连续变量的分布,进行对比。
对于可排序(时序,分数、程度度量等等)数据的情况,可通过Spearman相关系数进行评价。
相关性分析了解数据之间的规律,有助于提炼一些有用的线索。具有较明显相关性的数据,引导你多在它们中思考问题的内在逻辑。也可能说明其中一个数据是多余的,那么在给算法提供数据之前,就将其去除。
组合数据
了解了数据的基本情况后,还应该尝试多属性的组合,得到新的有价值的数据,甚至是与目标数值关联性更强的数据。
并且,重要的是,要意识到数据探索到这里不必非常完善,随着后续算法分析发现新的规律,可能启发你去尝试新的数据组合。这可以是一个交互的过程。
为分析准备数据
在进行了基本的数据探索后,就可以为分析准备数据了。根据数据探索,确定哪些数据更可能对分析问题有帮助,将它们哪来用作输入。
而用于分析的输入数据要保证数据质量,这就需要进行属于预处理和特征工程的工作了。缺失值处理,异常值检验,以及归一化标准化的工作,都是必要的。
数据探索是一个比较开发的过程,往往需要不断的尝试和创新。这里只是试图总结一些基础技术和思路,在实际中还是要根据实际问题具体考虑。
网友评论