目录
数学知识补充
一、方差
数值的分散程度,可以用数学上的方差来表述。一个变量的方差可以看做是每个元素与变量均值的差的平方和的均值
为了方便处理,我们将每个变量的均值都化为 0 ,因此方差可以直接用每个元素的平方和除以元素个数表示
二、协方差
在一维空间中我们可以用方差来表示数据的分散程度。而对于高维数据,我们用协方差进行约束,协方差可以表示两个变量的相关性。为了让两个变量尽可能表示更多的原始信息,我们希望它们之间不存在线性相关性,因为相关性意味着两个变量不是完全独立,必然存在重复表示的信息
当协方差为 0 时,表示两个变量完全独立。为了让协方差为 0,我们选择第二个基时只能在与第一个基正交的方向上进行选择,因此最终选择的两个方向一定是正交的
至此,我们得到了降维问题的优化目标:将一组 N 维向量降为 K 维,其目标是选择 K 个单位正交基,使得原始数据变换到这组基上后,各变量两两间协方差为 0,而变量方差则尽可能大(在正交的约束下,取最大的 K 个方差
三、协方差矩阵
四、矩阵对角化
根据我们的优化条件,我们需要将除对角线外的其它元素化为 0,并且在对角线上将元素按大小从上到下排列(变量方差尽可能大)
协方差矩阵 C 是一个是对称矩阵,在线性代数中实对称矩阵有一系列非常好的性质:
- 实对称矩阵不同特征值对应的特征向量必然正交。
- 设特征向量 重数为 r,则必然存在 r 个线性无关的特征向量对应于 ,因此可以将这 r 个特征向量单位正交化。
PCA
一、画图说明
怎么样最好:找到数据分布最分散的方向(方差最大),作为主成分
二、算法步骤
设有 m 条 n 维数据
- 将原始数据按列组成 n 行 m 列矩阵 X;
- 将 X 的每一行进行零均值化,即减去这一行的均值;
- 求出协方差矩阵
- 求出协方差矩阵的特征值及对应的特征向量;
- 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P;
-
即为降维到 k 维后的数据
三. 性质
- 缓解维度灾难:PCA 算法通过舍去一部分信息之后能使得样本的采样密度增大(因为维数降低了),这是缓解维度灾难的重要手段;
- 降噪:当数据受到噪声影响时,最小特征值对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到降噪的效果;
- 过拟合:PCA 保留了主要信息,但这个主要信息只是针对训练集的,而且这个主要信息未必是重要信息。有可能舍弃了一些看似无用的信息,但是这些看似无用的信息恰好是重要信息,只是在训练集上没有很大的表现,所以 PCA 也可能加剧了过拟合;
- 特征独立:PCA 不仅将数据压缩到低维,它也使得降维之后的数据各特征相互独立
参考链接
【机器学习】降维——PCA(非常详细) - 知乎 (zhihu.com)
用最直观的方式告诉你:什么是主成分分析PCA_哔哩哔哩_bilibili
Kernel-PCA
一、含义
PCA降维是一种线性变换,在高维空间的样本点如果线性不可分的话,到了低维空间依旧线性不可分。为了能够让样本在低维空间线性可分引入了KPCA
KPCA基本思想:对源空间的点进行,非线性高维映射,在映射后的后的空间内再进行PCA降维。
低维空间的矢量,x1,x2,映射到高维空间后的X1,X2的相关性
二、常见核函数
三、与一般PCA的对比![](https://i-blog.csdnimg.cn/blog_migrate/05c7805e5d1c66779cc0137ec10dd53f.png)
由于是未知的,所以C无法求,所以设法用已知的K直接去求C的特征矢量
四、解决办法
对标一般PCA的第二步解决方法:
1)
2)对此公式左右再乘以X的转置有:
合并一下即有
(公式2)
而 X的转置乘以X,又等于N*C(见第三步与PCA对比图片的右侧)
3) 对NC进行特征值分解 (公式3)
4)比较一下公式2和公式3,可以发现
其中u是K的特征向量,X是原始数据经过非线性映射得到的高维矢量(仍然未知)。
5)对v进行归一化处理:
6)找到特征值较大的d个v组成矩阵V
7)降维
总结: X在过程中一直是未知的,但巧妙的避开了X的计算,最终实现了降维。
对标一般PCA的第一步中心化的解决:
1)
其中这个均值指的是维度均值
举例:
一般化即有
2)由于
把上述公式代入即有:
五、Kernel-PCA的一般步骤
参考链接
Python与人工智能-数据降维-Kernel-PCA_哔哩哔哩_bilibili