最小二乘法与主成分分析法原理及应用详解和它们的联系_最小二乘法和主成分分析-程序员宅基地

技术标签: 算法  矩阵  线性代数  数据挖掘  

       网上关于最小二乘法及主成分分析的介绍数不胜数,这两种方法均为挖掘数据分布规律的最重要也是最基本的工具。主成分分析法与最小二乘法实际上有所联系,前者分析出的“主方向”实质上是最小二乘法的线性拟合情形。但大多数文章并未将此二者进行联系与比较。本篇博客结合网络上的各种论述与作者自身的理解,辅之以直观的几何概念与严密的数学推导,对这两种方法进行一个原理详解与对比。由于作者本身为在读工科研究生,诸多不周甚至错误敬请各位大佬批评指正!

      本篇博客为博主耗时一天的原创文章,转载请注明出处!

      本篇博客适合没有学过数值分析且线性代数基础薄弱的小白。此文旨在让线代基础薄弱的童鞋从原理到直观完全掌握这两种方法。因此对相关数学概念叙述较细致,对于基础良好的小伙伴可能略显啰嗦,敬请理解!

此文包含的数学概念:

最小二乘法:

1.矩阵与向量相乘的基本规则  2.向量的线性相关、线性无关和线性表示问题及其与非齐次线性方程组解的联系  3.向量子空间与基的概念  4.向量的内积与正交性及其任意维的推广

完全看懂推导的知识储备(无碍整体的理解):范德蒙行列式的非零性质、矩阵秩的性质。

主成分分析法:

1.向量与矩阵相乘的基本规则 2.向量的内积与正交性、投影及其任意维的推广

完全看懂推导的知识储备:特征值与特征向量的基本概念、对称矩阵的特征值与特征向量有关性质

1.最小二乘法:

        从字面上看,“最小二乘”泛指一类优化方法,什么样的优化方法呢?是以“误差平方或平方和最小”为优化目标的优化过程。如神经网络训练迭代的过程,其实质就是通过不断调整网络的参数(权值和阈值)使得网络的输出与训练样本给定的输出之误差平方和最小;又如,在求解三维刚体的最优配准时,其优化目标往往也是寻找最优的旋转和平移变换使得配准点和目标点的距离平方和最小。而我们通常所说的“最小二乘法”,指的是求超定非齐次线性方程组最优解的方法。

       提到最小二乘法,知道这个词但从未深入了解过的小伙伴们可能脑海中首先想到的是——曲线的离散点拟合!没错,它的实质其实就是求解非齐次线性方程组呀!

       在平面直角坐标系下有n个数据点(x_{1},y_{1})(x_{2},y_{2})...(x_{n},y_{n})现要求一给定次数的多项式:y=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+...+a_{m}x^{m},(m<n-1),使得此多项式的曲线“尽可能”通过所有数据点

用一个四次多项式曲线去拟合离散的32个点

       我们知道,n个不共线的点能唯一定出一条n-1次的多项式曲线,而当多项式曲线m次数小于n-1,它一般不可能严格通过所有点。这一问题可以用如下关于a_{0}~a_{m}的非齐次线性方程组的解来反映:

\left\{\begin{matrix} f(x_{1})=a_{0}+a_{1}x_{1}+a_{2}x^{2}_{1}+...+a_{m}x^{m}_{1}=y_{1}\\ f(x_{2})=a_{0}+a_{1}x_{2}+a_{2}x^{2}_{2}+...+a_{m}x^{m}_{2}=y_{2}\\ ...\\ f(x_{n})=a_{0}+a_{1}x_{n}+a_{2}x_{n}^{2}+...+a_{m}x^{m}_{n}=y_{n}\\ \end{matrix}\right.(1)

    上面这n个方程表示的是要让多项式函数f(x)通过所有数据点:(x_{1},y_{1})(x_{2},y_{2})...(x_{n},y_{n})。每一个独立的方程相当于是对未知数a_{0} a_{1}... a_{m}的一个约束。而n个独立的方程能唯一确定n个未知数。当上面待求解的未知数a_{0} a_{1}... a_{m}个数m+1小于n时,若这n个方程独立,则方程组约束个数大于方程未知数个数,无法找到一组合适的解a_{0} a_{1}... a_{m}使得它们能严格满足上面的方程,体现在曲线拟合上也就是当m+1<n时,m次多项式无法严格通过任意n个点

    找不到一个严格解肿么办?找一个最优的出来!怎么个最优法呢?我们就是要让f(x)在各自变量处的取值:f(x_{1}) f(x_{2})...f(x_{n})在总体上能尽量接近y_{1}y_{2}...y_{n},怎么来量化描述这一优化目标呢?我们令:

(f(x_{1})-y_{1})^{2}+(f(x_{2})-y_{2})^{2}+...+(f(x_{n})-y_{n})^{2}最小,即:

min[(f(x_{1})-y_{1})^{2}+(f(x_{2})-y_{2})^{2}+...+(f(x_{n})-y_{n})^{2}]

      接下来,就是发挥线性代数教给我们的对线性方程组观察角度的时刻了!我们从向量的线性表示问题来看待此方程组。由方程组(1),我们令向量\alpha为:

\alpha =\begin{bmatrix} f(x_{1})\\ f(x_{2})\\ ...\\ f(x_{n})\\ \end{bmatrix}=\begin{bmatrix} 1 & x_{1} & x_{1}^{2} ...x_{1}^{m} \\ 1 &x_{2} &x_{2}^{2} ...x_{2}^{m} \\ ...&...&... \\ 1 &x_{n} &x_{n}^{2}...x_{n}^{m} \end{bmatrix}\times \begin{bmatrix} a_{0}\\ a_{1}\\ ...\\ a_{m}\\ \end{bmatrix}(*)

令向量b为:

b=\begin{bmatrix} y_{1}\\ y_{2}\\ ...\\ y_{n}\\ \end{bmatrix}

    因此方程组(1)实际上又是在说:\alpha=b   

    又令向量
\alpha _{0}=\begin{bmatrix} 1\\ 1\\ ...\\ 1\\ \end{bmatrix}\alpha _{1}=\begin{bmatrix} x_{1}\\ x_{2}\\ ...\\ x_{n}\\ \end{bmatrix}\alpha _{2}=\begin{bmatrix} x_{1}^{2}\\ x_{2}^{2}\\ ...\\ x_{n}^{2}\\ \end{bmatrix}...\alpha _{m}=\begin{bmatrix} x_{1}^{m}\\ x_{2}^{m}\\ ...\\ x_{n}^{m}\\ \end{bmatrix}    于是式(*)关于\alpha的表达式可写为向量\alpha_{0}\alpha_{1}...\alpha_{m}线性表示的形式:

\alpha =a_{0}\alpha _{0}+a_{1}\alpha_{1}+a_{2}\alpha_{2}+...+a_{m}\alpha_{m}

因此方程组(1)又等于是在说:向量b能被向量\alpha_{0}\alpha_{1}...\alpha_{m}线性表示:

b=a_{0}\alpha_{0}+a_{1}\alpha_{1}+a_{2}\alpha_{2}+...+a_{m}\alpha_{m}(2)

      现在再从向量b能否被向量\alpha_{0}\alpha_{1}...\alpha_{m}线性表示的问题来看待方程组(1)无解的原因。类比到我们生活的三维空间,对空间中任意一个三维向量,我们需要三个不共线、不共面(即线性无关)的向量才能保证它们能线性表示出此向量。如对于下图中两个不共线的三维向量\alpha_{1}\alpha_{2},它们构成一张平面。对于在此平面内的任意向量,\alpha_{1}\alpha_{2}能线性表出,而对于平面外的向量b,它们无可奈何:

    但尽管\alpha_{1}\alpha_{2}不能线性表示出b,但它们能在平面内表示出“最接近”向量b的向量\alpha来,如上图,\alpha能称得上最接近b是因为b-\alpha的长度最小,与平面垂直,即\alpha是向量b在平面的投影。

    将三维空间中的这些直观理解推广到任意n维空间,对于三维空间中两个不共线的向量构成一个二维平面这一认知,在任意维的线性空间中,我们有向量子空间的概念:当m+1<n, m+1个线性无关的n维向量构成一个m+1维的子空间,在此空间中的任意向量均能用这m+1个向量线性表示,而对于那些不在此子空间的向量,无法用这m+1个向量线性表示。而当m+1=n,这时构成的子空间就是整个n维空间,任意的n维向量均能被这m+1个向量线性表示。

    因此,回到方程组(1)无解的原因。对于式(2),由于 b以及\alpha_{0}\alpha_{1}...\alpha_{m}均为n维向量,而\alpha_{0}\alpha_{1}...\alpha_{m}的个数m+1<n,故b不能被\alpha_{0}\alpha_{1}...\alpha_{m}线性表示除非b恰好在\alpha_{0}\alpha_{1}...\alpha_{m}构成的子空间中,我们记为span(\alpha_{0}\alpha_{1}...\alpha_{m})

   类似于三维空间,在n维空间中我们同样有向量“长度”和正交的概念。尽管\alpha_{0}\alpha_{1}...\alpha_{m}不能线性表示b,但能用一个“最接近”的向量去近似,也就是使得\alpha=a_{0}\alpha_{0}+a_{1}\alpha_{1}+...+a_{m}\alpha_{m}到b的向量长度|\alpha-b|最小,也即\alpha-bspan(\alpha_{0}\alpha_{1}...\alpha_{m})正交,它等价于\alpha-b\alpha_{0}\alpha_{1}...\alpha_{m}每一个向量正交。

  再来看看我们前面的目标函数:

(f(x_{1})-y_{1})^{2}+(f(x_{2})-y_{2})^{2}+...+(f(x_{n})-y_{n})^{2}

  它实际上就是向量 \alpha -b=\begin{bmatrix} f(x_{1})-y_{1}\\ f(x_{2})-y_{2}\\ ...\\ f(x_{n})-y_{n}\\ \end{bmatrix}模长的平方呀!因此要实现我们的最优拟合,就是使得\alpha-b=a_{0}\alpha_{0}+a_{1}\alpha_{1}+a_{2}\alpha_{2}+...+a_{m}\alpha_{m}-b的模长最小,也即\alpha-b\alpha_{0}\alpha_{1}...\alpha_{m}正交。如此,一个曲线拟合问题竟转化成一个类似于求平面法矢的问题,惊不惊喜,意不意外?

  又:我们高中就学过,两个向量正交,即它们的内积为零。在线性代数中,我们习惯将向量表示成列的形式,用一个列向量的转置右乘另一个列向量来表示这两个向量的内积。\alpha-b\alpha_{0}\alpha_{1}...\alpha_{m}均正交,即:

 令矩阵A为:

A=\begin{bmatrix} \alpha_{0} &\alpha_{1} &...&\alpha_{m} \end{bmatrix}=\begin{bmatrix} 1 & x_{1}& x_{1}^{2} &... &x_{1}^{m} \\ 1& x_{2} & x_{2}^{2} &... &x_{2}^{m} \\ ...& ... & ... & ... &... \\ 1&x_{n} &x_{n}^{2} &... &x_{n}^{m} \end{bmatrix}

 将\alpha_{i}^Tb移到方程右边,等号左边为:

 \begin{bmatrix} \alpha_{0}^T\alpha_{0}&\alpha_{0}^T\alpha_{1} &...\alpha_{0}^T\alpha_{m} \\ \alpha_{1}^T\alpha_{0}&\alpha_{1}^T\alpha_{1} &...\alpha_{1}^T\alpha_{m} \\ ...&... &...\\ \alpha_{m}^T\alpha_{0}&\alpha_{m}^T\alpha_{1}&...\alpha_{m}^T\alpha_{m}\\ \end{bmatrix}\times\begin{bmatrix} a_{0}\\ a_{1}\\ ...\\ a_{m}\\ \end{bmatrix}=\begin{bmatrix} \alpha_{0}^T\\ \alpha_{1}^T\\ ...\\ \alpha_{m}^T\\ \end{bmatrix}\times \begin{bmatrix} \alpha_{0} &\alpha_{1} &... &\alpha_{m} \end{bmatrix}\times \begin{bmatrix} a_{0}\\ a_{1}\\ ...\\ a_{m}\\ \end{bmatrix}=A^TA\times \begin{bmatrix} a_{0}\\ a_{1}\\ ...\\ a_{m}\\ \end{bmatrix}\\

等号右边为:

  因此,我们要求的多项式系数a_{0}a_{1}...a_{m}即以下线性非齐次方程组(矩阵形式)的解:

A^TAX=A^Tb(3)

那么这个非齐次线性方程组是否一定有解?我们注意到A^TA是一个m+1阶的方阵,A^Tb是一个m+1维的列向量同时矩阵A的各列向量是方阵\begin{bmatrix} 1 & x_{1}& x_{1}^2 &... &x_{1}^n \\ 1& x_{2} &x_{2}^2 &... &x_{2}^n \\ ...& ...& ... & ... &... \\ 1& x_{n} &x_{n}^{2} &... &x_{n}^{n} \end{bmatrix}的各列向量的子集(m+1<n)。而此方阵的行列式是范德蒙行列式,非零,故此方阵可逆,它的各列向量线性无关。故A的各列向量作为它的子集也必定线性无关。因此A的秩R(A)=R(A^TA)=m+1,因此A^TA是一个满秩的m+1阶方阵,可逆。它的m+1个m+1维的列向量也线性无关,能线性表示出包括A^Tb在内的任意的m+1维向量,且线性表示系数唯一。故方程组(3)必定有解且唯一。等式两边乘上A^TA的逆(A^TA)^{-1}得:X=\begin{bmatrix} a_{0}\\ a_{1}\\ ...\\ a_{m}\\ \end{bmatrix}=(A^TA)^{-1}A^Tb      (4)

 从而解出多项式系数,完成曲线拟合。(4)式就是求解超定非齐次线性方程组最小二乘最优解的基本公式。A是方程组的系数矩阵,b是方程组等号一侧的常数向量。

在计算机按上式进行求解时,由于矩阵元素计算误差等各种原因,A^TA会接近为一个不可逆矩阵,这时可以转而去求解矩阵A^TA的Moore-Penrose广义逆矩阵(A^TA)^+,则解向量X=(A^TA)^+A^Tb。关于广义逆矩阵的理论大家可以翻阅矩阵论相关教材, 这里不再深入讨论

   除了曲线拟合外,下面再介绍一个最小二乘法应用于工业机器人模型参数误差辨识的例子

   

                                                              六轴串联机器人

   通常应用的工业机器人为六轴串联形式,通过控制6个轴的旋转角\theta使末端到达指定的空间位置。在给定机器人六个关节轴旋转角\theta_{1}\theta_{2}...\theta_{6}后,末端位置的三坐标(x,y,z)分别是18个结构参数(记为\alpha_{1}\alpha_{2}...\alpha_{6},a_{1},a_{2}...a_{6},d_{1}d_{2}...d_{6},)的多元函数。因为这些结构参数会存在误差,当代入理论的结构参数和当前六轴转角\theta_{1}\theta_{2}...\theta_{6}后计算出的理论末端位置与实际末端位置存在偏差。因此有必要对结构参数误差进行辨识。

  怎么辨识呢?这里认为结构参数的误差不大,引起的末端理论计算位置与实际位置的偏差也不大,则末端的三坐标微分(\Delta x,\Delta y,\Delta z)利用多元函数的全微分性质可以通过一个雅可比矩阵与18个结构参数的微分\Delta \alpha_{1}\Delta \alpha_{2}...\Delta \alpha_{6},\Delta a_{1},\Delta a_{2}...\Delta a_{6},\Delta d_{1}\Delta d_{2}...\Delta d_{6}联系在一起:

  我们通过给定6个关节转角,使用激光跟踪仪采集末端的实际坐标,与理论计算出的坐标相减得到一组(\Delta x,\Delta y,\Delta z),同时雅可比矩阵中的偏微分通过给定的关节转角结合理论结构参数计算得到。因此机器人末端每运动到一个点都对应一组(\Delta x,\Delta y,\Delta z)和一个雅可比矩阵,从而对应一个由三个方程构成的关于待求解的18个参数误差\Delta \alpha_{1}\Delta \alpha_{2}...\Delta \alpha_{6},\Delta a_{1},\Delta a_{2}...\Delta a_{6},\Delta d_{1}\Delta d_{2}...\Delta d_{6}的非齐次线性方程组。我们要求解出18个参数误差就需要至少6个末端位置对应的总计18个方程。而我们为保证求解精度,通常选用几十个位置的总计上百个方程来求解:

   如上式所示,我们选用了50个点总计150个方程来求解18个参数误差。此时方程个数远超过未知数个数,因此是一个超定的非齐次线性方程组。于是应用最小二乘法可予以解决 

2.主成分分析法

   主成分分析法(PCA,short for Principal Component Analysis)又叫主元分析法或协方差分析。它和最小二乘法的曲线拟合功能一样,是用来分析离散数据点分布规律的方法,而且是分析线性分布规律。我们从一台机床状态的间接监测的案例来引出这一方法:

现在有一台机床,它的状态指标有温度、主轴转速和切削力,我们用三个传感器在不同时刻去监测这台机床,假设获得了如下的实验数据表:

        温度      主轴转速           切削力
      10摄氏度         500r/min         100N
       20摄氏度         1000r/min          200N
       30摄氏度          1500r/min          300N
       40摄氏度         2000r/min          400N

    现在要求要用最少的传感器来反映这台机床的总体状态。观察上面的实验数据,我们很容易发现,温度、主轴转速和切削力都是成线性正比关系。那么这就告诉我们,我们完全可以只去监测温度、主轴转速及切削力当中的一个量就可以估测机床的状态,从其中一个量就可以推测出另外两个量,用不着三个量都测,从而实现了传感器及数据量的精简。

   去掉不必要的数据类型(或通过线性组合的形式实现类型数的减少,这也是PCA的精髓,下面会介绍)就是所谓的数据降维。这里,我们将原本三种类型的数据通过关联性精简成一种类型的数据就是把一个三维数据集“压缩”成一维数据集

   如果我们分别以温度、主轴转速、切削力作为坐标系的X轴,Y轴,Z轴,则每时刻的数据都对应该坐标系下的一个点,绘制出来就是这个样子:

    红色点是每个时刻的数据,绿色是数据点分布的直线。

    当然,以上是一个比较极端的假设,现实中多个物理量远远不可能有这么强的关联性,加之还有量测噪声,数据点不可能分布在一条直线上。但是,由于物理量之间的关联性或多或少还是经常存在,数据点的分布可能是一个“狭长”的形状,如下所示:

    可见,上图还是反映出物理量之间存在较强的关联性。它们基本上还是沿着某个方向分布。因此,我们仍希望寻找出这个方向的坐标表示,以实现数据的降维。也就是计算下图所示绿色直线所在的单位方向向量:

 这条直线所在的方向向量就是我们所谓的主成分或主方向。那么,现在已知图中所有红色散点的坐标,如何去求出图中绿线的方向呢?

    接下来就进入正题啦:

    首先我们将散点整体向坐标原点平移,令散点的坐标中心与坐标原点重合,这一步称为去中心化,如下图:

    设各点原始的位矢为x_{1}x_{2}x_{3}...x_{n},则坐标中心的位矢为x_{c}=\frac{1}{n}\sum_{k=1}^{n}x_{k},将各点平移后的新坐标为:

x_{1}'=x_{1}-x_{c},x_{2}'=x_{2}-x_{c},...x_{n}'=x_{n}-x_{c}

    为什么要去中心化呢?下面将会进行分析。

    对散点平移完成后,接下来就是求解主方向。从前面的图中,我们分析一下,所谓的主方向到底应该怎样来定量刻画它的性质?所谓的主方向就是使得所有的点都尽量沿着这个方向分布,那么我们将散点平移到坐标原点附近使得其坐标中心与原点重合后,这一特性可以用如下的数学语言来描述:主方向就是这样一个方向,所有散点去中心化后的位矢在这个方向向量上的投影长度平方和最大,如下图:

 

    有了这一定量描述的优化目标,我们就能使用数学工具来解决了:

    说到向量的投影,我们能想到什么,没错,又是内积(哈哈)。当其中一个向量为单位向量时,另一个向量在这一单位向量方向上的投影长度平方就是这两个向量内积的平方(高中数学知识)。设我们要找的主方向的单位向量为y,那么我们的优化目标便是:

max[\frac{1}{n}\sum_{k=1}^{n}(x_{k}'^Ty)^2]=max(\frac{1}{n}\sum_{k=1}^{n}y^Tx_{k}'x_{k}'^Ty)=max[y^T(\frac{1}{n}\sum_{k=1}^{n}x_{k}'x_{k}'^T)y]

    注意到x_{k}'x_{k}'^T是一个列向量右乘它自身转置后的行向量(线性代数中通常默认向量为列向量),得到的是一个3*3的半正定对称矩阵(这里为方便大家从几何上理解,在三维空间中进行分析,若是有m个不同类型的数据,则是在m维空间下进行,这里的矩阵就是m*m的半正定对称矩阵),而这些3*3的对称矩阵相加后并除以n后:\frac{1}{n}\sum_{k=1}^{n}x_{k}'x_{k}'^T仍是一个3*3的半正定对称矩阵,我们称此为协方差矩阵(为什么称为协方差矩阵,稍后会进行解释),通常记为C=\frac{1}{n}\sum_{k=1}^{n}x_{k}'x_{k}'^T

    则我们的优化目标就变为寻找一个单位向量y使得:max(y^TCy) ,其中y^TCy表示的是数据点去中心化后的位矢在y方向投影长度平方的均值

    接下来就是矩阵特征值和特征向量的登场时刻了,这里直接先给出结论:使得max(y^TCy)成立的单位向量y就是矩阵C的最大特征值对应的特征向量。我们在计算机中通常使用奇异值分解(SVD)求解矩阵的特征值和特征向量 。

    下面说明为什么使得max(y^TCy)成立的单位向量y就是C的最大特征值的特征向量(纯粹数学证明,无碍大家对整体的理解与应用,可跳过)

    由于C是一个半正定的对称矩阵,由线性代数知,它必有三个正交的特征向量,能进行正交对角化:

C=U^TDU=U^{-1}DU

    其中U是正交矩阵,D是对角矩阵,对角线各元素即C的特征值,不妨记为:\lambda _{1}\geq \lambda _{2}\geq \lambda _{3};U的各列为对应的单位正交特征向量,不妨记为:\alpha _{1}\alpha_{2}\alpha_{3}

   由于 \alpha _{1}\alpha_{2}\alpha_{3}构成三维空间中的一组单位正交基,对任意的三维向量y均能被它们线性表示,不妨记为:y=k_{1}\alpha_{1}+k_{2}\alpha_{2}+k_{3}\alpha_{3},我们欲求最优的y即求最优组合系数k_{1}k_{2}k_{3}使得

max(y^TCy)=max[(k_{1}\alpha_{1}+k_{2}\alpha_{2}+k_{3}\alpha_{3})^TC(k_{1}\alpha_{1}+k_{2}\alpha_{2}+k_{3}\alpha_{3})]

成立,又有:

 (k_{1}\alpha_{1}+k_{2}\alpha_{2}+k_{3}\alpha_{3})^TC(k_{1}\alpha_{1}+k_{2}\alpha_{2}+k_{3}\alpha_{3})=(k_{1}\alpha_{1}^T+k_{2}\alpha_{2}^T+k_{3}\alpha_{3}^T)(k_{1}C\alpha_{1}+k_{2}C\alpha_{2}+k_{3}C\alpha_{3}) 

   由特征向量定义:C\alpha_{1}=\lambda _{1}\alpha_{1}, C\alpha_{2}=\lambda _{2}\alpha_{2}C\alpha_{3}=\lambda _{3}\alpha_{3},代入上式得:

k_{1}^2\lambda _{1}\alpha_{1}^T\alpha_{1}+k_{2}^2\lambda_{2}\alpha_{2}^T\alpha_{2}+k_{3}^2\lambda_{3}\alpha_{3}^T\alpha_{3}=k_{1}^2\lambda_{1}+k_{2}^2\lambda_{2}+k_{3}^2\lambda_{3}

   因为y是单位向量,故有: k_{1}^2+k_{2}^2+k_{3}^2=1。因此问题最终转化为:在约束k_{1}^2+k_{2}^2+k_{3}^2=1下求k_{1}k_{2}k_{3}使得

成立。显然,由于\lambda _{1}\geq \lambda _{2}\geq \lambda _{3},我们令k_{1}=1k_{2}=k_{3}=0即可(这里的条件极值问题就不再严格证明了)。因此y=\alpha_{1}是我们要找的主方向,即矩阵C的最大特征值对应的单位特征向量。

   我们再来看看矩阵C的特征值\lambda _{1}\lambda_{2}\lambda_{3}有什么具体含义?

   对于y=\alpha_{1},此时各数据点去中心化后的位矢在y方向上的投影长度平方的均值为:

y^TCy=k_{1}^2\lambda_{1}+k_{2}^2\lambda_{2}+k_{3}^2\lambda_{3}=\lambda_{1}

   因此,最大特征值\lambda_{1}表示的就是数据点在主方向上的投影长度平方的均值

   同理对于y=\alpha_{2},此时y^TCy是各点去中心化后的位矢在\alpha_{2}方向上的投影长度平方的均值:

y^TCy=k_{1}^2\lambda_{1}+k_{2}^2\lambda_{2}+k_{3}^2\lambda_{3}=\lambda_{2}

   对于y=\alpha_{3},此时y^TCy是各点去中心化后的位矢在\alpha_{3}方向上的投影长度平方的均值:

y^TCy=k_{1}^2\lambda_{1}+k_{2}^2\lambda_{2}+k_{3}^2\lambda_{3}=\lambda_{3}

   因此,三个特征值反映的就是数据点位矢在相应的三个正交特征矢量上的投影长度的综合大小特征值越大,表明数据点沿对应的特征方向分布的离散程度越大。如下图,绿线代表数据分布离散程度最大的第一主方向,黑线代表数据分布离散程度次之的第二主方向,蓝线代表离散程度最小的第三主方向:

    再回到前面的一个问题:矩阵C=\frac{1}{n}\sum_{k=1}^{n}x_{k}'x_{k}'^T为什么称为协方差矩阵?

    我们设数据点的原始坐标为:x_{k}=(x_{1k},x_{2k},x_{3k})^T。则数据点中心坐标为:x_{c}=(x_{1c},x_{2c},x_{3c})^T其中x_{1c},x_{2c},x_{3c}分别是x_{1k},x_{2k},x_{3k}的均值。因此(x_{k}-x_{c})(x_{k}-x_{c})^T=\begin{bmatrix} (x_{1k}-x_{1c})^2 &(x_{1k}-x_{1c})(x_{2k}-x_{2c}) &(x_{1k}-x_{1c})(x_{3k}-x_{3c}) \\ (x_{1k}-x_{1c})(x_{2k}-x_{2c})&(x_{2k}-x_{2c})^2 &(x_{2k}-x_{2c})(x_{3k}-x_{3c}) \\ (x_{1k}-x_{1c})(x_{3k}-x_{3c})&(x_{2k}-x_{2c})(x_{3k}-x_{3c}) &(x_{3k}-x_{3c})^2 \end{bmatrix}

   故 C=\begin{bmatrix}\frac{}{} \sum_{k=1}^{n}(x_{1k}-x_{1c})^2 &\frac{1}{n}\sum_{k=1}^{n}(x_{1k}-x_{1c})(x_{2k}-x_{2c}) &\frac{1}{n}\sum_{k=1}^{n}(x_{1k}-x_{1c})(x_{3k}-x_{3c}) \\ \frac{1}{n}\sum_{k=1}^{n}(x_{1k}-x_{1c})(x_{2k}-x_{2c})&\frac{1}{n}\sum_{k=1}^{n}(x_{2k}-x_{2c})^2 &\frac{1}{n}\sum_{k=1}^{n}(x_{2k}-x_{2c})(x_{3k}-x_{3c}) \\ \frac{1}{n}\sum_{k=1}^{n}(x_{1k}-x_{1c})(x_{3k}-x_{3c})&\frac{1}{n}\sum_{k=1}^{n}(x_{2k}-x_{2c})(x_{3k}-x_{3c}) &\frac{1}{n}\sum_{k=1}^{n}(x_{3k}-x_{3c})^2 \end{bmatrix}=\begin{bmatrix} D(x_{1}) & Cov(x_{1},x_{2}) &Cov(x_{1},x_{3}) \\ Cov(x_{1},x_{2})& D(x_{2}) &Cov(x_{2},x_{3}) \\ Cov(x_{1},x_{3})&Cov(x_{2},x_{3}) &D(x_{3}) \end{bmatrix}

   由此可见:矩阵C的主对角元是数据点在各个维度上(即某一数据类型)的方差;而不在对角线上的元素是不同数据类型之间 的协方差,反映了这两种量之间的相关关系。因此协方差矩阵包含了数据点不同物理量之间的相关性信息,也即协方差

    到此,主成分分析法的原理就完整地阐述完毕了。我们回过头再看一下主成分分析的优化目标:它是寻找一个方向使得所有数据点的位矢(去中心化后)在此方向上的投影长度平方和最大,那么相反地,数据点位矢在与主方向正交的方向上投影平方和最小。再看看我们最小二乘法做直线拟合时的优化目标——它是使得数据点到该直线距离平方和最小,因此主成分分析法所找的主方向本质上就是在做最小二乘直线拟合!那为什么最小二乘法没有替代主成分分析法呢?那是因为,主成分分析法除了给出数据分布最集中的主方向,还给出了数据点在其余若干方向分布的离散程度信息!

    PCA不仅可以用来进行数据降维,下面再介绍主成分分析法应用于采样曲面法矢估计的一个例子:

   在逆向工程、文物保护等工作中,一个重要的环节就是建立实物的数字几何模型。在建立模型时,获取的曲面数据点是离散的,而根据这些数据点的坐标信息对原始曲面在各点的法矢方向进行估计又是其中重要的一环。

    分析一下曲面法向量有什么特点?与主方向相反,它应该是数据点分布离散程度最小的方向。因此我们对某采样点法矢方向估计的思路就是:首先在该点周围建立一块邻域,包含若干周围邻近的数据点,然后利用这些数据点的位矢构造协方差矩阵,矩阵最小特征值对应的特征向量就是我们要估计的法矢方向。下图是一个法矢估计的例子:

   能看到这儿的小伙伴已经很不错啦!哈哈!说了这么多,其实站在工科生 的应用角度,对于这两种最重要的数据分析工具,我们应分别牢记一点:

   最小二乘法是求解超定非齐次线性方程组最优解的方法,它的优化目标是每一个方程等号左侧的值与右侧给定的常数项之差的平方和最小,它的本质是将线性方程组的最优解问题转化为向量的最佳逼近

   主成分分析法是分析数据点线性分布特征的方法,它的优化目标是确定某个向量使得数据点的位矢在此向量方向上的投影平方和最大。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/NUAA_chengyuLi/article/details/118529788

智能推荐

Github Desktop 2:_githubdesktop下载-程序员宅基地

文章浏览阅读116次。Github不用多说,直接进入正题吧。有很多不想使用命令行的可以使用Github Desktop1.上传代码到github(创建仓库) 点击左上角的加号选择Add选项然后选择你要上传的项目之后点击蓝色的button。 然后点击Publish。这样项目就上传到github上啦。 选择刚才上传的项目就可以到github上面查看了。 ..._githubdesktop下载

STM32+W5500+以太网应用开发+002_TCP 服务器和客户端_w5500 hal库 tcp例子-程序员宅基地

文章浏览阅读99次。基于STM32CubeMX创建工程,移植W5500最新驱动库ioLibrary_Driver-4.0.0。创建TCP服务器应用和TCP客户端应用。_w5500 hal库 tcp例子

Altium Designer17PCB设计DRC报错之Short-Circuit Constraint Violation的解决-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏3次。1错误如下:[Short-Circuit Constraint Violation] SF6LEAK.PcbDoc Advanced PCB Short-Circuit Constraint: Between Track (3849.237mil,4600.763mil)(3992.307mil,4600.763mil) on Top Layer And Pad U6-1(3992.307mil,4600.763mil) on Top Layer Location : [X = 4127.693mil][_short-circuit constraint violation

Centos7安装DPDK环境搭建&&错误解决_dpdk-16.11.2 编译安装报错-程序员宅基地

文章浏览阅读717次。依赖安装$ yum install -y libpcap-devel pcre-devel file-devel libyaml-devel jansson-devel libcap-ng-devel librdkafka-devel nss-devel nspr-devel make gcc$ yum install -y libxml2-devel$ yum install -y py..._dpdk-16.11.2 编译安装报错

大数据学习-python通过Pyhive连接hive数据库_python pyhive 连接hive-程序员宅基地

文章浏览阅读1.4k次。1.hbase和hive结合(1)hbase建表添加数据#test是表名,name是列族#hbase可以一个列族里边多个字段create 'test','name'#添加数据put 'test','1','name:t1','1'put 'test','1','name:t2','2'#查询scan 'test'#查询 get 表名,row-key,列族get 'test','1','name:t1'#删除表disable 'test'drop 'test'#_python pyhive 连接hive

java动态规划 硬币_动态规划-硬币问题-程序员宅基地

文章浏览阅读649次。算法思想:动态规划实际问题:硬币问题编写语言:Java问题描述假设有 1 元,3 元,5 元的硬币若干(无限),现在需要凑出 n 元。问如何组合才能使硬币的数量最少?关键特征要推出问题的关键特征与递归关系,必要的例子是少不了的。我们先假设一个函数 d(i) 来表示需要凑出 i 的总价值需要的最少硬币数量,那么:当 i = 0 时,很显然我们可以知道 d(0) = 0。因为不要凑钱了嘛,当然也不需要..._"system.out.println(\"一元硬币%s个\",\"1\");、"

随便推点

android 图片处理器-包括反转、浮雕、锐化、轮廓提取功能_安卓 java简单的图片处理器-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏4次。软件功能主界面选择图片点击主界面右下角的浮动按钮,即可选择图片显示在主界面上。撤销点击主界面左下角的浮动按钮即可进行撤销操作。保存图片点击菜单栏的保存按钮即可进行保存图片操作。 反转参考博客:http://blog.51cto.com/mahaile/594807水平反转点击菜单栏的水平反转按钮即可进行水平反转操作。垂_安卓 java简单的图片处理器

记录一次IDEA2020.3中Maven导入依赖失败的问题_idea2023引入maven失效-程序员宅基地

文章浏览阅读439次。IDEA2020.3中Maven导入依赖失败的问题  pom.xml已导入坐标,maven本地仓库也下载了相对应的jar包,但是在项目的libraries中却报红了,找不到对应的jar包。_idea2023引入maven失效

2021-06-05 GD32F405VG 调试过程关于DAC/DMA/TIMER等问题的解决_dac1和dac0不能同时使用-程序员宅基地

文章浏览阅读1.9k次。GD32F405VG 调试过程关于DAC/DMA/TIMER等问题的解决GD32F405与STM32F405外设完全兼容,外设的地址映射也是完全兼容。ST的标准库中的名字与GD32的外设名字不一致,比如STM32中的TIMER1的地址映射,对应的是GD32的TIMER0,STM32的DAC1对应GD32的DAC0,等等诸如此类。STM32F405的程序直接烧写到GD32F405中,程序能够运行但部分功能异常,在STM32F405中使用TIMER6触发DAC1转换,使用DAC1的数字量通过DMA传输,程序_dac1和dac0不能同时使用

移动安全面试题—调试&反调试_移动反调试-程序员宅基地

文章浏览阅读4.8k次。对抗方法:使用内核模块或 Xposed 插件拦截对 /proc/self/status 的读取,将 TracerPid 字段设置为 0。对抗方法:使用内核模块或 Xposed 插件拦截对 /proc/self/maps 的读取,移除与调试器相关的内存映射信息。检测 /proc/self/status 中的 TracerPid 字段:如果该字段的值不为 0,则表示有调试器附加。修改 /proc/self/status 中的 TracerPid 字段,伪装成无调试器附加的状态。可能需要结合静态和动态分析工具。_移动反调试

LeetCode NO.78 cpp(9.1)_78m.cpp-程序员宅基地

文章浏览阅读336次。标签:位算法、数组、回溯算法• 题号:78• 难度:中等• https://leetcode-cn.com/problems/subsets/给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。这里用回溯求解:class Solution {public: vector<vector<int>>..._78m.cpp

上传漏洞总结_文件漏洞上传面试总结-程序员宅基地

文章浏览阅读260次。_文件漏洞上传面试总结