数据的预处理

2017-12-04 16:31:10

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。

比如缺项,噪声(工资=-100),不匹配(年龄和出生日期不匹配),冗余等等。

一、数据清洗

1)缺少数据

可能的原因有设备故障,数据没有提供,N/A不适用。

缺少数据也是有各种类别的

  • 一是完全随机的缺失
  • 二是某种条件下的随机缺失
  • 三是必然缺失

处理方法:

  • 忽略,把这些数据删除
  • 手工重填,要么给用户重填,要么自己根据经验重填
  • 自动重填,遇到缺项填入一个缺省值

2)异常值

如何判别Outlier,也就是离群点呢?这里给出一个算法:

这里的distancek(o)就是一个knn的距离,也就是图中的k=3时,OP3之间的距离。

lrd(A)中分母部分是A到k个近邻的距离和比上近邻数。

lofk(A)就是算的一个相对概念,也就是使用A中的k近邻的lrd和再除以A本省的lrd和来进行判别A是否是Outlier。

这也很好理解,判断一个人在班级里是否离群,不能单从他一天只和很少的同学聊天进行判定,因为如果他周围的同学都很高冷,那么也不能说他是离群的。所以是否离群从本质上来说是个相对的概念。

一个例子:

3)重复数据

一般使用滑动窗口的方法来进行去重,但是这有个前提,就是相同的数据离的很近。因此需要通过键值来排序。

键值的生成就很有讲究了,可以采用各种方法来进行定义。

4)类型转换

数据有各种类型,连续型,离散型,序列词(好,中,差),称呼(红绿蓝),字符串等。

在给数据进行编码的时候就要注意了,如果是给序列词编码,那还好,因为其本身就有一个差异,但是在给红绿蓝这类的进行编码的时候就比较麻烦了,当然了,可以简单的用1,2,3进行编码但是,这种编码会导致红蓝在维度上距离变远,有可能导致问题复杂度上升。如下图,如果调整编码方式,那么分割线就可以从曲线变成直线。

有种处理的方法是使用多维空间的方法进行简化计算,比如三种颜色,就可以使用三维来进行表示,这样三种颜色的距离就是一样的。但是这种方法的缺点也是很明显的,如果类型数目很多那么相应的维数就会爆炸。

5)不平衡数据集

在处理不平衡数据集的时候就不能单单只看正确率了,比如判断一个人是否感冒,100个人里只有一个人感冒,99个人健康,你的分类器最后收敛到全部报健康,那么正确率是99%,但是我要这样的分类器有何用呢?

所以在处理不平衡数据的时候要综合考虑。

实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是真正的正样本。那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP),也就是
P  = \frac{TP}{TP+FP}
召回率是针对我们原来的样本而言的,它表示的是样本中的正例有多少被预测正确了。那也有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)。
R = \frac{TP}{TP+FN}
6)标准化
  • 0-1标准化

 比如映射到0-1的话,上式中的newmax=1;newmin=0。

  • Z-score 标准化

 也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,也是SPSS中最为常用的标准化方法,其转化函数为:

7)常用概率量

 

二、特征选择

从n个特征中选择m个特征。

  • 分支限界

比如从5个特征中选择2个特征,可以采用树的形式将所有可能进行遍历,在分支限界算法中,会对一些明显不符合要求的树进行剪枝操作,减少不必要的检索。这种方法得到的结果一定是全局最优的。

  • TOP-k

将所有的特征进行排列,从中选择最优的k个特征。这种排列的依据可以是使用决策树中的信息熵的概念。也就是选择前后信息增益最大的k个特征来作为最终的属性值。

 

三、特征提取

特征抽取(Feature Extraction):Creatting a subset of new features by combinations of the exsiting features.也就是说,特征抽取后的新特征是原来特征的一个映射。

特征选择(Feature Selection):choosing a subset of all the features(the ones more informative)。也就是说,特征选择后的特征是原来特征的一个子集。

主成分分析PCA(Principal Component Analysis):

PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。

PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。

从数学上进行推导:

这里就是把xk进行投影到一维向量上,一维向量的单位向量为e。目标就是所有的点到投影点的距离最短。

之后可以采用Lagrange乘子法来计算最优值。

算到最后我们发现要求的最优等价于求S的最大特征值,而单位向量就是该特征值对应的特征向量。

举个例子:

 

 

线性判别分析LDA(Linear Discriminant Analysis):

首先需要说明的是PCA算法是一种无监督的算法,也就是说,他是不考虑标签的降维方法。而LDA则是一种监督学习下的降维方法。

也就是说PCA,它主要的目的是寻找数据variance变化最大的轴。通过删去数据中variance变化不大的轴来压缩数据的维数。PCA没有办法很好的解决数据分类的问题(classification)。

LDA  是一种用于分类数据的分析方法。他的目的是寻找到一条直线,当把所有数据点投影到直线上之后,尽可能的分开不同类别的训练数据。

Fisher Criterion:

分子是均值的差的平方,分母是散度的平方和。

LDA问题本质就是求J的最大值问题:

最后依然是转换成了特征向量的问题,可以通过一些化简,避免计算特征值和特征向量,去掉相应的标量即可得到最终的结果。

以上讲的是两分类的问题,那么对于多分类该如何计算呢?

幸运的是,Fisher 准则可以很方便的推导到多类问题上:

Sw的计算没有明显的变化,Sb的计算出现了一点小的变化,就是每个均值减的是总的均值,并且前面要乘上当前类的总数。

不妨将C=2,带入计算可得:(前面的数字可以忽略,因为我们最后要求的只是一个方向)

 

LDA的一些限制:

因为要求Sw的逆,所以Sw不能是奇异的。如果维度大于样本数的时候就会出现奇异。

如果u1=u2的话,那么就会无法分解,因为分子为0了。

 

posted @ 2017-12-04 22:36  hyserendipity  阅读(1536)  评论(0编辑  收藏  举报