概述
降维的作用
①数据在低维下更容易处理、更容易使用;
②相关特征,特别是重要特征更能在数据中明确的显示出来;如果只有两维或者三维的话,更便于可视化展示;
③去除数据噪声
④降低算法开销
降维通俗点的解释
一些高维度的数据,比如淘宝交易数据,为便于解释降维作用,我们在这假设有下单数,付款数,商品类别,售价四个维度,数据量上百万条,对于下单数和付款数,我们可以认为两者是线性相关的,即知道下单数,我们可以得到付款数,这里很明显这两个属性维度有冗余,去掉下单数,保留付款数,明显能再保证原有数据分布和信息的情况下有效简化数据,对于后面的模型学习会缩短不少时间和空间开销。这就是降维,当然并不是所有数据中都会有过于明显线性相关的属性维度,我们降维后最终的目标是各个属性维度之间线性无关。
PCA降维步骤原理*
首先既然要度量那些是否存在相关的属性,我们就要用到协方差,在博客相关分析中有介绍,这里不再赘述,协方差衡量的是2维属性间的相关性,对于n个维度的属性,就需要协方差矩阵,其对角线为各维度的方差。
步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵
4)求出协方差矩阵的特征值及对应的特征向量r
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)即为降维到k维后的数据
关于维数k的选择*
使用一个公式error=,表示压缩后的误差,m所有特征的个数,然后确定一个阈值x,比如0.01,选取一个K,使得error < x则我们认为这个m可以接受,否则尝试其他.
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)
最后
以上就是微笑小蘑菇为你收集整理的PCA降维原理和作用的全部内容,希望文章能够帮你解决PCA降维原理和作用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复