1.2.3 线性无关
继续使用(1.2.2)式,在重大发现的基础上,就不难为方程组(1.2.1)式构建一组解了(注意,不是用什么方法解出来了,是直接“看”出来的,完全凭经验),比如,即得到了:
当然,也可以构建其他形式的解。
对于类似于和这样的向量,我们称之为线性相关(Linear Correlation),与此对应的就是线性无关(Linear Independence)。
定义 设是一个向量组,如果有一组不全为的数,使得:
那么称向量组是线性相关的。否则,称向量组是线性无关的,即如果根据:
得到,那么称向量组是线性无关的。
例如,三维向量空间中的向量组:,若想使得这三个向量的线性组合等于:
只能。因此,这三个向量线性无关。
根据线性无关的定义,可以推导出一些结论,此处列举几项:
● 如果向量组线性无关,则它的任意一部分向量也线性无关
● 如果向量组中有一部分向量线性相关,则此向量组线性相关
● 含有零向量的向量组,一定线性相关。
向量组中向量的线性相关或线性无关分析,是线性代数和机器学习中的重要内容。下面以前(1.2.2)式为例,通过分析由其所得到的线性相关的线性组合,进而完成方程组的求解。
由于,(1.2.2)式等号左边可以变化为:
令:,则有:
也就是得到了一个与原线性方程组(1.2.1)式等效的线性方程组:
由此,解得:
又因为:,所以:
其中是自由变量,显然这个方程组有无数个解。
为了更直观地理解线性相关和线性无关,假设有两个向量和,它们在一条直线上(即一维空间),不论它们的方向关系如何,总能写成的形式,显然,这两个向量是线性相关的。
以上内容在一维空间中比较容易理解,如果在二维空间中就会稍显复杂了。
如图1-2-3所示,假设平面空间上有两个不共线的向量,这两个向量中的任何一个发生变化,都不会影响另外一个。或者说,当且仅当时,才有成立。所以它们是线性无关的。
如果适当调整这两个线性无关的向量的大小和它们之间的夹角,就可以合成平面中任何一个其他向量,也就是任何一个其他向量,都可以用这两个向量表示。所以在一个平面空间中,如果确定了两个线性无关的向量,则可以证明,任何第三个向量必然与它们线性相关(严格的证明过程,请参阅本书在线资料。关于在线资料的说明,请阅读前言),即。
为了简化表示,我们可以将已知的两个向量特殊化,即和两个向量的长度都是(即单位向量),且它们的夹角为,并用新的符号标记:。把向量的起点作为长度的计数起点,标记为数字,如图1-2-4所示。
图1-2-3
图1-2-4
平面空间的任意一个向量本来可以用图1-2-4所示的向量合成,即:
根据前面的假设,的长度一定是单位向量的倍(是一个实数),且方向与之相同,记作:。同理,。所以:
根据1.1节所学,我们知道,单位向量可以分别表示为:
所以,也可将写成:
将上述过程总结一下,我们从“平面上两个不在同一条直线上的向量线性无关”开始,然后用这两个向量表示任何第三个向量,最后将这两个向量特殊化(用单位向量表示),进而得到了我们熟悉的东西——笛卡儿坐标系(Cartesian Coordinate System)。现在复习1.1.1节中描述向量的方法,是不是就理解其缘由了呢?如果再结合1.3节的阐述,则更能深入领悟。
同样的思路,可以延伸到三维空间或者更高维的空间。
如果用不完全归纳法,则我们会发现,维空间中有个线性无关的向量,用它们可以表征任意第个向量。并且,为了方便,我们还使用笛卡儿坐标系,维空间中的笛卡儿坐标系有个单位向量,用这些单位向量可以表征此空间中任何一个向量。我想,应该首先向伟大的数学家、哲学家笛卡儿(法语名:René Descartes,拉丁语名:Renatus Cartesius,肖像如图1-2-5所示)致敬,他于1637年发表了巨著《方法论》,并在其附录“几何”中阐述了如今的笛卡儿坐标系。伟大的笛卡儿的这项发明,将代数与欧几里得几何结合了起来,并影响了其他数学分支和其他科学。笛卡儿在文科生里也有很高的声望,就是因为那句“我思故我在”,很多人为理解这句模模糊糊的话费尽周折,甚至于口诛笔伐。
图1-2-5
1.1.1节曾提到过,对于Pandas的DataFrame对象,每一列可以看成一个向量。
有数据集df,其中的特征target表示每个样本(每一行)的分类标签,假设用这个数据集训练一个分类模型(注意,这里只是为了说明问题而假设,不是实际情况,因为数据集太小了),上面的数据中显示了三个特征A、B、C,这三个特征是否可以作为训练模型的自变量呢?
三个特征,相当于三个向量,并且有:
这三个特征(向量)线性相关,如果想象一种极端情况,三个特征的值都一样,也是线性相关的。所以,这时貌似是三个特征,实则就一个,任何两个特征的线性组合就是第三个。那么,在这样的数据集中,我们只需要选其中任何一个作为自变量即可。
除此之外,在数据集中,还会有一种情况,也需要慎重选择特征。
上述操作中加载了泰坦尼克号的数据集,用df_parts.head()显示了部分特征的前5个样本,并以df_parts.info()得到了每个特征的类型。从输出结果中可知,特征Sex不是数字,因此如果要将这个数据集作为某个机器学习模型的训练集,就必须对这个特征进行变换,通常要对它进行OneHot编码(参阅《数据准备和特征工程》一书),如以下程序所示。
此处的输出结果实现了OneHot编码,如果将特征Sex_femal和Sex_male分别看作两个向量,仅取上面所显示的,即向量和(此处用行向量的转置表示,关于转置,请参阅2.3.2节),虽然它们线性无关,但是,对于每一个人而言,一般情况下,我们不需要说“他的性别是男,并且不是女”(即Sex_female=1且Sex_male=0),只需要说“他的性别是男”(即Sex_female=1)就已经把性别描述清楚了,另外一个特征则是冗余的。所以,可以删除一个。
在机器学习中,像上面那样对特征进行选择和变换,是必不可少的,推荐参阅拙作《数据准备和特征工程》(电子工业出版社)。