机器学习里数据预处理及特征工程总结

         机器学习里有一句名言:数据和特征决定了机器学习的上限,而模型和算法的应用只是让我们逼近这个上限。这个说法形象且深刻的提出前期数据处理和特征分析的重要性。这一点从我们往往用整个数据挖掘全流程60%以上的时间和精力去做建模前期的数据处理和特征分析也能看出。那么疑问来了,这超过60%时间和精力我们都用在哪了?本文基于以往的知识储备以及实际的项目经验,我做一个总结。

         主要包括三部分,一是获取数据、数据抽样,二是数据探索,三是数据预处理与清洗

一、 获取数据,数据抽样:如何保证取样数据的质量?是否在足够范围内有代表性?数据样本取多少合适?如何分类(训练集、测试集、验证集)等等。当要处理或者要分析的数据量比较大,而我们的计算机或者平台不支持开展全量数据分析时,利用抽样技术进行样本分析往往是一个好的主意,其中抽样技术有:

1.简单随机抽样(simple random sampling):将所有调查总体编号,再用抽签法或随机数字表随机抽取部分观察数据组成样本。

优点:操作简单,均数、率及相应的标准误计算简单。

缺点:总体较大时,难以一一编号。

2.系统抽样(systematic sampling):又称机械抽样、等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位,依次用相等间距从每一部分各抽取一个观察单位组成样本。

优点:易于理解、简便易行。

缺点:总体有周期或增减趋势时,易产生偏性。

3.整群抽样(cluster sampling):先将总体依照一种或几种特征分为几个子总体(类.群),每一个子总体称为一层,然后从每一层中随机抽取一个子样本,将它们合在一起,即为总体的样本,称为分层样本

优点:便于组织、节省经费。

缺点:抽样误差大于单纯随机抽样。

4.分层抽样(stratified sampling):将总体样本按其属性特征分成若干类型或层,然后在类型或层中随机抽取样本单位,合起来组成样本。有按比例分配和最优分配(过度抽样是否就是最优分配方法?)两种方案。

优点:样本代表性好,抽样误差减少。

缺点:由于通过划类分层,增大了各类型中单位间的共同性,容易抽出具有代表性的调查样本。该方法适用于总体情况复杂,各类别之间差异较大(比如金融客户风险/非风险样本的差异),类别较多的情况。

其中我们经常用到的是分层抽样和简单随机抽样,有两种抽取模式,有放回和无放回,以及两种抽取方式,按照比例抽样和按照规模抽样,其中:

有放回抽样:每次抽取的样品在下次抽样前要放回总体,也就是说,每次都是从总体中抽取数据,每次抽到各个样本的概率是相等的;

无放回抽样:每次抽取后样本总体都会减少一,所以每次抽取后,下一次抽取样本的时候,抽样概率就会改变;

按照比例抽样:按照总体的百分比多少抽取样本数据;

按照规模抽样:即按照个数抽取,抽取的样本规模是多少,规模不大于总体规模

二、 数据探索(数据质量稽核和特征分析):根据观测、调查收集到初步的样本数据集后,接下来要考虑的问题是:样本数据集的数量和质量是否满足模型构建的要求?有没有出现从未设想过的数据状态?其中有没有什么明显的规律和趋势?各因素之间有什么样的关联性?数据探索就是通过检验数据集的数据质量、绘制图表、计算某些特征量等手段,对样本数据集的结构和规律进行分析的过程。

数据探索可以从数据质量分析和数据特征分析等两个角度进行展开:

1  数据质量分析:是数据挖掘中数据准备过程中的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础。数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。在数据挖掘中,脏数据包括:

1) 缺失值

2)异常值

3)不一致的值

4)重复数据及含有特殊符号的数据

1.1     缺失值分析:数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确。通过使用简单的统计分析,可以得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率等。

1.1.1缺失值产生的原因:

1)有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写或对数据理解错误等一些人为因素而遗漏的

2)属性值不存在。

3)有些信息暂时无法获取,或者获取的代价比较大。

1.1.2缺失值的影响:

1)数据挖掘建模将丢失大量的有用信息

2)数据挖掘模型所表现出的不确定性更加显著,模型中蕴含的规律更难把握

3)包含空值的数据会使建模过程陷入混乱,导致不可靠的输出

1.2   异常值分析:异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,会给结果带来不良影响。异常值是指样本中的个别值,其数据明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。异常值分析可以通过以下3种方法来探索。

1)简单统计量分析:可以先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值。

2)3原则:如果数据服从于正态分布,在3原则下,异常值被定义为一组测定值与平均值的偏差值超过3倍标准差的值,即|x-u| >3。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。

3)箱型图分析:箱型图提供了识别异常值的一个标准:异常值通常被定义为小于QL -1.5IQR或大于QU +1.5IQR的值。

1.3   一致性分析:数据不一致性是指数据的矛盾性、不相容性。直接对不一致性的数据进行挖掘,可能会产生与实际相违背的挖掘结果。在数据挖掘过程中,不一致数据的产生主要发生在数据集成的过程中,可能是由于被挖掘数据来自于不同的数据源、对于重复存放的数据未能进行一致性更新造成的。

2  数据特征分析:对数据进行质量分析以后,可以通过绘制图表、计算某些特征量等手段进行数据的特征分析。主要通过分布分析、对比分析、统计量分析、周期性分析、贡献度分析、相关性分析等角度进行展开。

2.1  分布分析:分布分析能揭示数据的分布特征和分布类型。对于定性数据,可用饼形图和条形图直观的现实分布情况。

