数据预处理
来源:互联网 发布:苹果直接安装软件 编辑:程序博客网 时间:2024/04/29 06:38
一些概念
一.什么是数据:
数据是搜集起来的一个个对象(Objects)和其各种属性(Attributes),一个属性是这个对象的一个特征(Property or Characteristic),全部的特征集合起来就刻画了这个对象.
二.属性值:
数据的属性有多种取值的可能,可以是数字特征也可以是符号特征.数据的属性和属性值是有区别的,同样的属性可以有不同的属性值来表示,比如身高可以用厘米表示也可以用米表示,同样不同的属性也可以有同样的属性值.
三.属性值的种类:
1.Nominal(类型或标称变量):没有大小之分,也没有等级或者次序之分,仅仅是一个标称或者类别,例如性别,颜色等.为Nominal类型的属性,只能判断=或者!=
2.Ordinal(顺序变量/序数变量):离散值,其值大小没有什么特定的意义,但按照顺序排列,变量值之间的次序是有一定意义的,打乱定义将禅城错误,例如名词,级别,星期等.为Ordinal类型的属性除了判断是否相等为还可以进行大小比较.
3.Interval(区间变量):变量的值是在特定区间上有意义,超出这个区间就没有意义了.可以用数值型变量来表示,可以反应变量值之间的大小的差异,例如身高,体重.为Interval类型的属性还可以进行+-操作.
4.Ratio(比例变量):按照一定的间隔,比例计算数据的变量类型,非线性区间标度中取正的度量值.为Ratio类型的变量还可以进行乘除操作.
这种分类很重要,让我们在进行数据挖掘时采用机器学习算法的时候取特征值的时候不会犯一些错误,因为有的值是没有办法比较大小的,所以我们在抽取特征的时候不能将无法比较大小的属性放到一个特征内,例如周几这种特征,不能选取一个特征weekday取值1-7,这样是不对,因为2并不比1大.
属性的种类除了进行上面的那种分类以外还可以分成离散型(Discrete)和连续型(Continuous),
四.数据集合的种类:
1.记录型数据:数据矩阵,文档型数据,事务型数据.
2.图:万维网,分子结构.
3.有序数据:空间数据,时间数据,序列数据.
数据预处理的理由
一.真实世界的数据都是脏数据
1.不完整的:存在空值,缺少感兴趣的属性或者仅包含聚集数据
2.含有噪声的:含有错误或存在偏离期望的孤立点值
3.不一致的:因为数据可能是从多个库中合并得来的,所以可能会存在偏差冲突或者矛盾
二.直接进行数据挖掘的不可能性
因为越干净的数据集进行数据挖掘的效果越好,如果数据集没有任何质量可言的话,那数据挖掘的效果一定与真实的结果有很大的偏差.
数据预处理的任务
一.数据质量的评价标准
精确性,完整性,一致性,适时性,可信性,附加价值,可解释性,可访问性
二.具体方法
1.数据清理
a.填补空值:当类标号缺少时可以采用忽略元组的方法去掉空值,一般情况下可以使用全局常量,属性的平均值或者使用最可能的值(采用回归,决策树,贝叶斯公式的方法来预测最有可能的值)来填补空值.
b.识别去除离群点,平滑噪声数据:噪声是被测量的变量的随机误差,我们可以使用分箱的方法来平滑噪声,具体的方法如下:
·数据被分布到一些"桶"或者箱中
·按箱平均值平滑或者按箱边界平滑,或者按箱中值平滑等.
离群点是另一种噪声数据,他不在数据的大概分布范围之内,我们可以使用聚类的方法将相近的数据放入同一个簇中,落在簇外的即视为离群点.或者通过回归函数来拟合数据来光滑数据.
c.解决数据不一致性以及解决因数据集成带来的冗余
2.数据集成
将数据由多个源合并成一致的数据存储,如数据仓库,我们在合并数据集的过程中容易造成数据冗余,冗余可分为两种,一种是属性冗余,一种是元祖冗余:
a.属性冗余:例如一个属性可以由其他属性导出或者是同一个对象在不同的数据库中有不同的名字.我们可以通过相关分析来判断一个属性能在多大程度上蕴含另一个,从而来清楚冗余数据.具体的相关系数的计算方法如下:
皮尔森相关系数:
卡方检验:
b.元组冗余:即对于给定的唯一实体存在两个或多个相同的元组.
3.数据变换
将数据进行规范化,用于改进涉及距离度量的挖掘算法的精度和有效性.
a.聚集:对数据进行汇总和聚集.
b.数据泛化:使用概念分层,用高层次概念替换低层次"原始"数据.
c.规范化:将属性数据按比例缩放,使之落入一个小的特定区间.
数据规范化大致有两种方法:
第一种:最小-最大规范化
第二种:z-score规范化
该方法是基于均值和标准差的
d.属性构造:构造新的属性添加到属性集中,以帮助挖掘过程.例如可以根据长,高来构建新的属性面积.
4.数据规约
通过聚集,删除冗余特性或聚类等方法来压缩数据,减少数据量.例如可以在全体数据中进行采样,近似估计整体数据的分布,或者采用维数削减的方法.
a.属性子集的选择:删除对数据挖掘没有贡献的属性.
b.数据压缩:使用编码机制减小数据集的规模.例如小波变换
c.数值压缩:用替代的较小的数据表示替换或估计数据.
第一种:有参的方法:只需存放参数,无需存放实际的数据,或者通过回归和对数线性模型来存储.
第二种:无参的方法:直方图,聚类,采样.
第三种:聚类:通过找到的簇的直径和中心点进行存储.
第四种:抽样:分为有放回抽样和无放回抽样还有分层抽样.
d.离散化或概念分层.
可以将属性值划分为区间,减少给定连续属性值的个数.然后用区间的标记替代实际的数据值.
总共有以下几种常用的方法:分箱,然后用箱均值或中位数替换箱中的每个值;直方图,将属性值划成不相交的几个区间,称作"桶";基于熵的离散花,在计算分裂点时利用类分布信息,选择具有最小熵的值作为分裂点,即数据离散之后对数据整体的影响最小;基于卡方分析的区间合并
e.维度约减:主要是为了解决维度灾难的问题.
第一种:属性子集合的选择(特征选择):找出最小的属性子集合,使得结果中数据分类的概率分布与原始数据接近.有四中选择放法:
·从空集开始逐渐从原始属性中选择最好的属性.
·从全集开始逐渐删除原始数据中最差的属性.
·从全集开始每一步删除一个差的属性,找出一个好的属性保留.
·基于决策树的方法:基于信息熵的技术,训练一个决策树,删除未在决策树中出现的所有属性.
第二种:PCA主成分分析法
PCA主成分分析法:高维数据中有很多可以通过降低纬度来去除多余的属性,因此提出了主成分分析法,我们所关注的重点就是如何找到一个投影方式使数据可以从高维近似投影到低维中来.PCA的主要手段就是我们去寻找协方差矩阵的特征向量,把所有的数据点都投影到该特征向量中.属性子集的选择是通过保留原属性中的一个子集来减少属性集的大小,而PCA是寻找一个变量的组合来描述数据.
具体方法(http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html):
第一步:分别求x和y的平均值,然后对于所有的样例,都减去对应的均值。这里x的均值是1.81,y的均值是1.91,那么一个样例减去均值后即为(0.69,0.49),得到
第二步,求特征协方差矩阵,如果数据是3维,那么协方差矩阵是
这里只有x和y,求解得
对角线上分别是x和y的方差,非对角线上是协方差。协方差大于0表示x和y若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。
第三步,求协方差的特征值和特征向量,得到
上面是两个特征值,下面是对应的特征向量,特征值0.0490833989对应特征向量为,这里的特征向量都归一化为单位向量。
第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。
这里特征值只有两个,我们选择其中最大的那个,这里是1.28402771,对应的特征向量是。
第五步,将样本点投影到选取的特征向量上。假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。那么投影后的数据FinalData为
这里是
FinalData(10*1) = DataAdjust(10*2矩阵)×特征向量
得到结果是
5.数据离散化
对于数值型数据是一种数据约减的方法
描述性数据汇总
一.基本概念
使用各类图形或语言描述方式来帮助我们来获得数据的总体印象,识别数据的典型特征,凸显噪声或利群点.例如:
1.使用均值,中位数,众数,中列数等来度量数据的中心趋势.
2.使用四分位数,四分位数极差,方差等来度量数据的离散程度.
注:a.计算均值时有三种方法,分别是算术平均值,加权平均值或者截断平均值(去掉高,低极端值得到的均值).
b.计算中位数时有一种近似的中位数计算方法,可以假定将数据根据其值划分成不同的区间,我们已知每个区间中的数的个数,则可以通过以下公式近似计算中位数.
median = L1 + ((N/2 - sum(fl)(中位数区间左侧区间所有区间中数字个个数的和))/fm(中位数区间的数字的个数))width(中位数区间的宽度)
二.度量数据的离散程度
最常用的度量:极差,五数概括(基于四分位数的),中间四分位数极差,标准差.
1.极差:数据集的最大值和最小值的差.
2.百分位数:第k个百分位数是指k%的数据项位于或低于x.
3.四分位数:第一个四分位数Q1(第25个百分位数),第三个四分位数Q3,中间四分位数极差(IQR)即Q3 - Q1.
4.五数概括:中位数,四分位数Q1和Q3,最小和最大数.
三.一个非常有用的图形表示方式-箱型图
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- 数据预处理
- MySQL 一对多查询,合并多的一方的信息
- Python 新式类与经典类的区别
- 气泡聊天
- 敢于尝试是人类成长前提
- Object类
- 数据预处理
- LinearLayout的border设置。
- HDU 5147 树状数组
- codeforces 412E E-mail Addresses
- C语言端口扫描
- Cookies学习
- mac安装mysql-python和采用MVC的方式操作数据库
- android permission权限与安全机制解析(上)
- Scala学习(二)---入门基础知识