深度学习中的数据预处理操作

常用预处理方法
1、零均值
零均值是数据预处理最为常用的方法。即将每一维原始数据减去这一维数据的均值,将结果替代原始的数据。预处理的结果是每一维数据的均值是0。

X -= np.mean(X,axis = 0)

2、归一化(normalization)
归一化就是将原始数据归一到相同的尺度,有两种归一化的方法:
1)先对每一维数据进行零均值,然后除以每一维数据的标准差。

X -= np.mean(X,axis = 0)
X /= np.std(X,axis = 0)

2)将不同维度的数据归一到相同的数值区间,如(-1, 1),(0, 255)。这种归一化仅仅当不同维的数据特征具有相同的重要性时采用,对于图片不需要采用这种归一化,因为图片像素的范围已经是归一化的了(0~255之间)。

在这里插入图片描述

3、PCA和白化
PCA作用:数据降维,加速机器学习进程。
步骤:
1)将数据进行零均值化。
2)计算数据的协方差矩阵得到数据不同维度之间的相关性。

X -= np.mean(X, axis = 0) # zero-center the data (important)
cov = np.dot(X.T, X) / X.shape[0] # get the data covariance matrix

注:实际上上面两步就是计算协方差的过程,即下式的代码实现:
Cov(Xi, Xj) = E{[Xi - E(Xi)][Xj - E(Xj)]}
得到的协方差矩阵如下图所示,其中对角线上的元素和等于那个向量自身的在这里插入图片描述
方差。如果协方差(元素)为正值,表明这两个特征之间的关系为正相关,如果为负值则为负相关,如果为0,则为不相关。协方差是对称并且半正定的。协方差矩阵经过变换可以得到一个完全不相关的矩阵,即主成分分析。
半正定矩阵定义:设A是n阶方阵,如果对任何非零向量X,都有X’AX≥0,其中X‘'表示X的转置,就称A为半正定矩阵。
正定矩阵:半正定矩阵中的X’AX≥0改为X’AX>0,即为正定矩阵。

3)对协方差矩阵进行奇异值分解(SVD分解),得到,U,Σ,V矩阵。

U,Σ,V = np.linalg.svd(cov)

注:其中,U和V均为单位正交阵,U为左奇异矩阵,,V成为右奇异矩阵,Σ仅在主对角线上有值,成为奇异值。奇异值分解主要用于数据压缩。
奇异值可以看做一个矩阵的代表值,或者说奇异值能够代表这个矩阵的信息,调用库函数进行奇异值分解得到的奇异值是按照从大到小排列的,奇异值越大时,它代表的信息越多,因此当我们取若干个最大的奇异值时,就可以基本还原出数据本身。
在这里插入图片描述

4)数据去相关。将零均值后的数据投影到特征向量上,选取前面几个特征向量来减少数据维度,这就是PCA降维。

Xrot = np.dot(X, U) # decorrelate the data,直接去相关性,或者进行下面的数据降维。
Xrot_reduced = np.dot(X, U[:,:100]) # Xrot_reduced becomes [N x 100] ,PCA降维

注:U矩阵的列为特征向量,这些列都是相互正交的,故可看为基向量。这种投影相当于将数据X翻转、投影到新的基向量轴上。此时我们再计算Xrot的协方差矩阵时,会发现它是一个对角阵,说明不同维度之间不在相关。调用库函数计算的U的各列是跟Σ的奇异值(由大到小排列)一一对应的,故U中前面的列就是主方向,可以提取前面的列减少数据的维度。

白化
上述过程为PCA降维过程。所谓白化,只是比PCA更为高级的一个算法。白化分为PCA白化和ZCA白化。
白化作用:降低输入数据的冗余性,具体来说白化的目的:使得 1)特征之间具有弱相关性。2)所有特征具有相同的方差。
PCA白化步骤:
1)PCA处理求出特征向量,不降维。
2)把数据X映射到新的特征空间,实现去相关性。
3)对去相关的数据进行方差归一化(即除以方差)。
ZCA白化:在PCA白化的结果再变回原来的坐标系下的坐标。

注:PCA和白化在CNN中基本不会用到。

数据预处理参考链接:https://blog.csdn.net/coder_gray/article/details/79677921
协方差矩阵参考链接:http://www.coozhi.com/muyingjiaoyu/xuexijiaoliu/22246.html
奇异值分解参考链接:https://www.cnblogs.com/endlesscoding/p/10033527.html
白化参考链接:https://blog.csdn.net/liuweiyuxiang/article/details/88133096

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值