2.2  对比分析:对比分析是指把两个相互联系的指标进行比较,从数据量上展开和说明研究对象规模的大小,水平的高低,速度的快慢。在对比分析中,选择合适的对比标准是十分关键的步骤。

2.3  统计量分析:用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。

2.4  周期性分析:周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。时间尺度相对较长的周期性趋势有年度周期性趋势、季节性周期性趋势,相对较短的有月度周期性趋势、周度周期性趋势,甚至更短的天、小时周期性趋势。

2.5  贡献度分析:贡献度分析又称帕累托分析,它的原理是帕累托法则又称2/8定律。

2.6  相关性分析:分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析,

1) 判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图;

2)需要同时考察多个变量间的相关关系时,可利用散点图矩阵同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关性;

计算相关系数:为了更加准确的描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的有Pearson相关系数、Spearman秩相关系数和判定系数。

1)Pearson相关系数:一般用于分析两个连续性变量之间的关系;

2)Spearman秩相关系数:一般用来处理不服从正态分布的变量、分类或等级变量之间的关联性,也称等级相关系数。

3)判定系数:判定系数是相关系数的平方,用r^2表示:用来衡量回归方程对y的解释程度。

三、 数据预处理和清洗(data preprocessing):是指在主要的处理以前对数据进行的一些处理,现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间。

1、 数据清理:通过填写缺失的值、光滑噪声数据、识别或删除离群点并解决不一致性来“清理”数据。主要是达到如下目标:格式标准化,异常数据清除,错误纠正,重复数据的清除。

1)处理缺失值方法:

a.忽略元祖,挖掘任务涉及分类任务中如果缺少类标号时通常这样做

b.人工填写缺失值,量大时行不通

c.使用一个全局常量填充缺失值,简单但不可靠

d.使用属性的均值填充缺失值

e.使用与给定元组属同一类的所有样本的属性均值

f.使用最有可能的值填充缺失值,可以用回归,使用贝叶斯形式化的基于推理的工具或决策树归纳确定,是流行的做法。

2)数据光滑技术:噪声是被测量的变量的随机误差或方差

a.分箱,分箱方法通过考察数据的“近邻”(即周围的值)来光滑有序数据的值,有序值分布到一些“桶”或箱中。由于分箱方法考察近邻的值,因此进行局部光滑。几种分箱技术:用箱均值光滑、用箱边界光滑、用箱中位数光滑。

b.回归:可以用一个函数(如回归函数)拟合数据来光滑数据。线性回归涉及找出拟合两个属性(或变量)的“最佳”线,是的一个属性可以用来预测另一个。多元线性回归是线性回归的扩展,其中涉及的属性多于两个,并且数据拟合到一个多维曲面。

c.聚类:通过聚类检测离群点

2、 数据集成:将多个数据源中的数据结合起来并统一存储,建立数据仓库的过程实际上就是数据集成,具体来讲就是将分散在不同来源的数据有机地整合到一起的一步,例如宽表整合。明确哪些数据源可用?哪些数据与当前挖掘目标相关?。其中要考虑三个问题:实体识别、数据冗余和数据值冲突检测与处理。

数据分析任务多半涉及数据集成。数据集成合并多个数据源中的数据,存放在一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。数据集成有三个主要问题:

a.模式集成和对象匹配,实体识别问题:来自多个信息源的现实世界的等价实体如何才能匹配?元数据可以帮助避免模式集成的错误。

b.冗余:有些冗余可以被相关分析检测到。通过计算属性A,B的相关系数(皮尔逊积矩系数)来判断是否冗余;对于离散数据,可通过卡方检验来判断两个属性A和B之间的相关联系。

c.数据值冲突的检测与处理

3、 数据变换:通过平滑聚集,数据概化,规范化等方式将数据转换成适用于数据挖掘的形式。其中平滑可以用分箱、聚类和回归来实现。数据泛化过程即概念分层,将低层次的数据提炼到更高一级的概念层次中。规范化又有最大最小规范化、0-值规范化和小数定标规范化。此外还可以构造新的属性来使数据集成。

a.光滑:去掉数据的噪声,包括分箱,回归和聚类

b.聚集:对数据进行汇总或聚集。这一步通常用来为多粒度数据分析构造数据立方体

c.数据泛化:使用概念分层,用高层概念替换底层或“原始”数据。

d.规范化:又称为归一化,feature scaling特征缩放。将属性数据按比例缩放,使之落入一个小的特定区间。规范化方法:

1.最小-最大规范化:v'=[(v-min)/(max-min)]*(new_max-new_min)+new_min

2.z-score规范化(或零均值规范化):v'=(v-属性A的均值E)/属性A的标准差∽

3.小数定标规范化:v'=v/10的j次方,j是使Max(|v'|)<1的最小整数

e.属性构造(或特征构造):可以构造新的属性并添加到属性集中,以帮助挖掘过程。

4、 数据归约:数据挖掘时往往数据量非常大,在少量数据上进行挖掘分析需要很长的时间,数据归约技术可以用来得到数据集的归约表示,它小得多,但仍然接近于保持原数据的完整性,并结果与归约前结果相同或几乎相同。此类技术主要有如下几类:

a、 数据方聚集、

b、 维规约(检测并删除不相关、弱相关或冗余的属性或维)

c、 数据压缩(小波或傅立叶变换以及主成份分析)

d、 数值规约(用替代的、较小的数据表示替换或估计数据):主要有回归、直方图、聚类、选样等操作

e、 还有概念分层。

你可能感兴趣的:(机器学习)