主成分分析(Principal Component Analysis, PCA)是一种常用的数据分析技术
,主要用于数据降维和特征提取
。
PCA通过线性变换将原始数据投影到新的坐标轴上
,这些新的坐标轴(即主成分
)是数据的线性组合,并且彼此正交(相互独立)。PCA的目标是找到数据的“主方向”
,即数据分布的最大方差方向,从而保留数据的最多信息。
PCA是通过正交变换
将存在相关性的变量转换为线性不相关变量
,转换后的不相关变量称为主成分
,目的是将存在密切相关性的变量间的重叠部分删去
,建立尽可能少的新综合变量
,且新变量能够尽可能多地保持原有的信息。
PCA的基本流程:
-
数据预处理
:中心化数据(减去均值)。 -
计算协方差矩阵
:衡量各特征之间的关系。 计算协方差矩阵的特征值和特征向量。
选择前k个最大特征值对应的特征向量,形成变换矩阵。
将原始数据乘以变换矩阵,得到降维后的数据。
PCA的数学公式:
假设我们有 m 个样本,每个样本有 n 个特征
,数据矩阵记作 ,其中
1. 数据中心化
其中,是每列特征的
平均值向量。
2. 协方差矩阵
3. 特征值和特征向量
求解协方差矩阵的特征值
和相应的特征向量
。
4. 选择主成分
选择最大的k个特征值对应的特征向量
,构成矩阵。
5. 数据投影
其中,是
降维后的数据矩阵。
公式解释:
:
原始数据矩阵。
:
中心化后的数据矩阵。
:
特征的平均值向量。
:
协方差矩阵
,用于衡量特征间的线性相关性。:
特征值
,表示在对应特征向量方向上的数据方差。:
特征向量
,表示数据的主要方向。:
由前k个特征向量组成的矩阵,用于数据投影。
:
降维后的数据矩阵
。
PCA通过以上步骤,可以有效地降低数据的维度
,同时尽可能地保留数据中的重要信息。
python代码