网上关于最小二乘法及主成分分析的介绍数不胜数,这两种方法均为挖掘数据分布规律的最重要也是最基本的工具。主成分分析法与最小二乘法实际上有所联系,前者分析出的“主方向”实质上是最小二乘法的线性拟合情形。但大多数文章并未将此二者进行联系与比较。本篇博客结合网络上的各种论述与作者自身的理解,辅之以直观的几何概念与严密的数学推导,对这两种方法进行一个原理详解与对比。由于作者本身为在读工科研究生,诸多不周甚至错误敬请各位大佬批评指正!
本篇博客为博主耗时一天的原创文章,转载请注明出处!
本篇博客适合没有学过数值分析且线性代数基础薄弱的小白。此文旨在让线代基础薄弱的童鞋从原理到直观完全掌握这两种方法。因此对相关数学概念叙述较细致,对于基础良好的小伙伴可能略显啰嗦,敬请理解!
此文包含的数学概念:
最小二乘法:
1.矩阵与向量相乘的基本规则 2.向量的线性相关、线性无关和线性表示问题及其与非齐次线性方程组解的联系 3.向量子空间与基的概念 4.向量的内积与正交性及其任意维的推广
完全看懂推导的知识储备(无碍整体的理解):范德蒙行列式的非零性质、矩阵秩的性质。
主成分分析法:
1.向量与矩阵相乘的基本规则 2.向量的内积与正交性、投影及其任意维的推广
完全看懂推导的知识储备:特征值与特征向量的基本概念、对称矩阵的特征值与特征向量有关性质
1.最小二乘法:
从字面上看,“最小二乘”泛指一类优化方法,什么样的优化方法呢?是以“误差平方或平方和最小”为优化目标的优化过程。如神经网络训练迭代的过程,其实质就是通过不断调整网络的参数(权值和阈值)使得网络的输出与训练样本给定的输出之误差平方和最小;又如,在求解三维刚体的最优配准时,其优化目标往往也是寻找最优的旋转和平移变换使得配准点和目标点的距离平方和最小。而我们通常所说的“最小二乘法”,指的是求超定非齐次线性方程组最优解的方法。
提到最小二乘法,知道这个词但从未深入了解过的小伙伴们可能脑海中首先想到的是——曲线的离散点拟合!没错,它的实质其实就是求解非齐次线性方程组呀!
在平面直角坐标系下有n个数据点现要求一给定次数的多项式:,(m<n-1),使得此多项式的曲线“尽可能”通过所有数据点。
用一个四次多项式曲线去拟合离散的32个点
我们知道,n个不共线的点能唯一定出一条n-1次的多项式曲线,而当多项式曲线m次数小于n-1,它一般不可能严格通过所有点。这一问题可以用如下关于~的非齐次线性方程组的解来反映:
上面这n个方程表示的是要让多项式函数f(x)通过所有数据点:。每一个独立的方程相当于是对未知数的一个约束。而n个独立的方程能唯一确定n个未知数。当上面待求解的未知数的个数m+1小于n时,若这n个方程独立,则方程组约束个数大于方程未知数个数,无法找到一组合适的解使得它们能严格满足上面的方程,体现在曲线拟合上也就是当m+1<n时,m次多项式无法严格通过任意n个点
找不到一个严格解肿么办?找一个最优的出来!怎么个最优法呢?我们就是要让在各自变量处的取值:在总体上能尽量接近,怎么来量化描述这一优化目标呢?我们令:
最小,即:
接下来,就是发挥线性代数教给我们的对线性方程组观察角度的时刻了!我们从向量的线性表示问题来看待此方程组。由方程组(1),我们令向量为:
令向量b为:
因此方程组(1)实际上又是在说:
又令向量
于是式(*)关于的表达式可写为向量线性表示的形式:
因此方程组(1)又等于是在说:向量b能被向量线性表示:
(2)
现在再从向量b能否被向量线性表示的问题来看待方程组(1)无解的原因。类比到我们生活的三维空间,对空间中任意一个三维向量,我们需要三个不共线、不共面(即线性无关)的向量才能保证它们能线性表示出此向量。如对于下图中两个不共线的三维向量和,它们构成一张平面。对于在此平面内的任意向量,和能线性表出,而对于平面外的向量b,它们无可奈何:
但尽管和不能线性表示出b,但它们能在平面内表示出“最接近”向量b的向量来,如上图,能称得上最接近b是因为b-的长度最小,与平面垂直,即是向量b在平面的投影。
将三维空间中的这些直观理解推广到任意n维空间,对于三维空间中两个不共线的向量构成一个二维平面这一认知,在任意维的线性空间中,我们有向量子空间的概念:当m+1<n, m+1个线性无关的n维向量构成一个m+1维的子空间,在此空间中的任意向量均能用这m+1个向量线性表示,而对于那些不在此子空间的向量,无法用这m+1个向量线性表示。而当m+1=n,这时构成的子空间就是整个n维空间,任意的n维向量均能被这m+1个向量线性表示。
因此,回到方程组(1)无解的原因。对于式(2),由于 b以及均为n维向量,而的个数m+1<n,故b不能被线性表示除非b恰好在构成的子空间中,我们记为
类似于三维空间,在n维空间中我们同样有向量“长度”和正交的概念。尽管不能线性表示b,但能用一个“最接近”的向量去近似,也就是使得到b的向量长度最小,也即与正交,它等价于与每一个向量正交。
再来看看我们前面的目标函数:
它实际上就是向量 模长的平方呀!因此要实现我们的最优拟合,就是使得的模长最小,也即与正交。如此,一个曲线拟合问题竟转化成一个类似于求平面法矢的问题,惊不惊喜,意不意外?
又:我们高中就学过,两个向量正交,即它们的内积为零。在线性代数中,我们习惯将向量表示成列的形式,用一个列向量的转置右乘另一个列向量来表示这两个向量的内积。与均正交,即:
令矩阵A为:
将移到方程右边,等号左边为:
等号右边为:
因此,我们要求的多项式系数即以下线性非齐次方程组(矩阵形式)的解:
(3)
那么这个非齐次线性方程组是否一定有解?我们注意到是一个m+1阶的方阵,是一个m+1维的列向量同时矩阵A的各列向量是方阵的各列向量的子集(m+1<n)。而此方阵的行列式是范德蒙行列式,非零,故此方阵可逆,它的各列向量线性无关。故A的各列向量作为它的子集也必定线性无关。因此A的秩R()=R()=m+1,因此是一个满秩的m+1阶方阵,可逆。它的m+1个m+1维的列向量也线性无关,能线性表示出包括在内的任意的m+1维向量,且线性表示系数唯一。故方程组(3)必定有解且唯一。等式两边乘上的逆得:
从而解出多项式系数,完成曲线拟合。(4)式就是求解超定非齐次线性方程组最小二乘最优解的基本公式。A是方程组的系数矩阵,b是方程组等号一侧的常数向量。
在计算机按上式进行求解时,由于矩阵元素计算误差等各种原因,会接近为一个不可逆矩阵,这时可以转而去求解矩阵的Moore-Penrose广义逆矩阵,则解向量。关于广义逆矩阵的理论大家可以翻阅矩阵论相关教材, 这里不再深入讨论
除了曲线拟合外,下面再介绍一个最小二乘法应用于工业机器人模型参数误差辨识的例子:
六轴串联机器人
通常应用的工业机器人为六轴串联形式,通过控制6个轴的旋转角使末端到达指定的空间位置。在给定机器人六个关节轴旋转角后,末端位置的三坐标分别是18个结构参数(记为)的多元函数。因为这些结构参数会存在误差,当代入理论的结构参数和当前六轴转角后计算出的理论末端位置与实际末端位置存在偏差。因此有必要对结构参数误差进行辨识。
怎么辨识呢?这里认为结构参数的误差不大,引起的末端理论计算位置与实际位置的偏差也不大,则末端的三坐标微分利用多元函数的全微分性质可以通过一个雅可比矩阵与18个结构参数的微分联系在一起:
我们通过给定6个关节转角,使用激光跟踪仪采集末端的实际坐标,与理论计算出的坐标相减得到一组,同时雅可比矩阵中的偏微分通过给定的关节转角结合理论结构参数计算得到。因此机器人末端每运动到一个点都对应一组和一个雅可比矩阵,从而对应一个由三个方程构成的关于待求解的18个参数误差的非齐次线性方程组。我们要求解出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轴,则每时刻的数据都对应该坐标系下的一个点,绘制出来就是这个样子:
红色点是每个时刻的数据,绿色是数据点分布的直线。
当然,以上是一个比较极端的假设,现实中多个物理量远远不可能有这么强的关联性,加之还有量测噪声,数据点不可能分布在一条直线上。但是,由于物理量之间的关联性或多或少还是经常存在,数据点的分布可能是一个“狭长”的形状,如下所示:
可见,上图还是反映出物理量之间存在较强的关联性。它们基本上还是沿着某个方向分布。因此,我们仍希望寻找出这个方向的坐标表示,以实现数据的降维。也就是计算下图所示绿色直线所在的单位方向向量:
这条直线所在的方向向量就是我们所谓的主成分或主方向。那么,现在已知图中所有红色散点的坐标,如何去求出图中绿线的方向呢?
接下来就进入正题啦:
首先我们将散点整体向坐标原点平移,令散点的坐标中心与坐标原点重合,这一步称为去中心化,如下图:
设各点原始的位矢为,则坐标中心的位矢为,将各点平移后的新坐标为:
,,...
为什么要去中心化呢?下面将会进行分析。
对散点平移完成后,接下来就是求解主方向。从前面的图中,我们分析一下,所谓的主方向到底应该怎样来定量刻画它的性质?所谓的主方向就是使得所有的点都尽量沿着这个方向分布,那么我们将散点平移到坐标原点附近使得其坐标中心与原点重合后,这一特性可以用如下的数学语言来描述:主方向就是这样一个方向,所有散点去中心化后的位矢在这个方向向量上的投影长度平方和最大,如下图:
有了这一定量描述的优化目标,我们就能使用数学工具来解决了:
说到向量的投影,我们能想到什么,没错,又是内积(哈哈)。当其中一个向量为单位向量时,另一个向量在这一单位向量方向上的投影长度平方就是这两个向量内积的平方(高中数学知识)。设我们要找的主方向的单位向量为y,那么我们的优化目标便是:
注意到是一个列向量右乘它自身转置后的行向量(线性代数中通常默认向量为列向量),得到的是一个3*3的半正定对称矩阵(这里为方便大家从几何上理解,在三维空间中进行分析,若是有m个不同类型的数据,则是在m维空间下进行,这里的矩阵就是m*m的半正定对称矩阵),而这些3*3的对称矩阵相加后并除以n后:仍是一个3*3的半正定对称矩阵,我们称此为协方差矩阵(为什么称为协方差矩阵,稍后会进行解释),通常记为
则我们的优化目标就变为寻找一个单位向量y使得: ,其中表示的是数据点去中心化后的位矢在y方向投影长度平方的均值
接下来就是矩阵特征值和特征向量的登场时刻了,这里直接先给出结论:使得成立的单位向量y就是矩阵C的最大特征值对应的特征向量。我们在计算机中通常使用奇异值分解(SVD)求解矩阵的特征值和特征向量 。
下面说明为什么使得成立的单位向量y就是C的最大特征值的特征向量(纯粹数学证明,无碍大家对整体的理解与应用,可跳过):
由于C是一个半正定的对称矩阵,由线性代数知,它必有三个正交的特征向量,能进行正交对角化:
其中U是正交矩阵,D是对角矩阵,对角线各元素即C的特征值,不妨记为:;U的各列为对应的单位正交特征向量,不妨记为:;
由于 构成三维空间中的一组单位正交基,对任意的三维向量y均能被它们线性表示,不妨记为:,我们欲求最优的y即求最优组合系数使得
成立,又有:
由特征向量定义:, ,,代入上式得:
因为y是单位向量,故有: 。因此问题最终转化为:在约束下求使得
成立。显然,由于,我们令,即可(这里的条件极值问题就不再严格证明了)。因此是我们要找的主方向,即矩阵C的最大特征值对应的单位特征向量。
我们再来看看矩阵C的特征值有什么具体含义?
对于,此时各数据点去中心化后的位矢在y方向上的投影长度平方的均值为:
=
因此,最大特征值表示的就是数据点在主方向上的投影长度平方的均值
同理对于,此时是各点去中心化后的位矢在方向上的投影长度平方的均值:
=
对于,此时是各点去中心化后的位矢在方向上的投影长度平方的均值:
因此,三个特征值反映的就是数据点位矢在相应的三个正交特征矢量上的投影长度的综合大小,特征值越大,表明数据点沿对应的特征方向分布的离散程度越大。如下图,绿线代表数据分布离散程度最大的第一主方向,黑线代表数据分布离散程度次之的第二主方向,蓝线代表离散程度最小的第三主方向:
再回到前面的一个问题:矩阵为什么称为协方差矩阵?
我们设数据点的原始坐标为:。则数据点中心坐标为:其中分别是的均值。因此
故
由此可见:矩阵C的主对角元是数据点在各个维度上(即某一数据类型)的方差;而不在对角线上的元素是不同数据类型之间 的协方差,反映了这两种量之间的相关关系。因此协方差矩阵包含了数据点不同物理量之间的相关性信息,也即协方差
到此,主成分分析法的原理就完整地阐述完毕了。我们回过头再看一下主成分分析的优化目标:它是寻找一个方向使得所有数据点的位矢(去中心化后)在此方向上的投影长度平方和最大,那么相反地,数据点位矢在与主方向正交的方向上投影平方和最小。再看看我们最小二乘法做直线拟合时的优化目标——它是使得数据点到该直线距离平方和最小,因此主成分分析法所找的主方向本质上就是在做最小二乘直线拟合!那为什么最小二乘法没有替代主成分分析法呢?那是因为,主成分分析法除了给出数据分布最集中的主方向,还给出了数据点在其余若干方向分布的离散程度信息!
PCA不仅可以用来进行数据降维,下面再介绍主成分分析法应用于采样曲面法矢估计的一个例子:
在逆向工程、文物保护等工作中,一个重要的环节就是建立实物的数字几何模型。在建立模型时,获取的曲面数据点是离散的,而根据这些数据点的坐标信息对原始曲面在各点的法矢方向进行估计又是其中重要的一环。
分析一下曲面法向量有什么特点?与主方向相反,它应该是数据点分布离散程度最小的方向。因此我们对某采样点法矢方向估计的思路就是:首先在该点周围建立一块邻域,包含若干周围邻近的数据点,然后利用这些数据点的位矢构造协方差矩阵,矩阵最小特征值对应的特征向量就是我们要估计的法矢方向。下图是一个法矢估计的例子:
能看到这儿的小伙伴已经很不错啦!哈哈!说了这么多,其实站在工科生 的应用角度,对于这两种最重要的数据分析工具,我们应分别牢记一点:
最小二乘法是求解超定非齐次线性方程组最优解的方法,它的优化目标是每一个方程等号左侧的值与右侧给定的常数项之差的平方和最小,它的本质是将线性方程组的最优解问题转化为向量的最佳逼近
主成分分析法是分析数据点线性分布特征的方法,它的优化目标是确定某个向量使得数据点的位矢在此向量方向上的投影平方和最大。