原创文章,如需转载请保留出处
本博客为唐宇迪老师python数据分析与机器学习实战课程学习笔记
一.数据降维
降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。
降维具有如下一些优点:
1) 使得数据集更易使用。
2) 降低算法的计算开销。
3) 去除噪声。
4) 使得结果容易理解。
降维的算法有很多,比如奇异值分解(SVD)、主成分分析(PCA)、因子分析(FA)、独立成分分析(ICA)。
二. PCA主成分分析(Principal Component Analysis)
PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。 PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。 通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。
- 用途:降维中最常用的一种手段
- 目标:提取最有价值的信息(基于方差)
- 问题:降维后的数据的意义?
三. 向量的表示及基变换
3.1 内积
- 内积:
机器学习中的算法-降维算法 - 解释:A • B = | A || B | cos(a)
- 设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度
机器学习中的算法-降维算法 -
向量可以表示为(3,2)
实际上表示线性组合:
x ( 1 , 0 ) T + y ( 0 , 1 ) T x(1,0)^{T} + y(0,1)^{T} x(1,0)T+y(0,1)T
3.2 基变换
-
基变换
基是正交的(即内积为0,或直观说相互垂直)
要求:线性无关
- 变换:数据与一个基做内积运算,结果作为第一个新的坐标分量,然后与第二个基做内积运算,结果作为第二个新坐标的分量
- 数据(3, 2)映射到基中坐标:
机器学习中的算法-降维算法 - 基变换 两个矩阵相乘的意义是将右边矩阵中的每一列向量变换到左边矩阵中每一行行向量为基所表示的空间中去
机器学习中的算法-降维算法
四. 协方差矩阵
- 方向:如何选择这个方向(或者说基)才能尽量保留最多的原始信息呢?一种直观的看法是:希望投影后的投影值尽可能分散
- 方差: V a r ( a ) = 1 m ∑ i = 1 m ( a i − u ) 2 Var(a) = \frac{1}{m}\sum_{i=1}^m(ai -u)^2 Var(a)=m1∑i=1m(ai−u)2
- 寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大
- 协方差(假设均值为0时): C o v ( a , b ) = 1 m ∑ i = 1 m a i b i Cov(a,b)=\frac{1}{m}\sum_{i=1}^maibi Cov(a,b)=m1∑i=1maibi
- 如果单纯只选择方差最大的方向,后续方向应该会和方差最大的方向接近重合。
- 解决方案:为了让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的
- 协方差:可以用两个字段的协方差表示其相关性 C o v ( a , b ) = 1 m ∑ i = 1 m a i b i Cov(a,b)=\frac{1}{m}\sum_{i=1}^maibi Cov(a,b)=m1∑i=1maibi
- 当协方差为0时,表示两个字段完全独立。为了让协方差为0,选择第二个基时只能与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。
五. 优化目标
5.1 优化目标
- 将一组N维向量降为K维(K大于0,小于N),目标是选择K个单位正交基,使原始数据变换到这组基上后,各字段两两间协方差为0,字段的方差则尽可能大
- 协方差矩阵:
机器学习中的算法-降维算法 - 矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b协方差。
- 协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上将元素按大小从上到下排列
- 协方差矩阵对角化: P C P T PCP^T PCPT= Λ = ( λ 1 λ 2 ⋱ λ n ) \begin{pmatrix}λ_1 & & \\& λ_2 & \\& & \ddots \\&& & λ_n\end{pmatrix} ⎝⎜⎜⎛λ1λ2⋱λn⎠⎟⎟⎞
5.2优化目标
-
实对称矩阵:一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量
E = ( e 1 e 2 . . . e n ) E = (e_1 e_2 ... e_n) E=(e1e2...en)
-
实对称阵可进行对角化:
E T C E T E^TCE^T ETCET= Λ = ( λ 1 λ 2 ⋱ λ n ) \begin{pmatrix}λ_1 & & \\& λ_2 & \\& & \ddots \\&& & λ_n\end{pmatrix} ⎝⎜⎜⎛λ1λ2⋱λn⎠⎟⎟⎞
- 根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y
5.3 PCA实例