PCA降维

1.降维的作用

①数据在低维下更容易处理、更容易使用;
②相关特征,特别是重要特征更能在数据中明确的显示出来;如果只有两维或者三维的话,更便于可视化展示;
③去除数据噪声
④降低算法开销

2.降维通俗点的解释

一些高维度的数据,比如淘宝交易数据,为便于解释降维作用,我们在这假设有下单数,付款数,商品类别,售价四个维度,数据量上百万条,对于下单数和付款数,我们可以认为两者是线性相关的,即知道下单数,我们可以得到付款数,这里很明显这两个属性维度有冗余,去掉下单数,保留付款数,明显能再保证原有数据分布和信息的情况下有效简化数据,对于后面的模型学习会缩短不少时间和空间开销。这就是降维,当然并不是所有数据中都会有过于明显线性相关的属性维度,我们降维后最终的目标是各个属性维度之间线性无关。

3.PCA降维步骤原理*

首先既然要度量那些是否存在相关的属性,我们就要用到协方差,在博客相关分析中有介绍,这里不再赘述,协方差衡量的是2维属性间的相关性,对于n个维度的属性,就需要协方差矩阵,其对角线为各维度的方差。

步骤:

                   设有m条n维数据。

                  1)将原始数据按列组成n行m列矩阵X

                  2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

                  3)求出协方差矩阵

                  4)求出协方差矩阵的特征值及对应的特征向量r

                  5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P

                  6)即为降维到k维后的数据

4.关于维数k的选择*

使用一个公式error=在这里插入图片描述,表示压缩后的误差,m所有特征的个数,然后确定一个阈值x,比如0.01,选取一个K,使得error < x则我们认为这个m可以接受,否则尝试其他.

5.python中sklearn库的pca实现*

from sklearn.decomposition import PCA
import numpy as np
from sklearn.preprocessing import StandardScaler
 
x=np.array([[10001,2,55], [16020,4,11], [12008,6,33], [13131,8,22]])
 
# feature normalization (feature scaling)
X_scaler = StandardScaler()
x = X_scaler.fit_transform(x)
 
# PCA
pca = PCA(n_components=0.9)# 保证降维后的数据保持90%的信息
pca.fit(x)
pca.transform(x)

6.PCA原理的公式化表达如下:*
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在上式中,y为变换后的特征矢量,x为原始特征矢量,W是变换矩阵。
6.变换矩阵是被限制为随轴心(维度)变化的,如变换矩阵W是各列之间归一化正交的,各行不是正交的。*
7.PCA原理的公式化表达如下:PCA假设变量服从高斯分布,当变量不服从高斯分布(如均匀分布)时,会发生尺度缩放与旋转*
https://blog.csdn.net/javastart/article/details/79748677
https://blog.csdn.net/u014755493/article/details/69950744
https://blog.csdn.net/shulixu/article/details/52894413

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值