PCA与SVD
PCA:
PCA定义:
PCA(Principal Component Analysis)是一种常用的数据分析方法。是一种无监督降维方法,PCA通过线性变换将原始数据进行线性变换、映射到低维空间中,使得各维度线性无关的表示,可用于提取数据的主要特征分量。
缺少特征值信息的数据影响和处理
解决方法可以有四种:
1.直接删除缺失的样本
优点:简单 缺点:浪费资源,无法处理大量缺失的任务
2.用平均值,中位数,分位数,众数,随机值等代替
优点:简单 缺点:认为增加了噪声
3.用其他变量做预测模型来算出缺失变量
缺点:有其他变量与缺失变量无关,则预测结果无意义
4.最精确的做法,把变量映射到高维的空.
比如性别,有男,女,缺失,则映射成3个变量:男,女,是否缺失
sklearn中处理缺失值的库Imputer
from sklearn.preprocessing import Imputer
Imputer(missing_values=‘NaN’,strategy=‘mean’,axis=0)
PCA降维的意义
在数据分析或者推荐算法的应用场景下,注定会使用更多的特征去描述数据,以便收集大量的数据去寻找规律。
更多的特征注定会增加研究准确性。但是在大多数情况下,许多特征之间存在关系,从而增加了模型的复杂性,对数据分析带来不便。如果对每个特征进行分析,信息会被孤立。而且减少特征信息,也很容易产生错误的结论。
为了能够减少分析特征的同时,又尽量减少原指标的信息损失,对收集的数据进行全面的分析。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法
pca思想
投射后的样本越分散,保留的信息量越多
做法:是投射后的样本方差最大
关于pca算法原理
[参照博客:http://blog.csdn.net/zhongkelee/article/details/44064401]
PCA算法降维方法步骤
1)中心化
(2)求协方差矩阵
(3)对协方差矩阵特征值分解
(4)取前K个较大的特征值对应的特征向量
(5)矩阵相乘投影变换
SVD奇异值分解
也是一种线性代数的概念
特征值分解只可以在方阵中进行处理,不能应用的非方阵中
特征值分解可以利用到降维的处理中,提升使用效率
但是大多数矩阵都是非方阵形式,所以不可能进行特征值分解
这里应运而生SVD(奇异值)分解
可以解决非方阵使用特征值分解的方法,这种方法被称作奇异值分解
矩阵的奇异值分解是指,将一个非零的m×n实矩阵A,A∈Rm×n,表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解:
其中U是m阶正交矩阵,V是n阶正交矩阵,Σ是由降序排列的非负的对角元素组成的m×n矩形对角矩阵
UΣVT 称为矩阵A的奇异值分解,σi 称为矩阵A的奇异值,U的列向量称为左奇异向量,V的列向量称为右奇异向量
不要求方阵即可进行分解,因此采用思想将矩阵转化成实对称矩阵进行运算
这里ΣΣT与ΣTΣ在矩阵的角度上来讲,它们是不相等的,因为它们的维数不同ΣΣT∈Rm×m,而ΣTΣ∈Rn×n,但是它们在主对角线的奇异值是相等的
矩阵的奇异值分解一定存在,但不唯一。奇异值分解可以看做矩阵数据压缩的一种方法
∑ 奇异值矩阵 对角矩阵,奇异值由大到小排列,奇异值越大,存储的信息量越大