数据预处理 ( 特征工程)

数据预处理 (特征工程)

在这里插入图片描述

一、标准化/归一化的好处

1.1 提升模型精度

举一个简单的例子,在KNN中,我们需要计算待分类点与所有实例点的距离。假设每个实例点(instance)由n个features构成。如果我们选用的距离度量为欧式距离,如果数据预先没有经过归一化,那么那些绝对值大的features在欧式距离计算的时候起了决定性作用,soga。

1.2 提升收敛速度

对于线性model来说,数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。
在这里插入图片描述比较这两个图,前者是没有经过归一化的,在梯度下降的过程中,走的路径更加的曲折,而第二个图明显路径更加平缓,收敛速度更快。

对于神经网络模型,避免饱和是一个需要考虑的因素,通常参数的选择决定于input数据的大小范围。

二、标准化/归一化方法

sklearn的preprocessing提供了可以满足需求的归一化方法:

2.1 StandardScaler

标准化数据通过减去均值然后除以方差(或标准差),这种数据标准化方法经过处理后数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

x =(x - ?)/?

适用于:如果数据的分布本身就服从正态分布,就可以用这个方法。

通常这种方法基本可用于有outlier的情况,但是,在计算方差和均值的时候outliers仍然会影响计算。所以,在出现outliers的情况下可能会出现转换后的数的不同feature分布完全不同的情况。

如下图,经过StandardScaler之后,横坐标与纵坐标的分布出现了很大的差异,这可能是outliers造成的。
在这里插入图片描述

2.2 PCA 标准化

在这里插入图片描述

2.2.1协方差矩阵:

统计学中常用平均值,方差,标准差等描述数据。平均值描述了样本集合的中间点;方差总是一个非负数,当随机变量的可能值集中在数学期望的附近时,方差较小; 反之, 则方差较大。所以, 由方差的大小可以推断随机变量分布的分散程度, 方差能反映随机变量的一切可能值在数学期望周围的分散程度。

标准差描述了各个样本点到均值的距离的平均值。但这些统计量都是针对一维数据的计算,**在处理高维数据时,**便可以采用协方差来查看数据集中的一些规律。协方差来度量两个随机变量关系的统计量,它描述的意义是:如果结果为正值,则说明两者是正相关的,否则是负相关的。需要注意的是,协方差是计算不同特征之间的统计量,不是不同样本之间的统计量。

https://www.cnblogs.com/chaosimple/p/3182157.html

必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数:

首先,随机生成一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数
在这里插入图片描述
赋值每个维度上的值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2 PCA

https://blog.csdn.net/luoluonuoyasuolong/article/details/90711318

PCA 取自其英文的三个单词的首字母:Principle component analysis。中文名字:主成分分析。
PCA 用来干什么:降维

用PCA做人脸识别,PCA做异常检测等等。但事实上PCA没有那么强大的功能,PCA能做的事其实很有限,那就是:降维。其他拓展应用都是在这基础上做了相应额工作。为什要降维呢?很明显,数据中有些内容没有价值,这些内容的存在会影响算法的性能,和准确性。
在这里插入图片描述如上图,数据点大部分都分布在x2方向上,在x1方向上的取值近似相同,那么对于有些问题就可以直接将x1坐标的数值去掉,只取x2坐标的值即可。但是有些情况不能直接这样取,例如:
在这里插入图片描述
上图的数据分布在x1和x2方向都比较均匀,任一去掉一个坐标的数值可能对结果都会有很大的影响。这个时候就是PCA展现作用的时候了。黑色坐标系是原始坐标系,红色坐表系是我后面构建的坐标系,如果我的坐标系是红色的,那么这个问题是不是就和上面那个问题一样了,我只需要去掉y2坐标系的数据即可。**实际上黑色坐标系和红色坐标系是等价的,差异仅仅是在空间中他们的基不同,黑色坐标系的基是我们最习惯的(1, 0), (0, 1),红色坐标系的基是(1, 1),(-1, -1),**事实上,他们是等价的,只不过经常默认使用的就是黑色坐标系。主成分分析可以让数据的投影到那些数据分布比较分散的平面上,比如上图的y1,从而忽视y2的作用,进而达到降维的目的。

PCA 数学原理
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述所以,要想最大化那个问题,就需要找到最大特征值。
同样道理,如果是需要将数据映射为2维数据,还是求解上述的最大化方差,但是需要加一个约束条件:w1⋅w2=0w1​⋅w2​=0,同样的思路,最终求解出w2,w2​是第二大特征值对应的特征向量。更高维的计算以此类推。

经过上面一番推理,我们知道了PCA的原理,但是要记住PCA用途很广,但需要记住不是什么时候都可以用到PCA的,由证明过程我们知道PCA其实是有很多限制的。比如,可以做PCA降维的前提必须保证数据是线性分布的,如果数据不是线性的,比如下图这样的
在这里插入图片描述数据分布不是线性的,用PCA效果可能就不会很理想。

2.2.3 PCA 用编程实现的流程

在这里插入图片描述流程很明确,那具体的编程要怎么做呢?难点在哪?

在这里插入图片描述PCA等价于只包含一个隐层的神经网络 额,不是很理解

2.2.5 PCA和AutoEncoder的关系

1、 PCA限制多,要求数据是线性分布的,AutoEncoder可以解决非线性降维问题
《Reducing the Dimensionality of Data with Neural Networks》这篇论文中有详细介绍:
下面是论文中实验的结果:
在这里插入图片描述

同样的数据,第一个图是PCA降维到2-D平面上的结果,第二个图是AutoEncoder降维到2-D平面上的结果。从结果中也可以明显的看出AutoEncoder降维后对数据的分布仍然有明显的区分,而PCA的结果却有点令人失望,好象是揉成了一团。

2、 PCA理论基础更强,AutoEncoder可解释性差
AutoEncoder通过挖掘潜在特性提高模型性能,但这些模糊的特性或许会对知识发现的结果产生不良影响。
3、PCA计算速度更快,AutoEncoder好不好,需要做实验验证

三、一些模型中的标准化方法:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值