PCA降维

定义

主成分分析(PCA)是常用的线性数据降维技术,采用一种数学降维的方法,在损失很少信息的前提下,找出几个综合变量作为主成分,来代替原来众多的变量,使这些主成分能够尽可能地代表原始数据的信息,其中每个主成分都是原始变量的线性组合,而且各个主成分之间不相关(即线性无关)

基本原理

找出第一个主成分的方向,也就是数据 方差最大 的方向。
找出第二个主成分的方向,也就是数据 方差次大 的方向,并且该方向与第一个主成分方向 正交(orthogonal 如果是二维空间就叫垂直)。
通过这种方式计算出所有的主成分方向。
通过数据集的协方差矩阵及其特征值分析,我们就可以得到这些主成分的值。
一旦得到了协方差矩阵的特征值和特征向量,我们就可以保留最大的 N 个特征。这些特征向量也给出了 N 个最重要特征的真实结构,我们就可以通过将数据乘上这 N 个特征向量 从而将它转换到新的空间上

简单代码实例

import numpy as np

# 生成示例数据
np.random.seed(0)
data = np.random.rand(5, 3)  # 5个样本,每个样本有3个特征

# 计算均值
mean = np.mean(data, axis=0)

# 中心化数据(减去均值)
centered_data = data - mean

# 计算协方差矩阵
cov_matrix = np.cov(centered_data, rowvar=False)

# 计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)

# 对特征值排序
sorted_indices = np.argsort(eigenvalues)[::-1]
eigenvalues = eigenvalues[sorted_indices]
eigenvectors = eigenvectors[:, sorted_indices]

# 选择要保留的主成分数量
num_components = 2

# 取前num_components个特征向量
selected_eigenvectors = eigenvectors[:, :num_components]

# 使用特征向量变换数据
reduced_data = np.dot(centered_data, selected_eigenvectors)

# reduced_data现在包含了降维后的数据,每行是一个样本,每列是一个主成分

print("原始数据:\n", data)
print("降维后的数据:\n", reduced_data)

你可能感兴趣的:(ML——algorithm,算法,机器学习)