本文主要是介绍线性代数精华——向量的线性相关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这一篇文章和大家聊聊向量。
向量与平面
向量这个概念我们在高中就接触到了,它既指一个点在空间中的坐标,也表示一个有向线段,如果我们加入复数概念的话,它还能表示一个数。在线性代数当中,向量就是指的n个有次序的数 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots, a_n a1,a2,⋯,an组成的数组。
向量可以写成一行,也可以写成一列。写成一列的称为列向量,例如:
a = [ a 1 a 2 ⋮ a n ] a=\left[ \begin{matrix} a_1 \\ a_2 \\ \vdots\\ a_n \end{matrix} \right] a=⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤
写成一行则是行向量: a T = [ a 1 , a 2 , ⋯ , a n ] a^T=[a_1, a_2, \cdots, a_n] aT=[a1,a2,⋯,an],为了方便并且统一,在当前以及以后的文章当中,我们使用小写字母来表示列向量,列向量的转置表示行向量,例如 a T , b T a^T, b^T aT,bT。既然向量可以表示点,点可以表示空间,那么自然向量也可以表示空间。所以我们可以把三维空间用向量表示:
R 3 = { r = ( x , y , z ) T ∣ x , y , z ∈ R } R^3=\{r=(x, y, z)^T|x, y, z\in R\} R3={r=(x,y,z)T∣x,y,z∈R}
既然我们可以用向量的集合表示空间,自然也可以用向量的集合来表示平面。表示平面的方式很简单,就是在向量当中限制一些条件,只保留满足条件的向量,比如三维空间当中的平面可以表示成:
{ r = ( x , y , z ) T ∣ a x + b y + c z = d } \{r=(x, y, z)^T| ax+by+cz=d\} {r=(x,y,z)T∣ax+by+cz=d}
同样,我们可以拓展到多维空间当中,一个n维空间可以用向量表示成:
R n = { r = ( x 1 , x 2 , ⋯ , x n ) T ∣ x 1 , x 2 , ⋯ , x n ∈ R } R^n=\{r=(x_1, x_2, \cdots, x_n)^T|x_1,x_2,\cdots,x_n\in R\} Rn={r=(x1,x2,⋯,xn)T∣x1,x2,⋯,xn∈R}
n维空间当中的平面可以表示成:
{ r = ( x 1 , x 2 , ⋯ , x n ) T ∣ a 1 x 1 + a 2 x 2 + ⋯ + a n x n = b } \{r=(x_1, x_2, \cdots, x_n)^T|a_1x_1+a_2x_2+\cdots+a_nx_n=b\} {r=(x1,x2,⋯,xn)T∣a1x1+a2x2+⋯+anxn=b}
如上定义的平面称为n维空间当中n-1维的超平面。因为超过3维的空间,我们很难想象出它的物理意义,所以称为超平面。
向量组与线性表示
我们可以把若干个向量组合到一起,这样的组合称为向量组,其实就是矩阵。我们可以把一个m * n的矩阵,看成是n个m维的列向量组合而成的向量组。之前我们介绍的 A x = 0 Ax=0 Ax=0的齐次线性方程组的解,当R(A) < n时,它是无限多个n维列向量的向量组。
有了向量组之后,我们看下一个概念。假设A是一个m个n维向量的向量组: a 1 , a 2 , ⋯ , a m a_1, a_2, \cdots, a_m a1,a2,⋯,am,b是另一个n维的向量。如果存在一组数: λ 1 , λ 2 , ⋯ , λ m \lambda_1, \lambda_2, \cdots, \lambda_m λ1,λ2,⋯,λm,使得:
λ 1 a 1 + λ 2 a 2 + ⋯ + λ m a m = b \lambda_1a_1+\lambda_2a_2+\cdots+\lambda_ma_m=b λ1a1+λ2a2+⋯+λmam=b
那么,我们称向量b能被向量组A线性表示。
这一点能够成立,其实也就是方程组: x 1 a 1 + x 2 a 2 + ⋯ + x m a m = b x_1a_1+x_2a_2+ \cdots +x_ma_m=b x1a1+x2a2+⋯+xmam=b 有解。如果我们将它展开,其实就是我们之前介绍的非齐次线性方程组。我们之前的文章当中已经证明过了,要使得该方程组有解,必须要满足:R(A) = R(A, b),这样,我们就把向量组和之前的线性方程组联系起来了。
如果存在不全为0的数: k 1 , k 2 , ⋯ , k n k_1, k_2, \cdots, k_n k1,k2,⋯,kn,使得: k 1 a 1 + k 2 a 2 + ⋯ + k n a n = 0 k_1a_1+k_2a_2+\cdots+k_na_n=0 k1a1+k2a2+⋯+knan=0。那么则称向量组A是线性相关的,否则是线性无关的。一般情况下,我们说线性无关或者线性相关,都是指n >= 2的情况。我们很容易看出,对于两向量来说线性相关,其实就是指的两向量成比例。如果是三个向量,则是三向量共面。
如果一个向量组A线性相关,我们假设 a 1 a_1 a1向量的系数k_1不为零,那么根据线性相关的定义,我们可以写出: a 1 = − 1 k 1 ( k 2 a 2 + k 3 a 3 + ⋯ + k n a n ) a_1 = \frac{-1}{k_1}(k2_a2+k_3a_3+\cdots+k_na_n) a1=k1−1(k2a2+k3a3+⋯+knan)。也就是说 a 1 a_1 a1向量能够被A组当中其他向量线性表示。反之,如果A组向量之中有一个向量能够被其他向量线性表示,那么就说明A组向量线性相关。
我们再换一种理解方式,如果将A组向量 A : a 1 , a 2 , ⋯ , a n A:a_1, a_2, \cdots, a_n A:a1,a2,⋯,an,看做是矩阵 A = ( a 1 , a 2 , ⋯ , a n ) A=(a_1, a_2, \cdots, a_n) A=(a1,a2,⋯,an),向量组A线性相关,就是齐次线性方程组 A x = 0 Ax=0 Ax=0有非零解。我们之前介绍齐次线性方程组的时候曾经介绍过,齐次线性方程组要有非零解的条件是R(A) < n。如果R(A) = n,那么齐次线性方程组没有非零解,也就是说向量组A线性无关。
这样一来,我们就把上一篇文章当中介绍的线性方程组是否有解的问题串联起来了。记不清楚的同学可以点击下方链接回顾上篇文章:
线性代数精华3——矩阵的初等变换
到这里,我们关于向量组和线性相关的概念就差不多介绍完了。不过向量组当中还有一些很好用的性质,简单列举一下:
-
如果向量组 A : a 1 , a 2 , ⋯ , a n A: a_1, a_2, \cdots, a_n A:a1,a2,⋯,an线性相关,那么向量组 B : a 1 , a 2 , ⋯ , a n + 1 B:a_1, a_2, \cdots, a_{n+1} B:a1,a2,⋯,an+1,也线性相关。反之,如果B线性无关,那么A也一定线性无关。
-
n个m维向量组成的向量组,当m 小于 n 时,一定线性相关。另外,n+1个n维向量一定线性相关。
-
如果向量组 A : a 1 , a 2 , ⋯ , a n A:a_1, a_2, \cdots, a_n A:a1,a2,⋯,an线性无关,向量组 B : a 1 , a 2 , ⋯ , a m , b B:a_1, a_2, \cdots, a_m, b B:a1,a2,⋯,am,b线性相关。那么向量b必然可以被向量组A线性表示,并且表示的方式唯一。
以上三个特性都很直观,这里就不一一列举了。
这里说的线性相关都是绝对的线性相关,但是在机器学习领域,由于数据之间存在误差,所以我们很少使用绝对的线性相关。相反,我们会用向量之间的相似度来衡量向量之间的相关性。
在线性模型当中,我们会分析特征和预测结果的相关性,如果相关性不高,那么说明这个特征非常弱,或者效果很差,如果很强,则说明这个特征指导意义很高。我们也会分析特征之间的相关性,如果某两个特征相关性很高,说明它们提供的信息差不多,对于模型来说其实提供了非常近似的信息,很可能并不会带来正面助益,反而带来误差或者影响。这时候可以考虑去除多余的特征,或者使用一些降维算法,来降低特征的维度。
向量空间
最后,我们来简单介绍一下向量空间。向量空间的定义很简单,其实就是一个全体向量的集合。我们把全体n维向量组成的集合,称作是n维向量空间。
假设V是一个向量空间,存在r个向量: a 1 , a 2 , ⋯ , a r ∈ V a_1, a_2, \cdots, a_r \in V a1,a2,⋯,ar∈V,并且满足一下条件:
- a 1 , a 2 , ⋯ , a r a_1, a_2, \cdots, a_r a1,a2,⋯,ar线性无关
- V中任一向量都可以用 a 1 , a 2 , ⋯ , a r a_1, a_2, \cdots, a_r a1,a2,⋯,ar线性表示。
那么我们称向量组 a 1 , a 2 , ⋯ , a r a_1, a_2, \cdots, a_r a1,a2,⋯,ar为向量空间V的一个基,r称为向量空间V的维数,并称V为r维的向量空间。如果把向量空间V也看成是向量组,那么V的维数其实就是这个向量组的秩。
有了基的概念之后,我们就可以表示向量空间当中所有的向量。假设空间V的基是 a 1 , a 2 , ⋯ , a r a_1, a_2, \cdots, a_r a1,a2,⋯,ar,对于任一向量x,都有唯一的一个表示:
x = λ 1 a 1 + λ 2 a 2 + ⋯ + λ r a r x=\lambda_1a_1+\lambda_2a_2+\cdots+\lambda_ra_r x=λ1a1+λ2a2+⋯+λrar
数组: [ λ 1 , λ 2 , ⋯ , λ r ] [\lambda_1,\lambda_2,\cdots, \lambda_r] [λ1,λ2,⋯,λr]就是向量x在基 a 1 , a 2 , ⋯ , a r a_1, a_2, \cdots, a_r a1,a2,⋯,ar中的坐标。
对于n维向量空间 R n R^n Rn,我们取它的单位坐标向量组: e 1 , e 2 , ⋯ , e n e_1, e_2, \cdots, e_n e1,e2,⋯,en,那么x就可以表示成: x = x 1 e 1 + x 2 e 2 + ⋯ + x n e n x=x_1e_1+x_2e_2+\cdots+x_ne_n x=x1e1+x2e2+⋯+xnen,其中的 x 1 , x 2 , ⋯ , x n x_1, x_2,\cdots,x_n x1,x2,⋯,xn也就是x向量在各个维度上的分量,因此 e 1 , e 2 , ⋯ , e n e_1, e_2,\cdots,e_n e1,e2,⋯,en就称为是空间 R n R^n Rn中的自然基。
今天的文章就是这些内容,如果觉得有所收获,还请点个“关注”吧。
这篇关于线性代数精华——向量的线性相关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!