线性相关变量
表示的观测数据 转换为
少数几个由线性无关
变量表示的数据,线性无关的变量 称为 主成分通常小于
原始变量的个数,所以PCA属于降维方法基本结构
,即数据中变量之间的关系
,是数据分析的有力工具,也用于其他机器学习方法的前处理
多元统计分析
的经典方法第一轴选取方差最大的轴 y1
主成分分析 的主要目的是降维,所以一般选择 k(
)个主成分(线性无关变量)来代替m个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息(原有变量的方差)。
在实际问题中,不同变量可能有不同的量纲,直接求主成分有时会产生不合理的结果。
为了消除这个影响,常常对各个随机变量实施规范化,使其均值为0,方差为1
。
主成分分析的结果可以用于其他机器学习方法的输入。
定义:
假设
为
维随机变量,均值为
,协方差矩阵为
随机变量
到
维随机变量
的线性变换
其中
如果该线性变换满足以下条件,称之为总体主成分:
是
的所有线性变换中方差最大的
,
是与
不相关的
的所有线性变换中方差最大的,以此类推,
称为第一主成分…第
主成分
假设
是
维随机变量,其协方差矩阵
的特征值分别是
,特征值对应的单位特征向量分别是
,则
的第
主成分可写作:
并且,
的第
主成分的方差是协方差矩阵
的第
个特征值,即:
主成分性质:
的协方差矩阵
是对角矩阵
的方差之和
等于随机变量
的方差之和
其中
是
的方差,即协方差矩阵
的对角线元素
与变量
的 相关系数
称为因子负荷量(factor loading),它表示第
个主成分
与变量
的相关关系,即
对
的贡献程度
是基于样本协方差矩阵
的主成分分析
给定样本矩阵
的样本协方差矩阵
`$S = s_{ij}{m \times n}, \quad s{ij} = \frac{1}{n-1}\sum\limits{k=1}^m(x{ik}-\bar xi)(x{jk}-\bar x_j)\
i = 1,2,...,m,\quad j = 1,2,...,m, 其中 \bar xi = \frac{1}{n}\sum\limits{k=1}^n x_{ik}$`
给定样本
,考虑
到
的线性变换
如果满足以下条件,称之为样本主成分:
是在
条件下,使得
的样本方差
最大的
的线性变换,以此类推。
主成分
是在
和
与
的样本协方差
条件下,使得
的样本方差
最大的
的线性变换
样本矩阵
,求样本相关矩阵
相关矩阵
的 个特征值和对应单位特征向量,构造正交矩阵
的每一列对应一个主成分,得到
样本主成分矩阵
样本矩阵
,
进行截断奇异值分解
,保留
得到
的每一列对应一个主成分,得到
样本主成分矩阵
sklearn.decomposition.PCA 官网介绍
class sklearn.decomposition.PCA(n_components=None, copy=True,
whiten=False, svd_solver='auto', tol=0.0,
iterated_power='auto', random_state=None)
参数:
n_components:保留主成分个数,没有赋值,特征个数不变
属性:
components_:主成分
explained_variance_:各特征方差
explained_variance_ratio_:各特征方差百分比
singular_values_:主成分的奇异值
n_components_:保留特征个数
方法:
import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
plt.scatter(X[:, 0], X[:, 1])
plt.show()
for n in range(1, 3):
print("PCA n_components = {}".format(n))
pca = PCA(n_components=n)
pca.fit(X)
print("特征方差")
print(pca.explained_variance_)
print("特征方差占比")
print(pca.explained_variance_ratio_)
print("主成分奇异值")
print(pca.singular_values_)
print("主成分")
print(pca.components_)
print("主成分个数")
print(pca.n_components_)
PCA n_components = 1
特征方差
[7.93954312]
特征方差占比
[0.99244289]
主成分奇异值
[6.30061232]
主成分
[[-0.83849224 -0.54491354]]
主成分个数
1
PCA n_components = 2
特征方差
[7.93954312 0.06045688]
特征方差占比
[0.99244289 0.00755711]
主成分奇异值
[6.30061232 0.54980396]
主成分
[[-0.83849224 -0.54491354]
[ 0.54491354 -0.83849224]]
主成分个数
2