机器学习——主成分分析 PCA简单

一,基本概念

主成分分析(PCA)是一种数据降维技术,它可以将高维数据转换为低维数据,并保持原始数据的最大方差。PCA可以用于数据可视化、特征提取、数据压缩等应用。

PCA的基本思想是找到一个新的坐标系,使得数据在新的坐标系下具有最大的方差。这样做可以减少数据的冗余信息,提取出最主要的特征。

1.特征维度约减的概念

特征约减的目的是将高维特征向量映射到低维子空间中 .
给定 n 个样本(每个样本维度为p维):x1,x2,x3....xn.
通过特征变换 / 投影矩阵实现特征空间的压缩:

2.为何要维度约减?

•大多数机器学习算法在高维空间中表现不够鲁棒.
有价值的维度往往很少
解决方法
•  可视化 : 高位数据在 2D 3D 空间中的可视化
维度约减 : 高效的存储与检索
噪声消除 : 提升分类或识别精度
常规维度约减方法

二,主成分分析 (PCA)基本思路

1.主成分分析 (PCA)基本思路

通过协方差分析,建立 高维空间到低维空间的线性映射 / 矩阵
保留尽可能多的样本信息
压缩后的数据对分类、聚类尽量不产生影响,甚至有所提升
将原始高维向量通过投影矩阵,投射到低维空间
这些向量称为 主成分 (PCs), 具有无关性、正交的特点。重要
的是这些向量的数量要远小于高维空间的维度
如下所示:

2.主成分的代数定义和推导

2.1定义

2.2推导

为了最大化在新空间中的方差,PCA优化目标是寻找一个投影矩阵W,使得在新空间中,投影后的数据的方差最大。由于投影后的数据的方差等于其协方差矩阵的特征值,因此PCA的优化问题可以转化为求解协方差矩阵的前k个最大特征值和对应的特征向量。具体地,我们可以进行如下的推导:

设Z为中心化后的数据矩阵,其协方差矩阵为Cov(Z) = Z'Z/(n-1),其中Z'表示Z的转置。将Z表示为XW,则有:

Cov(Z) = Cov(XW) = W'Cov(X)W

由于Cov(X)是对称矩阵,因此可以进行特征值分解,得到其特征向量和特征值,即:

Cov(X) = VDV'

其中,V是由特征向量组成的正交矩阵,D是由特征值组成的对角矩阵。

将Cov(Z)代入上式,可以得到:

Cov(Z) = W'VDV'W

根据矩阵乘法的结合律,可以将W'VD表示为Q,即:

Q = W'V

则有:

Cov(Z) = QDQ'

由于我们要最大化在新空间中的方差,因此需要找到前k个最大的特征值对应的特征向量作为投影矩阵W。具体而言,我们需要选择V的前k列组成一个新的矩阵Vk,然后将Vk乘以Q,得到投影矩阵W = VkQ。最后,将原始数据矩阵X乘以投影矩阵W,即可得到降维后的数据矩阵Z = XW。

三,pca流程和简单的代码示例

1.PCA的步骤如下:

  1. 对数据进行预处理,使其均值为0。
  2. 计算数据的协方差矩阵。
  3. 对协方差矩阵进行特征值分解,得到特征向量和特征值。
  4. 选取前k个最大的特征值对应的特征向量,构成新的坐标系。
  5. 将数据投影到新的坐标系中,得到降维后的数据。

2.简单的代码示例

import numpy as np

# 生成随机数据
X = np.random.randn(100, 5)

# 数据预处理,均值为0
X_mean = np.mean(X, axis=0)
X_centered = X - X_mean

# 计算协方差矩阵
cov_matrix = np.cov(X_centered.T)

# 特征值分解
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix)

# 选择前k个最大特征值对应的特征向量
k = 2
top_k_eigenvectors = eigenvectors[:, :k]

# 数据投影到新的坐标系中
X_pca = np.dot(X_centered, top_k_eigenvectors)

# 输出降维后的数据
print(X_pca)

部分结果:

