主成分分析法 PCA

此系列笔记来源于

Coursera上吴恩达老师的机器学习课程


主成分分析法 PCA

数据压缩

对于一个多维度的特征量,我们可以进行压缩,来使得数据量减少

如:

image-20220522224605488

image-20220522224638387

数据可视化

对于下列数据,我们先将 R50变为了 R2

image-20220522225754349

image-20220522225718534

随后作图

image-20220522230006172

便能很清楚直观的了解到数据的一些信息

PCA

PCA的目的

PCA的目的就是去压缩数据或者可视化

在数据压缩时,如二维变为一维:

image-20220522230937317我们找到一个方向,即图中这条直线,随后将所有数据点投影到这条直线上。

我们令这个垂直的投影距离,即蓝色线段为投影误差,而PCA所做的就是去寻找令数据压缩后投影误差最小的这个方向\向量

可以推广到更高维度

image-20220522231145500

将n维压缩到k维,我们找到k个向量,能让数据投影到这些向量上后,整体投影误差之和最小

PCA算法过程

1、我们先计算协方差矩阵 (注意与求和符号区分)

=1mXTX

2、计算协方差矩阵的特征向量矩阵

这里可以调用函数 [U, S, V] = svd(Sigma); 而第一个U 即为我们所要的特征向量矩阵

image-20220522234402845

假设我们要降到 k维,那么我只需选取前 k 个特征向量,并记为Ureduce

这 k 个向量便是我们新的特征

3、计算 z

假设原始数据为 x,我们要将其变为 k维

z=UreduceTx

image-20220522234905983

另外因为xRn,所以x01

压缩重建

x转化为z后我们同样可以转化回去

xapprox=Ureducez,xapproxx

选择主成分的数量 k

PCA是为了最小化平均平方映射误差 1mi=1m||x(i)xapprox(i)||2

另外定义数据的总变差 Total variation: 1mi=1m||x(i)||2

我们要选择 最小的一个k,能满足:

1mi=1m||x(i)xapprox(i)||21mi=1m||x(i)||20.01(1%)

用PCA的语言来说就是保留了99%的差异性

如果是 0.05(5%)

那么就是保留了95%的差异性

算法过程:
image-20220523134958465

也就是遍历 k 从1开始,对于每个k 计算对应的数值然后看看是否满足下面的式子。但是这样的效率是十分低的。

我们用其他方法做:

1、[U, S, V] = svd(sigma)

2、这里的 S 是一个对角矩阵 diag(S11,S22,,Snn)

Check的式子可以等价为 1i=1kSiii=1nSii0.01

因此只需要逐渐增加k,并检查是否满足 i=1kSiii=1nSii0.99

加速学习算法

我们可以利用PCA 通过压缩数据的方法来加速算法

已知训练集 training set

image-20220523145730593

我们先使用PCA来对训练集降维(不能对cv集 和 test集使用)

image-20220523145840698

得到新训练集

image-20220523145912241

训练集上的x(i)z(i)的映射关系 可以再用于cv集 和 test集

完成降维后,对新的数据集再运行原来的学习算法即可

PCA的应用

image-20220523150524605

PCA的不恰当使用

1、用PCA去解决 过度拟合overfitting问题,更合适的方法是正则化

2、在设计一个机器学习系统前,我们不应该直接就将PCA列入步骤,如果不使用PCA,系统也能运行的话,那么PCA根本没有必要。而应当在运行速率较慢等问题下,再去运用PCA解决问题

posted @   Yra  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示