问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PCA降维算法原理与实现

创作时间:
作者:
@小白创作中心

PCA降维算法原理与实现

引用
CSDN
1.
https://blog.csdn.net/m0_62716099/article/details/141813685

什么是PCA?

主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维技术,广泛应用于统计学、机器学习和数据科学等领域。它的主要目标是通过将数据从高维空间映射到低维空间,以保留数据的主要特征,并减少数据的维度。

PCA的主要应用场景包括:

  1. 数据降维:提取主要特征,减少算法的计算量
  2. 高维数据可视化:将高维数据通过PCA降维为2或3维,便于进行可视化

PCA的工作原理

PCA算法可以分为五个基本步骤:

1. 数据标准化

PCA通过计算方差来判断一个坐标轴上的信息量。为了确保方差计算的准确性,需要对数据集中的每一维特征进行标准化处理。这样可以避免范围较大的某一维数据对结果产生过大的影响。

2. 计算协方差矩阵

协方差矩阵用于计算数据集中不同维度之间的相关性。以一个三维点集为例,会得到一个3x3的协方差矩阵,其中对角线代表各维度本身的方差。所有估计都是无偏估计。

3. 计算特征矩阵与特征值

利用协方差矩阵计算特征向量与特征值。以一个二维点集为例,可以得到如下结果:

其中,v1和v2是特征向量,λ1和λ2是对应的特征值。在PCA中,特征值λ可以理解为信息量,特征向量则代表原始坐标轴的比例。例如,利用v1得到的新坐标轴可以表示为:0.67 * x + 0.73 * y(需要先对x和y进行标准化)。因此,PCA得到的新特征是以往特征的线性组合,可读性较差,没有真实的物理意义。

4. 特征向量排序

将特征值按照大小进行降序排序,让信息含量多的特征向量排在前面作为最主要成分。信息量的可视化如下:

5. 数据映射

根据需要的维度数量,对特征向量进行列方向上的拼接,然后通过矩阵计算的方式进行映射。

PCA的Python实现

PCA在Python中可以通过sklearn库实现,以下是将高维数据降维为2维并可视化的示例代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine
from sklearn.decomposition import PCA

# 加载数据集
data = load_wine()
features = data.data    # (178, 13),特征维度为13
label = data.target[:, np.newaxis]  # (178,) -> (178, 1)

# 使用PCA将特征维度降为2
pca = PCA(n_components=2)
cor = pca.fit_transform(features)   # (178, 2)

# 可视化结果
plt.scatter(cor[:, 0], cor[:, 1], c=label)
plt.show()

PCA参数说明

以下是PCA的主要参数说明:

  1. n_components:指定要保留的主成分数量。默认为None,表示保留所有成分。
  2. copy:布尔值,默认为True。如果设置为True,则数据矩阵的副本将被计算,原始数据不会被修改。
  3. whiten:布尔值,默认为False。如果设置为True,则数据将被白化,转换后的主成分将具有单位方差且彼此不相关。
  4. svd_solver:指定用于计算奇异值分解(SVD)的算法,默认为'auto'。可选值包括'auto'、'full'、'arpack'和'randomized'。
  5. tol:当使用ARPACK或随机化方法时,定义奇异值截断的容忍度,默认为0.0。
  6. iterated_power:当使用随机化方法时,定义迭代次数,默认为'auto'。
  7. n_oversamples:当使用随机化方法时,定义过采样的数量,默认为10。
  8. power_iteration_normalizer:定义在随机化方法中使用的归一化策略,默认为'auto'。可选值包括'auto'、'QR'、'LU'和'none'。
  9. random_state:当svd_solver为'arpack'或'randomized'时,用于控制随机数生成器的状态,默认为None。

建议读者养成查看官方文档的习惯,以便更好地理解和使用PCA。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号