《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)

数据预处理过程

数据清洗—>数据转换—>数据描述—>特征选择—>特征提取
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
为什么要进行数据预处理
原始的数据不利于直接进行数据挖掘,因为:

  1. 数据不完整
  2. 存在错误数据
  3. 数据存在重复信息
  4. 数据量过大
    等等。。。

如何解决丢失的数据问题

  1. 进行选择性忽视
  2. 人工补全(比如重新收集、经验填充)
  3. 自动补全(利用数据的均值等)
    等等。。。

离群点(Outlier)

《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
如何对这些离群点进行检测

离群是相对的概念

局部异常因子算法-Local Outlier Factor(LOF)
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
distancek(B){distance}_k(B):距离B第k远的点的距离
d(A,B)d(A,B):A与B两点之间的距离
lrd(A)lrd(A):点A的局部可达密度
(密度越高,我们认为越可能属于同一簇,密度越低,越可能是离群点。)
LOFk(A)LOF_k(A):局部离群因子
(如果这个比值越接近1,说明A的其邻域点密度差不多,A可能和邻域同属一簇;如果这个比值越小于1,说明p的密度高于其邻域点密度,A为密集点;如果这个比值越大于1,说明A的密度小于其邻域点密度,A越可能是异常点。 )
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)

Duplicate Data

两条数据可能对应的是同一个人,但数据的格式很有可能是不一样的

滑动窗口
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
高度近似的样本是彼此挨着的,可以使用滑动窗口

一般先创建关键字,然后进行排序再整合
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)

数据类型转换和采样

《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
数据的类型有很多种,连续型、离散型、文本数据…

格式不同同样会对我们对数据的处理带来很大的影响

《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
采样
目的是为了提高数据处理效率
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
不平衡的数据
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
从上图可以看出,整体的准确率并不适用与不平衡的数据。分类器B的效果显然要比分类器A更好,但是它的整体准确率只有90%,小于分类器A的10%。
应该用下面的度量方式
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
其中混淆矩阵如下
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
F-measure和G-mean类似,只是角度不同而已

向上采样
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
如果两个类不均衡,比如红颜色远远多于蓝颜色,这样直接进行分类,会导致一些不太好的效果,比较好的一个思路是一个蓝颜色的点,找它的一个紧邻点,然后在该区域随机生成一个点

边缘采样
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
还有一种采样是提取边缘的点,有时候数据非常大,处理的话需要花费大量的时间,其实对于这些点来说,最外面的这些点是有价值的,我们可以只提取边缘的这些点,中间的这些数据可能并不参与到数据挖掘中。

我们可以根据密度或者法向量等的方法将边缘的点找出来,这样,我们只需要百分之几的点也能达到处理全部的数据的效果,为我们节省大量的时间。

标准化

我们拿到的原始数据可能变化不一,比如单位不统一等,所以我们需要对这些数据进行 Normalization。

有一种比较简单的方法就是将原始的数据映射到【0,1】区间。

《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
数据描述
1、均值
2、中位数
3、Mode,频率最高的数据
4、Variance,衡量数据分布是密集还是分散
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
如何评价两件事情是否具有相关性
《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
使用上图中概率论统计的公式:
r值大于0,两组数据正相关
r值小于0,两组数据负相关
r值等于0,两组数据不存在线性相关(但并不是不相关)