【三维点云的格式】1.2 PCA

初识

直观

PCA,pricipal components analysis,主成分分析

主成分(pricipal components)是一系列互相正交(orthogonality)的单位向量(unit vectors),组成了正交基(orthonormal basis)。
PCA就是改变数据的正交基。

主成分的选择
这些单位向量的方向通常是使得数据到该直线的的距离最小(minimize b),或者数据到该原点的投影距离最大(maximize a),即 m i n S S = a 1 2 + a 2 2 + . . . + a n 2 min SS = a_1^2+a_2^2+...+a_n^2 minSS=a12+a22+...+an2
单位向量
确定好拟合直线,对该向量进行单位化,得到第一个主成分单位向量。然后根据该直线找到其正交的另一条直线,即可得到第二个主成分单位向量。
最终结果图
将这个正交基旋转合适的角度,重新画图,得到PCA后的数据。

专业术语 Terminology

  • 数据在主成分
  • S S = E i g e n v a l u e SS = Eigenvalue SS=Eigenvalue
  • E i g e n v a l u e = S i n g u l a r \sqrt{Eigenvalue} = Singular Eigenvalue =Singular
  • unit vector = singular vector = eigenvector
  • 单位向量的分量,如0.6、0.8,叫做 loading scores
  • S S ( n − 1 ) = V a r i a t i o n , n 为 维 数 \frac{SS}{(n-1)} = Variation,n为维数 (n1)SS=Variationn
  • 展示Variation的图,叫做 scree plot
  • scree plot
    结果
    扩展到三维数据,拟合得到红色的线,根据红色的线得到正交的蓝色、黑色,最终得到正交基。最终的结果是,两两相交得到一个正交基,在此基础上可以画图。

PCA的应用(Applications)

  • Dimensionality reduction 降维
  • Surface normal estimation 表面法向量估计
  • Canonical orientation 规范方向
  • Keypoint detection 关键点检测
  • Feature description 特征描述

理解

Vector Dot Product 内积:
Vector Dot Product 内积

基变换:数据与基做内积运算,结果作为新的坐标分量。

Matrix-Vector Multiplication : Linear combination