输出的结果是降维后的数据矩阵 X_pca。它的形状是 (100, 2),表示每一行对应原始数据的一条记录,每一列对应新的坐标系中的一个主成分。

代码实现了一个简单的PCA过程,包括数据预处理、协方差矩阵计算、特征值分解和数据投影等步骤。下面是对代码的详细说明:

  1. 生成随机数据:使用np.random.randn函数生成一个形状为(100, 5)的随机数据矩阵X。

  2. 数据预处理:计算数据的均值,然后将原始数据减去均值,得到中心化的数据矩阵X_centered。

  3. 计算协方差矩阵:使用np.cov函数计算中心化数据的协方差矩阵cov_matrix。该函数要求输入的数据矩阵的每一列代表一个变量,每一行代表一个观测值,因此需要将数据矩阵进行转置。

  4. 特征值分解:使用np.linalg.eig函数对协方差矩阵进行特征值分解,得到特征值eigenvalues和特征向量eigenvectors。

  5. 选择前k个最大特征值对应的特征向量:根据降序排列的特征值,取前k个特征向量作为投影矩阵的列向量,构成top_k_eigenvectors。

  6. 数据投影:将中心化的数据矩阵X_centered与投影矩阵top_k_eigenvectors相乘,得到降维后的数据矩阵X_pca。

  7. 输出降维后的数据:打印降维后的数据矩阵X_pca,它的形状是(100, 2),表示每一行对应原始数据的一条记录,每一列对应新的坐标系中的一个主成分。

这段代码展示了如何使用NumPy库进行PCA降维,并通过生成随机数据进行演示。可以根据自己的数据进行相应的调整和应用。

四,自我总结

小结:

  • PCA(Principal Component Analysis)是一种常用的降维方法,通过找到数据中的主成分来减少特征的数量。
  • PCA的过程包括数据预处理、计算协方差矩阵、特征值分解和数据投影等步骤。
  • 特征值分解可以得到特征值和特征向量,特征向量表示新的坐标系的方向,特征值表示特征向量的重要程度。

可以提升的地方:

  • 可以更深入理解PCA原理:深入理解PCA的数学原理和几何意义,包括如何选择主成分、如何解释方差的保留率等。
  • 对数据预处理:根据具体问题,进行合适的数据预处理,可以去除异常值、标准化/归一化数据等,以确保得到准确的结果。
  • 应用到实际问题:将学到的PCA知识应用到实际问题中,例如数据探索、可视化、分类等,以发现数据的潜在结构和简化复杂性。这次实验只是简单的对数据处理,还可以提升到可视化的问题中,这是最应该提升的地方。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主成分分析(Principal Component Analysis,PCA)是一种常用的特征提取方法。它通过线性变换将原始数据投影到一个新的坐标系中,使得投影后的数据具有最大的方差。这些新的坐标轴被称为成分,它们是原始数据中最能区分样本之间差异的方向。 PCA的基本思想是找到一个最佳的投影方向,使得数据在该方向上的投影具有最大的方差,然后找到一个与第一个方向正交的第二个方向,使得数据在该方向上的投影具有次大的方差,依此类推。通过选择前k个成分,就可以将原始数据降维到k维空间中。 PCA具有以下几个应用和优点: 1. 数据降维:通过PCA可以将高维数据降低到低维空间,减少特征数量,同时保留了原始数据中最重要的信息。 2. 去除冗余信息:PCA可以去除原始数据中的冗余信息,提取出最相关的特征。 3. 数据可视化:PCA可以将高维数据映射到二维或三维空间中,便于可视化观察和分析。 4. 数据预处理:PCA可以在机器学习任务前对数据进行预处理,减少噪声和冗余信息对模型的影响。 5. 特征选择:基于PCA的方差解释率,可以选择保留多少个成分,从而选择最具代表性的特征。 需要注意的是,PCA是一种线性降维方法,对于非线性的数据分布效果可能不好。在这种情况下,可以考虑使用非线性降维方法,如核主成分分析(Kernel PCA)等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值