二次型、特征值向量、奇异值、特征值、奇异值分解、奇异值分解(SVD)原理与在降维中的应用

    科技2022-07-10  261

    一、二次型

    通过矩阵来研究二次函数(方程),这就是线性代数中二次型的重点。

    1 二次函数(方程)的特点

    1.1 二次函数

    最简单的一元二次函数就是: 给它增加一次项不会改变形状: 增加常数项就更不用说了,更不会改变形状。

    1.2 二次方程

    下面是一个二元二次方程: 给它增加一次项也不会改变形状,只是看上去有些伸缩:

    1.3 小结

    对于二次函数或者二次方程,二次部分是主要部分,往往研究二次这部分就够了。

    2 通过矩阵来研究二次方程

    因为二次函数(方程)的二次部分最重要,为了方便研究,我们把含有n 个变量的二次齐次函数: f ( x 1 , x 2 , ⋅ , x n ) = a 11 x 1 2 + a 22 x 2 2 + ⋯ + a n n x n 2 + 2 a 12 x 1 x 2 + 2 a 13 x 1 x 3 + ⋯ + 2 a n − 1 , n x n − 1 x n f(x_1,x_2,\cdot,x_n)=a_{11}x_1^2+a_{22}x_2^2+\cdots+a_{nn}x_n^2+2a_{12}x_1x_2+2a_{13}x_1x_3+\cdots+2a_{n-1,n}x_{n-1}x_n f(x1,x2,,xn)=a11x12+a22x22++annxn2+2a12x1x2+2a13x1x3++2an1,nxn1xn

    或者二次齐次方程称为二次型。

    2.1 二次型矩阵

    实际上我们可以通过矩阵来表示二次型: 更一般的: 可以写成更线代的形式: 所以有下面一一对应的关系: 在线代里面,就是通过一个对称矩阵,去研究某个二次型。

    2.2 通过矩阵来研究有什么好处

    2.2.1 圆锥曲线

    我们来看下,这是一个圆: 我们来看改变一下二次型矩阵: 哈,原来椭圆和圆之间是线性关系呐(通过矩阵变换就可以从圆变为椭圆)。

    继续: 咦,双曲线和圆之间也是线性关系(准确的说是仿射的)。

    其实圆、椭圆、双曲线之间关系很紧密的,统称为圆锥曲线,都是圆锥体和平面的交线:

    从上面动图可看出,一个平面在圆锥体上运动,可以得到圆、椭圆、双曲线,这也是它们之间具有线性关系的来源(平面的运动是线性的、或者是仿射的)。

    2.2.2 规范化

    再改变下矩阵: 这个椭圆看起来有点歪,不太好处理,我们来把它扶正,这就叫做规范化。

    如果我们对矩阵有更深刻的认识,那么要把它扶正很简单。

    往下读之前,请先参看我在如何理解特征值(https://www.zhihu.com/question/21874816/answer/181864044)下的回答。

    首先,矩阵代表了运动,包含:

    旋转 拉伸 投影

    对于方阵,因为没有维度的改变,所以就没有投影这个运动了,只有:

    旋转 拉伸

    具体到上面的矩阵: 我把这个矩阵进行特征值分解: 注意我上面提到的正交很重要,为什么重要,参下。

    对于二次型矩阵,都是对称矩阵,所以特征值分解总可以得到正交矩阵与对角矩阵。

    特征值分解实际上就是把运动分解了: 那么我们只需要保留拉伸部分,就相当于把矩阵扶正(图中把各自图形的二次型矩阵标注出来了): 所以,用二次型矩阵进行规范化是非常轻松的事情。

    2.2.3 正定

    正定是对二次函数有效的一个定义,对方程无效。

    对于二次型函数,f(x)=x^TAx :

    f(x)>0,x\ne0,x\in\mathbb{R} ,则f 为正定二次型,A 为正定矩阵f(x)\geq0,x\ne0,x\in\mathbb{R} ,则f 为半正定二次型,A 为半正定矩阵f(x)<0,x\ne0,x\in\mathbb{R} ,则f 为负定二次型,A 为负定矩阵f(x)\leq0,x\ne0,x\in\mathbb{R} ,则f 为半负定二次型,A 为半负定矩阵以上皆不是,就叫做不定

    从图像上看,这是正定: 半正定: 不定: 既然二次型用矩阵来表示了,那么我们能否通过矩阵来判断是否正定呢?

    下面我分别给出了二次型的图形,以及对应的特征值矩阵的图形,你可以自己动手试试(3D窗口可以通过鼠标旋转,方便观察),得出自己的结论: 起码,我们可以观察出这个结论,特征值都大于0,则为正定矩阵。

    3 总结

    在很多学科里,二次型都是主要研究对象,很多问题都可以转为二次型。线代作为一门数学工具,在二次型的研究中也发挥了很好的作用。

    二、特征值、特征向量

    0 矩阵的特征:特征值,特征向量,行列式,trace

    矩阵的特征向量跟特征值的英文名字分别是 eigenvector 跟 eigenvalue,这俩概念非常非常有用,根据他们俩可以外延出很多有趣的功能。大部分同学可能脑子里想一下还能记得他们俩是怎么计算出来的,但是他们为什么可以代表一个矩阵的“特征”呢?除了这俩,相信大多数同学都不记得矩阵的行列式是个什么东西了,总之不太直观。相比较而言,矩阵的**迹(trace)**这个概念就比较直观,就是主对角线上的元素之和。本篇文章主要围绕这四个概念,讲一下这四个东西是如何刻画矩阵的特征跟他们之间的关联。

    对比着俩图可以发现,对于一个固定的矩阵A,一般的向量被他transform之后都会改变方向,但是有一些特殊的向量,被A映射了之后还是保持它本来的方向,改变的只是它的模长。这些特殊向量的方向不变性表达出来就是这样的: 什么样的矩阵会产生这种效果呢?对于二维矩阵来说,只要它的两个行向量共线就可以。重新理一下我们现在的逻辑线条:想让方程组(1)有非零解,必须让它的行向量共线,想让行向量共线,只需要A的行列式为零;二维矩阵的行列式等于平行四边形的面积,三维矩阵的行列式对应的是平行六面体的体积…更高维度上也可以延伸出同样的类似于“体积”的定义。

    那么面积要怎么算呢?还是以二维平面为例,两个向量构成的平行四边形的面积可以由下面这个公式计算 (粉红的图片来自维基百科) 下面,高能的部分来了: 矩阵的trace等于特征值之和,也就是说矩阵的主对角线元素之和等于它的特征值之和。对于这个性质作者暂时也还没能想到一个直观的解释,证明的思路跟证明前面的那个行列式等于特征值之和类似,要从特征方程的表达式入手。

    https://zhuanlan.zhihu.com/p/25955676

    0.1 方阵的特征值和特征向量

    所以最后总结回答问题:每一个特征值,都对应一个eigenspace,那么A的所有特征空间(eigenspace)的维数加起来是不是恰好等于n?A的所有eigenspace会不会小于n?

    答案:

    对于可对角化的n维方阵矩阵A,当它有0特征值时,如果0特征值的eigenspace维数=a,那么它的所有非零特征值的eigenspace合起来的维数=n-a。A的所有eigenspace的维数是a+n-a=n,恰好等于n。

    对于只能约当块对角化的n维方阵A,当它有0特征值时,如果0特征值的Jordan block有a个,也就是0特征值的eigenspace的维数为a,0特征值的a个Jordan block广义特征向量的维数加起来为b,其他各个非零特征值的eigenspace维数加起来为c,这c个Jordan block的广义特征空间的维数加起来为d,这时a+b+c+d=n,A的所有eigenspace的维数是a+c<n。

    (下面的回答只涉及实数范围)。 关于特征值、特征向量可以讲的确实很多,我这里希望可以给大家建立一个直观的印象。 先给一个简短的回答,如果把矩阵看作是运动,对于运动而言,最重要的当然就是运动的速度和方向,那么(我后面会说明一下限制条件):

    特征值就是运动的速度特征向量就是运动的方向

    既然运动最重要的两方面都被描述了,特征值、特征向量自然可以称为运动(即矩阵)的特征。

    注意,由于矩阵是数学概念,非常抽象,所以上面所谓的运动、运动的速度、运动的方向都是广义的,在现实不同的应用中有不同的指代。

    下面是详细的回答,我会先从几何上简单讲解下特征值、特征向量的定义指的是什么,然后再来解释为什么特征值、特征向量会是运动的速度和方向。

    1 几何意义

    从定义出发,Ax=cx:A为矩阵,c为特征值,x为特征向量。 矩阵A乘以x表示,对向量x进行一次转换(旋转或拉伸)(是一种线性转换),而该转换的效果为常数c乘以向量x(即只进行拉伸)。 我们通常求特征值和特征向量即为求出该矩阵能使哪些向量(当然是特征向量)只发生拉伸,使其发生拉伸的程度如何(特征值大小)。这样做的意义在于,看清一个矩阵在那些方面能产生最大的效果(power),并根据所产生的每个特征向量(一般研究特征值最大的那几个)进行分类讨论与研究。

    说明下,因为线性变换总是在各种基之间变来变去,所以我下面画图都会把作图所用的基和原点给画出来。 在 i ⃗ , j ⃗ \vec{i_{}},\vec{j_{}} i ,j 下面有个 v ⃗ \vec{v_{}} v : 随便左乘一个矩阵A,图像看上去没有什么特殊的: 我调整下 v ⃗ \vec{v_{}} v 的方向,图像看上去有点特殊了:

    可以观察到,调整后的 v ⃗ \vec{v_{}} v A v ⃗ A\vec{v_{}} Av 在同一根直线上,只是 A v ⃗ A\vec{v_{}} Av 的长度相对 v ⃗ \vec{v_{}} v 的长度变长了。 此时,我们就称 v ⃗ \vec{v_{}} v 是A的特征向量,而 A v ⃗ A\vec{v_{}} Av 的长度是 v ⃗ \vec{v_{}} v 的长度的 λ \lambda λ倍, λ \lambda λ就是特征值。 从而,特征值与特征向量的定义式就是这样的: 其实之前的A不止一个特征向量,还有一个特征向量: 容易从 A v ⃗ A\vec{v_{}} Av 相对于 v ⃗ \vec{v_{}} v 是变长了还是缩短看出,这两个特征向量对应的特征 λ \lambda λ值,一个大于1,一个小于1。 从特征向量和特征值的定义式还可以看出,特征向量所在直线上的向量都是特征向量: 你可以自己动手试试,可以改变 v ⃗ \vec{v_{}} v 的位置,以及矩阵A的值(特征空间会随着矩阵改变而改变):

    其中有些值构成的矩阵没有画出特征空间,可能是因为它的特征值、特征向量是复数,也可能是不存在。 下面就要说下,特征值、特征向量与运动的关系

    2 运动的速度与方向

    2.1 从调色谈起

    我有一管不知道颜色的颜料,而且这管颜料有点特殊,我不能直接挤出来看颜色,只能通过调色来观察:

    为了分辨出它是什么颜色(记得它只能通过调色来辨别): 因为反复混合之后,这管颜料的特征就凸显了出来,所以我们判断,这管颜料应该是蓝色。 说这个干什么?矩阵也有类似的情况。

    2.2 矩阵的混合

    一般来说,矩阵我们可以看作某种运动,而二维向量可以看作平面上的一个点(或者说一个箭头)。对于点我们是可以观察的,但是运动我们是不能直接观察的。 就好像,跑步这个动作,我们不附加到具体的某个事物上是观察不到的,我们只能观察到:人跑步、猪跑步、老虎跑步、…,然后从中总结出跑步的特点。 就好像之前举的不能直接观察的颜料一样,要观察矩阵所代表的运动,需要把它附加到向量上才观察的出来: 似乎还看不出什么。但是如果我反复运用矩阵乘法的话: 就像之前颜料混合一样,反复运用矩阵乘法,矩阵所代表的运动的最明显的特征,即速度最大的方向,就由最大特征值对应的特征向量展现了出来。 至于别的特征值对应的是什么速度,我后面会解释,这里先跳过。 可以自己动手试试,我把\lambda值也标注出来了,可以关注下最大\lambda值对于运动的影响: 顺便说下,对于复数的特征值、特征向量,在上面就没有画出特征空间,但可以观察到反复运用矩阵乘法的结果是围绕着原点在旋转。关于复数特征值和特征向量这里就不展开来说了。

    2.3 烧一壶斐波那契的水

    就可以看出,这壶水的温度会沿着A的特征值最大的特征向量方向飞快增长,我估计要不了多久,在理想的情况下,温度就会突破百万度、千万度、亿万度,然后地球说不定就爆炸了。我们就说这个矩阵不稳定。 所以说,不要烧斐波那契的水。 实际上历史也是这样,欧拉在研究刚体的运动时发现,有一个方向最为重要,后来拉格朗日发现,哦,原来就是特征向量的方向。 我们知道特征值、特征向量有什么特点之后,下一步就想知道,为什么会这样?

    3 特征值分解

    下面讲解要用到矩阵乘法和相似矩阵的知识,我就不啰嗦了,可以参看:“从高斯消元法到矩阵乘法”(https://www.matongxue.com/madocs/755)、“如何理解矩阵乘法?”(https://www.matongxue.com/madocs/555/)以及“相似矩阵是什么?”(https://www.matongxue.com/madocs/491) 对于方阵而言,矩阵不会进行纬度的升降,所以矩阵代表的运动实际上只有两种:

    旋转拉伸

    最后的运动结果就是这两种的合成。 我们再回头看下刚才的特征值分解,实际上把运动给分解开了:

    我们来看看在几何上的表现是什么,因此相似矩阵的讲解涉及到基的变换,所以大家注意观察基: 如果旋转前的基不正交,旋转之后变为了标准基,那么实际会产生伸缩,所以之前说的正交很重要。 相当于,之前的旋转指明了拉伸的方向,所以我们理解了:

    特征值就是拉伸的大小特征向量指明了拉伸的方向

    回到我们之前说的运动上去,特征值就是运动的速度,特征向量就是运动的方向,而其余方向的运动就由特征向量方向的运动合成。所以最大的特征值对应的特征向量指明了运动速度的最大方向。 但是,重申一下,上面的推论有一个重要的条件,特征向量正交,这样变换后才能保证变换最大的方向在基方向。如果特征向量不正交就有可能不是变化最大的方向,比如: 所以我们在实际应用中,都要去找正交基。但是特征向量很可能不是正交的,那么我们就需要奇异值分解了,这里就不展开了。 大家可以再回头去操作一下之前的动图,看看不正交的情况下有什么不一样。 说明下,如果大家把这个文章和之前提到的我写的“相似矩阵”的文章参照来看的话,“相似矩阵”那篇文章里面我把图像的坐标系换了,所以看着图像没有变换(就好像直角坐标系到极坐标系下,图像是不会变换的)。而这里我把图像的坐标系给旋转、拉伸了,所以看着图像变换了(就好像换元,会导致图像变换)。这其实是看待矩阵乘法的两种视角,是等价的,但是显示到图像上就有所不同。

    4 特征值、特征向量的应用

    4.1 控制系统

    之前的烧水系统是不稳定的。 λ = 1 \lambda = 1 λ=1的,系统最终会趋于稳定:

    4.2 图片压缩

    比如说,有下面这么一副 512 × 512 512\times512 512×512的图片(方阵才有特征值,所以找了张正方形的图): 这个图片可以放到一个矩阵里面去,就是把每个像素的颜色值填入到一个 512 × 512 512\times512 512×512的A矩阵中。 根据之前描述的有: A = P Λ P − 1 A=P\Lambda P^{-1} A=PΛP1 其中, Λ \Lambda Λ是对角阵,对角线上是从大到小排列的特征值。 我们在 Λ \Lambda Λ中只保留前面50个的特征值(也就是最大的50个,其实也只占了所有特征值的百分之十),其它的都填0,重新计算矩阵后,恢复为下面这样的图像: 效果还可以,其实一两百个特征值之和可能就占了所有特征值和的百分之九十了,其他的特征值都可以丢弃了。

    5 特征方程

    三、奇异值

    奇异值是矩阵里的概念,一般通过奇异值分解定理求得。设A为 m × n m\times n m×n阶矩阵, q = m i n ( m , n ) q=min(m,n) q=min(m,n) A ∗ A A*A AA的q个非负特征值的算术平方根叫作A的奇异值。 奇异值分解是线性代数和矩阵论中一种重要的矩阵分解法,适用于信号处理和统计学等领域。

    1. 特征值和奇异值

    矩阵的特征值分解考虑的是一个到自身的映射矩阵,奇异值分解考虑的矩阵对应的是到别的空间的映射。结合此点,理解以下:

    1.1 特征值和奇异值的区别

    特征值是方阵所有,奇异值是所有矩阵。 特征值可正可负可为0,奇异值是非负的。 特征值对应着到自身空间的变换,及缩放尺度,而奇异值则表示着到另一个空间的变换。

    下图特征值: 下图奇异值:

    1.2 特征向量和奇异向量

    对称矩阵的特征向量一般情况下被约束为单位2范数,而非对称阵矩阵的特征向量则有不同的2范数,奇异向量的2范数一般被约束为1.

    下图特征值和特征向量等式: 下图 A − λ A-\lambda Aλ是奇异的; A的特征多项式或特征方程: 下图矩阵形式: 当假设X的各列线性独立的时候,则可以有下图常见的特征值分解形式: 下图矩阵形式: 其中U和V在实值的情况是正交阵,是复数的情况下是unitary的。

    下图奇异值分解:

    3,相似矩阵

    相似矩阵保特征值 下图A和B是相似的:

    2. 奇异值分解

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。

    2.1 回顾特征值和特征向量

    2.2 SVD的定义

    2.3 SVD计算举例

    2.4 SVD的一些性质

    2.5 SVD用于PCA

    2.6 SVD小结

    SVD作为一个很基本的算法,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更是大展身手。SVD的原理不难,只要有基本的线性代数知识就可以理解,实现也很简单因此值得仔细的研究。当然,SVD的缺点是分解出的矩阵解释性往往不强,有点黑盒子的味道,不过这不影响它的使用。

    四、特征值分解vs.奇异值分解

    奇异值分解正是对线性变换这三种效应(旋转、缩放和投影)的一个析构。 而特征值分解其实是对旋转缩放两种效应的归并。(有投影效应的矩阵不是方阵,没有特征值)

    总结

    特征值分解和奇异值分解都是给一个矩阵(线性变换)找一组特殊的基,特征值分解找到了特征向量这组基,在这组基下该线性变换只有缩放效果。而奇异值分解则是找到另一组基,这组基下线性变换的旋转、缩放、投影三种功能独立地展示出来了。我感觉特征值分解其实是一种找特殊角度,让旋转效果不显露出来,所以并不是所有矩阵都能找到这样巧妙的角度。仅有缩放效果,表示、计算的时候都更方便,这样的基很多时候不再正交了,又限制了一些应用。

    五、数据的中心化和标准化

    简介: 意义:数据中心化和标准化在回归分析中是取消由于量纲不同、自身变异或者数值相差较大所引起的误差。 原理:数据标准化:是指数值减去均值,再除以标准差; 数据中心化:是指变量减去它的均值。 目的:通过中心化和标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。

    在回归问题和一些机器学习算法中,以及训练神经网络的过程中,还有PCA等通常需要对原始数据进行中心化(Zero-centered或者Mean-subtraction)处理和标准化(Standardization或Normalization)处理。

    目的:通过中心化和标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。计算过程由下式表示: 原因:在一些实际问题中,我们得到的样本数据都是多个维度的,即一个样本是用多个特征来表征的。很显然,这些特征的量纲和数值得量级都是不一样的,而通过标准化处理,可以使得不同的特征具有相同的尺度(Scale)。这样,在学习参数的时候,不同特征对参数的影响程度就一样了。简言之,当原始数据不同维度上的特征的尺度(单位)不一致时,需要标准化步骤对数据进行预处理。 下图是二维的示例: 左图表示的是原始数据 中间的是中心化后的数据,可以看出就是一个平移的过程,平移后中心点是(0,0)。同时中心化后的数据对向量也容易描述,因为是以原点为基准的。 右图将中心化后的数据除以标准差,得到为标准化的数据,可以看出每个维度上的尺度是一致的(红色线段的长度表示尺度),而没有处理之前的数据是不同的尺度标准。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

    ————————————————

    二次型 https://www.matongxue.com/madocs/271/ 特征值 https://www.matongxue.com/madocs/228 特征方程 http://www2.edu-edu.com.cn/lesson_crs78/self/j_4184/soft/ch0501.html 奇异值 https://www.jianshu.com/p/96572985c8ab 特征值分解和奇异值分解 https://www.zhihu.com/question/19666954/answer/54788626 数据的中心化和标准化 https://blog.csdn.net/lilong117194/article/details/78561013

    Processed: 0.025, SQL: 8