( a 11 a 12 a 13 a 21 a 22 a 23 ) ( x 1 x 2 x 3 y 1 y 2 y 3 z 1 z 2 z 3 )   = ( v 11 v 12 v 21 v 22 ) \begin{gathered} \begin{pmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \end{pmatrix} \quad \begin{pmatrix} x_1 & x_2 & x_3 \\ y_1 & y_2 & y_3 \\ z_1 & z_2 & z_3 \end{pmatrix} \quad \ = \begin{pmatrix} v_{11} & v_{12} \\ v_{21} & v_{22} \end{pmatrix} \quad \end{gathered} (a11a21a12a22a13a23)x1y1z1x2y2z2x3y3z3 =(v11v21v12v22)
其中 a i j a_{ij} aij表示第 i i i个主成分; x i y i z i x_i y_i z_i xiyizi表示第 i i i个原数据; v i j v_{ij} vij表示第 j j j个原数据投影到第 i i i个主成分下的值
得到值的过程 v i j = a i 1 ∗ x j + a i 2 ∗ y j + a i 3 ∗ z j v_{ij} = a_{i1}*x_j + a_{i2}*y_j + a_{i3}*z_j vij=ai1xj+ai2yj+ai3zj是内积运算,即得到的值就是原始数据到主成分向量的投影

为什么选择距离最近<->投影距离最远
( the variance of the projected data points on that direction is maximal)

为了尽可能多的保存数据的原始信息,即使得数据变换后尽可能分散,如果数据过于集中,那么得到的数据单一而缺少意义

为社么后续主成分直接由垂直得到

在得到转变后的第一组和第二组数据之间,我们希望他们是线性不相关的(linearly uncorrelated)
如果二者有线性关系,数据过于相似,则是无效的
衡量两个数据之间的相关性是用的协方差,即为了使得协方差为0,尽可能保证原始数据的信息,减少信息丢失,主成分选择与前一个主成分正交的向量

公式

预备

covariance Cov 协方差:
Cov协方差 covariance
Multivariate random variable 协方差矩阵:
Multivariate random variable 协方差矩阵
Singular Value Decompositionm SVD 奇异值分解:
在这里插入图片描述
从SVD的角度去理解物理意义:比如说上图中的矩阵 M M M,他可以被分解成 U ∑ V ∗ U \sum V^* UV其中 U U U V V V都是一个正交矩阵(类似于旋转矩阵的东西), ∑ \sum 就是一个对角阵,他的对角线上储存了 M M M的特征值,如果我把 M M M乘以一个向量,第一步其实就是应用 V V V在高维空间对这个向量做一个旋转,第一步这个圆被旋转了一下;第二步 ∑ \sum 就是对这个旋转后的向量在每一个维度上做一个缩放,所以这个圆就变成了一个椭圆;第三步:再应用 U U U,也是高维空间上的旋转矩阵,所以我就把这个椭圆给旋转了一下。所以最后 M M M乘以一个向量就是把这个圆变成了椭圆。

eigenvalue decomposition EVD 特征值分解:
在这里插入图片描述
U U U的每一列都是相互正交的特征向量,且是单位向量,满足 U T U = I U^TU=I UTU=I Λ \Lambda Λ对角线上的元素是从大到小排列的特征值,非对角线上的元素均为0。
旋转矩阵一定是对称的正交矩阵,单位正交矩阵,且行列式为1,即是旋转矩阵。

Rayleigh Quotients 瑞利熵:
在这里插入图片描述
所以瑞利熵说的就是我这个 A A A最终能够拉长或者缩短我这个向量 x x x多少倍,就是 λ m i n \lambda _{min} λmin λ m a x \lambda _{max} λmax是A的最小和最大特征值。
证明:
在这里插入图片描述

推导

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
U是正交矩阵,所以u2正交与u1,即上述所说的确定好第一个主成分后,后面的主成分选择和他正交的

在这里插入图片描述

Kernel PCA

上述普通的PCA其实是一个线性的PCA,因为所谓的矩阵乘法也是一个线性操作而已,因为矩阵乘以向量其实是对矩阵列的线性组合。当遇到的数据不是线性时,可以选择先升到高维(high dimension),再PCA。将原来二维空间的数据,升到三维空间,再做以划分。这个升维操作就叫做Kernel PCA。
在这里插入图片描述
具体定义:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接

  1. StatQuest: Principal Component Analysis (PCA), Step-by-Step:https://www.youtube.com/watch?v=FgakZw6K1QQ
  2. https://blog.youkuaiyun.com/m0_37957160/article/details/115350430
  3. https://zhuanlan.zhihu.com/p/37609917
  4. http://www.ams.org/publicoutreach/feature-column/fcarc-svd
  5. https://blog.youkuaiyun.com/qq_40824311/article/details/102607966
  6. https://zhuanlan.zhihu.com/p/59775730
### 使用PCA算法三维点数据进行平面拟合 #### 数据准备 为了使用主成分分析(PCA)对三维点数据进行平面拟合,首先要准备好点云数据。假设有一个由 \(N\) 个三维点 \((x_i, y_i, z_i)\) 组成的数据集。 ```python import numpy as np # 假设这是读取得到的点云数据 points = np.random.rand(100, 3) # 随机生成100个三维点作为例子 ``` #### 中心化处理 在执行PCA之前,通常需要先将数据中心化,即将所有点移动到原点附近,这一步骤有助于提高后续计算精度[^1]。 ```python mean_point = points.mean(axis=0) centered_points = points - mean_point ``` #### 计算协方差矩阵并求解特征值与特征向量 接着构建协方差矩阵,并对其进行特征分解以获取特征值及其对应的特征向量。这三个特征向量代表了原始坐标系下的新基底方向;而特征值则反映了沿各个主成分方向上的数据变化程度大小。 ```python cov_matrix = np.cov(centered_points.T) eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) order = eigenvalues.argsort()[::-1] eigenvalues = eigenvalues[order] eigenvectors = eigenvectors[:, order] ``` #### 获取法向量和平面参数 根据上述理论,在三维情况下第三个主成分对应的就是最接近垂直于所要拟合平面的那个方向——也就是该平面上任意一点处的法线方向。因此可以直接选取最小特征值对应的单位长度特征向量作为最终估计出来的平面法向量\[n=(a,b,c)^T\][^3]。 ```python normal_vector = eigenvectors[:, 2] # 平面的一般形式为 ax + by + cz + d = 0 d = -np.dot(normal_vector, mean_point) plane_equation = f"{normal_vector[0]:.4f} * x + {normal_vector[1]:.4f} * y + {normal_vector[2]:.4f} * z + {d:.4f}" print(f"The fitted plane equation is: {plane_equation}") ``` 通过以上步骤就可以完成基于PCA方法对给定点云数据集的一个最佳拟合平面建模过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值