1.1 有数据的地方,必有矩阵
本章主角虽然是向量(vector),但是这个有关向量的故事要先从矩阵(matrix)讲起。
简单来说,矩阵是由若干行或若干列元素排列得到的数组(array)。矩阵内的元素可以是实数、虚数、符号,甚至是代数式。
从数据角度来看,矩阵就是表格!
鸢尾花数据集
数据科学、机器学习算法和模型都是“数据驱动”。没有数据,任何的算法都无从谈起,数据是各种算法的绝对核心。优质数据本身就极具价值,甚至不需要借助任何模型;反之,则是垃圾进,垃圾出(Garbage in, garbage out, GIGO)。
本书使用频率最高的数据是鸢尾花卉数据集。数据集的全称为安德森鸢尾花卉数据集(Anderson’s Iris data set),是植物学家埃德加·安德森(Edgar Anderson)在加拿大魁北克加斯帕半岛上采集的鸢尾花样本数据。图1.1所示为鸢尾花数据集部分数据。
图1.1给出的这些样本都归类于鸢尾属下的三个亚属,分别是山鸢尾(setosa)、变色鸢尾(versicolor)和弗吉尼亚鸢尾(virginica)。每一类鸢尾花收集了50条样本记录,共计150条。
鸢尾花的四个特征被用作样本的定量分析,它们分别是花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)和花瓣宽度(petal width)。
如图1.2所示,本书常用热图(heatmap)可视化矩阵。不考虑鸢尾花分类标签,鸢尾花数据矩阵X有150行、4列,因此X也常记做X150×4。
注意:本书用大写、粗体、斜体字母代表矩阵,如X、A、Σ、Λ。特别地,本书用X代表样本数据矩阵,用Σ代表方差协方差矩阵(variance covariance matrix)。本书用小写、粗体、斜体字母代表向量,如x、x1、x(1)、v。
图1.1 鸢尾花数据,数值数据(单位:cm)
行向量、列向量
前文提到,矩阵可以视作由一系列行向量、列向量构造而成。
反向来看,矩阵切丝、切片可以得到行向量、列向量。如图1.2所示,X任一行向量(x(1)、x(2)、…、x(150))代表一朵鸢尾花样本花萼长度、花萼宽度、花瓣长度和花瓣宽度测量结果;而X某一列向量(x1、x2、x3、x4)为鸢尾花某个特征的样本数据。
图1.2 矩阵可以分割成一系列行向量或列向量
图片
数据矩阵其实无处不在。
再举个例子,大家日常随手拍摄的照片实际上就是数据矩阵。图1.3所示为作者拍摄的一张鸢尾花照片。把这张照片做黑白处理后,它变成了形状为2990×2714的矩阵,即2990行、2714列。
图1.3所示照片显然不是矢量图。不断放大后,我们会发现照片的局部变得越来越模糊。继续放大,我们发现这张照片竟然是由一系列灰度热图构成的。再进一步,提取其中图片的4个像素点,也就是矩阵的4个元素,我们可以得到一个2×2实数矩阵。
对于大部分机器学习应用,如识别人脸、判断障碍物等,并不需要输入彩色照片,黑白照片的数据矩阵含有的信息就足够用。
鸢尾花书《数据有道》将采用主成分分析(Principal Component Analysis, PCA)继续深入分析图1.3这幅鸢尾花黑白照片。
图1.3 照片也是数据矩阵