前篇文章我们大致的介绍了数据挖掘一些知识。现在说一下在数据挖掘中的数据问题。
毫无疑问,数据挖掘中,数据是重中之重,在数据挖掘中数据的前期工作基本上会耗费大量时间。 数据集可以看成是数据对象的集合,数据对象简单理解就是一组对象属性,而属性我们也可以称为变量,特性,字段或维,属性类型包括Nominal (名词性),Numberic(数值),当然还可以细分。
1、数据集
我们挖掘的数据集有好多种比如:
1)记录数据: 记录数据就是一条一条记录的汇集,每条记录包含固定的数据字段集,这种记录文件通常存放在关系数据库中。
a:Transaction(事务数据): 它是一种特殊类型的记录数据,其中每个记录(事务)涉及一系列的项,如购物篮数据,每一行代表一位顾客的购买商品:
b:Data Matrix(数据矩阵): 如果一个数据集中所有数据对象都有相同数值性集,就可以使用矩阵表示,比如文档-词矩阵。
2)基于图形的数据
3)有序数据,比如氨基酸序列、时序数据...
4)非记录数据(网页什么的)...
2、数据集的问题和前期处理
数据集的质量很关键,但是往往我们收集到的数据集会有很多问题,这时候就需要对数据进行很多前期处理工作。
1、 Data Quality Problem:
- Noise and outliers(噪声和离群点)
- Missing value (缺失值,有的记录对象的属性值没有)
- duplicate data (重复数据,会影响挖掘算法)
噪声:就是指测量误差的随机部分,因此常常假设为高斯分布。
离群点:是指某种意义上不同于数据集中大部分其他数据对象特征的数据对象,但其实它不是噪声,有时候我们更关心这些离群点,比如欺诈啊...
缺失值:一个对象遗漏一两个属性值很常见,但是我们在做数据分析的必须处理这些遗漏值。(可以删除遗漏属性值,填充遗漏属性值...)
2、Preparing the input(Data Preparation)
(1)Data cleaning (数据清理), 就是指使用某些方法处理噪声,属性缺失值,离群点,方法可以使用聚类,线性分析,binning处理数据平滑等。
(2)Data integration(数据集成), 就是将两个或多个对象合并成单个记录对象,比如考虑某个国家的降雨量问题,可以把12个月的降雨量聚集成一年的降雨量。
(3) Data transformation (数据转换),将数据规范化或者标准化等等。一般来说两个属性值的区间相差很大的时候,会影响后期算法的挖掘性能,因此一般会将数据转换到同一个值区间。可以使用以下几种方法:
- min-max normalization: s=(s-min)/(max-min);
- z-score normalization: s=s-mean/ð
- normalization by decimal scaling: s=s/d
(4)Discretization etc 离散化等等
(5)Data reduction (数据约减)
维灾难:
指的是随着数据维度的增加,许多数据分析变得非常困难,特别是随着维度增加,数据在它所占的空间越来越稀疏,对于分类问题,这就意味着没有足够多的数据用于创建模型。对于聚类问题,意味着点的密度,距离失去了意义。结果导致对于高维数据许多分类,聚类算法准确度下降。
解决办法:
1、维规约最经常使用线性方法,将高维数据映射到低维空间,比如PCA...
2、特征子集选择:还可以通过仅使用特征的一个子集对数据进行降维,可能看起来这样会丢失原数据信息,但是当数据集存在相关数据时,就很可靠了,其实决策树就是这样的选取子集特征。 特征子集提取流程:
一般来说,特征子集是搜索所有可能的特征子集过程,可以使用多种搜索策略,但是搜索的一个不可或缺的步骤就是评估步骤,根据已经考虑的子集评估当前 的特征子集,因为我们穷举特征子集需要很多时间,所以一般有个停止判断用于结束选取特征过程(比如迭代次数...)
特征提取(feature extraction)
由原始的数据创建新的特征集,比如说照片原始特征属性是像素的集合,但是这种特征不适合很多分类算法,因此我们通过对这些像素数据进行处理,提取一些较高层次的特征,比如图像边等,就可以很好的使用一些算法用于分析这些特征。