PCA降维原理及sklearn代码实现

PCA(主成分分析)是一种常用的数据降维方法,通过对数据进行基变换找到最大化方差的方向作为新的坐标轴,以保留最多的信息。PCA算法步骤包括数据零均值化、计算协方差矩阵、求解特征值和特征向量,然后选取方差最大的特征向量作为降维后的基。sklearn库提供了PCA实现,通过调整保留的主成分数量进行降维。实例展示了PCA如何将二维数据降到一维,并对比了不同维数下的方差分布。PCA适用于解除线性相关性,但对非线性相关性处理有限,且假设数据符合正态分布。
摘要由CSDN通过智能技术生成
关于降维的一点看法

建议想深入理解降维的同学可以先深入明白矩阵的秩是什么矩阵的秩,然后明白矩阵的乘法有什么意义,结合秩来看,就是进入不同的空间,我个人认为降维的本质就是因为进入了不同的空间,基变化,在矩阵中就是矩阵的乘法,所以就能理解pca lda等用矩阵降维的算法,而之所以分为这么多种算法,是因为降维就是降维矩阵A*原空间矩阵B=降维后的矩阵C,一般而言输入是确定的,并且输入数据的特征也是确定了,那么我们只能改变降维矩阵来得到不同方向的C,例如pca就是使c的协方差为0,方差最大,确定想要的C我们可以求出对应的A,不同的A就对应不同的降维算法(矩阵降维)。而之所以用矩阵降维,因为实际的数据可以用矩阵的形式来表示,矩阵的特性也可以适用现实数据的特性,降实际问题转化到矩阵中去解决。当明白降维的根本之后,不同的降维方法也不过使调参而已,这种思想也使用于其他机器学习的算法中,其中的乐趣还待各位发掘,希望此番话有所帮助。

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。本文从实际问题代入探索PCA,尽量避免纯数学的推导,更简单明了地讲解PCA原理。

1.数据的向量表示及降维问题的产生

一般情况下,在数据挖掘和机器学习中,数据被表示为向量来进行处理,就拿我近期做的kaggle的泰坦尼克号预测数据而言,数据本身是如下图所示:
现实数据用向量表示
其中一条数据用向量表示如下

 (1,0,3,Braund, Mr. Owen Harris,male,22,1,0,A/5 21171,NULL,S)

此时的数据已经是11维的数据,我们知道,很多机器学习算法的复杂度和数据的维数有着密切关系,甚至与维数呈指数级关联。实际机器学习中处理成千上万甚至几十万维的情况也并不罕见,在这种情况下,机器学习的资源消耗是不可接受的,因此我们必须对数据进行降维。

降维当然意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。

例如淘宝店铺的数据,从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系。这里我们非正式的使用“相关关系”这个词,可以直观理解为“当某一天这个店铺的浏览量较高(或较低)时,我们应该很大程度上认为这天的访客数也较高(或较低)”。后面的章节中我们会给出相关性的严格数学定义。

这种情况表明,如果我们删除浏览量或访客数其中一个指标,我们应该期待并不会丢失太多信息。因此我们可以删除一个,以降低机器学习算法的复杂度。

上面给出的是降维的朴素思想描述,只是我们的主观判断,可以有助于直观理解降维的动机和可行性,但并不具有操作指导意义。例如,我们到底删除哪一列损失的信息才最小?亦或根本不是单纯删除几列,而是通过某些变换将原始数据变为更少的列但又使得丢失的信息最小?到底如何度量丢失信息的多少?如何根据原始数据决定具体的降维操作步骤?

要回答上面的问题,就要对降维问题进行数学化和形式化的讨论。而PCA是一种具有严格数学基础并且已被广泛采用的降维方法。接下来我们逐步分析问题,进一步探索PCA。

2.向量的表示及基变换

既然我们面对的数据被抽象为一组向量,那么下面有必要研究一些向量的数学性质。而这些数学性质将成为后续导出PCA的理论基础。

内积与投影

下面先来看一个高中就学过的向量运算:内积。两个维数相同的向量的内积被定义为:
两个维数相同的向量的内积
内积运算将两个向量映射为一个实数。其计算方式非常容易理解,但是其意义并不明显。下面我们分析内积的几何意义。假设A和B是两个n维向量,我们知道n维向量可以等价表示为n维空间中的一条从原点发射的有向线段,为了简单起见我们假设A和B均为二维向量,则A=(x1,y1),B=(x2,y2)。则在二维平面上A和B可以用两条发自原点的有向线段表示,见下图:
内积几何意义
好,现在我们从A点向B所在直线引一条垂线。我们知道垂线与B的交点叫做A在B上的投影,再设A与B的夹角是a,则投影的矢量长度为|A|cos(a),其中|A|=x21+y21√是向量A的模,也就是A线段的标量长度。

注意这里我们专门区分了矢量长度和标量长度,标量长度总是大于等于0,值就是线段的长度;而矢量长度可能为负,其绝对值是线段长度,而符号取决于其方向与标准方向相同或相反。

到这里还是看不出内积和这东西有什么关系,不过如果我们将内积表示为另一种我们熟悉的形式:

A⋅B=|A||B|cos(a)
现在事情似乎是有点眉目了:A与B的内积等于A到B的投影长度乘以B的模。再进一步,如果我们假设B的模为1,即让|B|=1,那么就变成了:

A⋅B=|A|cos(a)
也就是说,**设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度!**这就是内积的一种几何解释,也是我们得到的第一个重要结论。在后面的推导中,将反复使用这个结论。

下面我们继续在二维空间内讨论向量。上文说过,一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一个有向线段。例如下面这个向量:
坐标轴中的向量
在代数表示方面,我们经常用线段终点的点坐标表示向量,例如上面的向量可以表示为(3,2)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值