PCA原理学习及实战应用

欢迎各位童鞋交流和指教!


1. 前言

在接触到了文本的分布式表示(或称嵌入式、向量)后,发现深入学习和理解主成分分析十分有必要,主成分分析(Principal Component Analysis,PCA)可以帮助我们把数据中,相对不重要、或者说对于数据没有很强的区分能力的维度去掉,将数据映射到一个有着主要能区分数据、数据的相关性不大的维度空间里。 


这是一个非常经典和美妙的数据分析方法。属于数据降维的方法中的一种(如SVD、LDA、t-SNE等等)。而且在上次师兄讲过PCA的原理后(虽然走神了没听懂。。。)一直想学习和实践,因为这个方法对于目前我对于数据的分析十分有用和迫切需要。前几天把PCA的数学原理学习了一下,同时还回去复习了一下线代。。。今天趁着周末有空就来实践一下啦! 


接下来我将阐述PCA的数学原理,以及在scikit-learnmatlab和谷歌的embedding projector上进行实验。

2. PCA的数学原理

在数据挖掘和机器学习中,数据通常被表示成向量。举一个网上人们嚼的烂的例子,某淘宝店一年的数据分析信息如下,其中每一条代表了一天的交易数据: 
       [日期,浏览量,访客数,下单数,成交数,成交金额] 


一般来讲,日期是一个记录标志,不是度量值,我们对于数据分析分析的是度量值,所以把日期删掉。然后得到一个五维向量: 
[浏览量,访客数,下单数,成交数,成交金额]T 


我们一般取列向量而不是行向量,因为当多条数据组成矩阵之后每一列代表一条数据,可以在后面的运算看到,这样表示的话方便我们表示特征矩阵及之后的运算(估计是习惯了吧,词向量那块人们也都这样做的,忽然转过去的话看起来不习惯。。)。 

那么什么是主要成分、什么是区分不同数据能力不强的特征(维度)? 

对于上面的例子来说,浏览量访客数往往具有较强的相关关系,下单数成交数也有较强的相关关系,所以这两对每一对的两个特征之间对于数据的区分能力不强,也就是说这两对每一对的两个特征中,我们可以去掉其中任意一个,我们期待这样并不会丢失太多信息。为什么要删除呢?因为我们要降低机器学习算法的复杂度。

 

以上讲的就是PCA的简单的思想描述有助于直观理解降维的动机和可行性,但并不具有操作指导意义。如:对于数据维数非常大,并且各维没有实际含义,我们应该删除哪行?如何度量各维度携带的信息量? 


所以接下来就要介绍PCA主要的实现原理了。 

2.1 PCA的主要实现原理

在讲原理之前不得不提的就是向量(或矩阵)的乘法的理解问题了,这里我们举一个简单的例子:A=(X1,Y1)、B=(X2,Y2),对于这两个向量的点乘AB我们知道可以表示为:A在B向量上的投影*B向量的长度,如下图所示。那如果B向量的长度是单位长度,那点乘就是A向量在B上的投影长度,将这个想法拓展到矩阵(如果B矩阵每一列的L2范数等于1),我们可以认为是A矩阵在B矩阵表示的向量空间中的投影。 

目前所使用的这种坐标系是经典的笛卡尔坐标系,也就是默认基底由(如果是2维空间的话)(1,0)(0,1)组成,那么如果我们找到一组基底,基底之间线性无关,那么就可以构成一个向量空间。 
例如二维空间,我们可以使用(1,1)(-1,1)组成一组基底。但我们希望基底模(L2范数)为1,所以归一化后,如下图表示一个(3,2)的向量在新的基底表示下的坐标: 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值