现在每过一段时间都会出现几个新的网络用语,懂的人见了会心一笑,不懂的只能摸摸脑袋,不知道“梗”在哪里,少了许多乐趣。机器学习也有许多独特的用语,在本节,我们先把机器学习的“行话”都介绍清楚。
模型(Model)是机器学习的核心概念。如果认为编程有两大组成部分,即算法和数据结构,那么机器学习的两大组成部分就是模型和数据集。
如果之前没有接触过相关概念,想必你现在很希望直观地理解什么是模型,但对模型给出一个简洁又严谨的定义并不容易,你可以认为它是某种机器学习算法在设定参数后的产物,它的作用和编程时用到的函数一样,可以根据某些输入得到某些输出。
既然叫机器学习算法,不妨将它想象成一台机器,其上有很多旋钮,这些旋钮就是参数。机器本身是有输入和输出功能的,根据不同的旋钮组合,同一种输入可以产生不同的输出,而机器学习的过程就是找到合适的那组旋钮组合,通过输入得到你所希望的输出。
如果说机器学习的“机器”指的是模型,那么数据集就可以说是驱动着这台机器去“学习”的“燃料”。有些文献将数据集又分为训练集和测试集,其实它们的内容和形式并无差异,只是用在不同的地方:
我们刚才提到了数据集,数据集就是数据的集合。在机器学习中,我们称一条数据为一个样本(Sample),形式类似一维数组。样本通常包含多个特征(Feature):
这个术语又容易让你产生误解了。我们一般把可以作为人或事物特点的征象、标志等称作特征,譬如这个人鼻子很大,这就是特征,但在机器学习中,特征是某个对象的几个记录维度。我们都填写过个人信息表,特征就是这张表里的空格,如名字、性别、出生日期、籍贯等,一份个人信息表格可以看成一个样本,名字、籍贯这些信息就称作特征。
前面说数据形式类似一维数组,那么特征就是数组的值。
向量为线性代数术语,机器学习模型算法的运算均基于线性代数法则,不妨认为向量就是该类算法所对应的“数据结构”。一条样本数据就是以一个向量的形式输入模型的。
一条监督学习数据的向量形式如下:
矩阵为线性代数术语,可以将矩阵看成由向量组成的数组,形式上也非常接近二维数组。前面所说的数据集,通常就是以矩阵的形式输入模型的,常见的矩阵形式如下:
其实这个组织形式非常类似电子表格,不妨就以电子表格来对照理解。每一行就是一个样本,每一列就是一个特征维度,譬如某个数据集一共包括了 7 个样本,那就是有 7 行数据,每个样本又都有 4 个维度的特征,那就是每行数据有 4 列。
用电子表格表示如下表所示,其中,A~D 列为特征,E 列为结果,对比一下应该就能马上理解数据集是怎样用矩阵保存数据的。
A | B | C | D | E | |
---|---|---|---|---|---|
1 | 样本1特征X1的值 | 样本1特征X2的值 | 样本1特征X3的值 | 样本1特征X4的值 | 样本1的Y值 |
2 | 样本2特征X1的值 | 样本2特征X2的值 | 样本2特征X3的值 | 样本2特征X4的值 | 样本2的Y值 |
3 | 样本3特征X1的值 | 样本3特征X2的值 | 样本3特征X3的值 | 样本3特征X4的值 | 样本3的Y值 |
4 | 样本4特征X1的值 | 样本4特征X2的值 | 样本4特征X3的值 | 样本4特征X4的值 | 样本4的Y值 |
5 | 样本5特征X1的值 | 样本5特征X2的值 | 样本5特征X3的值 | 样本5特征X4的值 | 样本5的Y值 |
6 | 样本6特征X1的值 | 样本6特征X2的值 | 样本6特征X3的值 | 样本6特征X4的值 | 样本6的Y值 |
7 | 样本7特征X1的值 | 样本7特征X2的值 | 样本7特征X3的值 | 样本7特征X4的值 | 样本7的Y值 |
需要注意的是,我们在制作电子表格时习惯添加列头或行头,譬如第一行往往是时间、名字、班级这样的信息标签,但机器学习使用的数据集一般并不包含这些列头和行头,第一格的内容就是第一个样本的第一个特征的值,与我们日常习惯稍有区别。