zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

第1章 准备预测建模1.2 模型的类型

2023-03-09 22:21:21 时间


1.2 模型的类型


掌握了模型基本组成部分的总体思路之后,就可以进一步探讨建模者用来给不同模型分类的一些常用区分方式。

1.2.1 有监督、无监督、半监督和强化学习模型

我们已经观察了iris数据集,它由4个特征和1个输出变量(即品种species变量)组成。在训练数据中包含了所有观测数据的输出变量值,这就是有监督学习(supervised learning)环境的关键特性,它代表了我们会遇到的大部分常见场景。简而言之,在有监督学习的环境下训练模型的优势在于,对于训练数据中的数据点,已经有了要预测变量的正确答案。正如在上一节所见,kNN就是一个使用有监督学习方法的模型,因为该模型对一个输入点的预测是通过组合该点的一小批邻近点的输出变量值来进行的。在本书中,主要会重点讲解有监督学习。

按照上面这种根据能否获得输出变量值来区分不同模型的方式,我们还会看到第二种场景,即输出变量不明确的情况。这种场景被称为无监督学习(unsupervised learning)的环境。iris数据集的一个无监督版本只包含4个特征。如果我们得不到品种(species)这个输出变量,那么显然就无从知道每条观测数据对应的是哪个品种。实际上,我们都不会知道鸢尾花在该数据集里有多少个品种,或每个品种里各有多少观测数据。初看上去,似乎在缺少这个信息的条件下开展不了什么有用的预测性工作。实际上,我们能做的是利用我们能获得的4个特征,查看数据并根据它们之间的相似程度给观测数据分组。这个过程被称为聚类(clustering)。聚类的一个好处是我们可以在数据中发现数据点的自然分组,例如,我们也许能发现iris数据集的一个无监督版本里的鸢尾花样本形成了3个互不相同的分组,而它们对应着3个不同的品种。

在根据能否获得输出变量划分出来的无监督和有监督方法两个极端之间,还有半监督(semi-supervised)和强化学习(reinforcement learning)两种环境。半监督模型是利用一部分(通常很少)包含输出变量值而其他部分完全无标签的数据来创建的。很多这类模型会首先利用数据集的有标签部分来粗略地训练模型,然后引入无标签数据,用训练的模型对其产生预测的标签。

在强化学习环境里无法获得输出变量,但提供了其他和输出变量直接关联的信息。这样的一个示例是,根据已完成的棋谱数据,对赢得国际象棋比赛的下一步最佳走法进行预测。在训练数据中并没有单步走法的输出值,但对于每一局比赛,每个玩家下棋的整体序列产生赢或输的结果。由于篇幅所限,在本书中不会讲解半监督和强化学习的内容。

1.2.2 参数化和非参数化模型

在前面已经讲到了,我们遇到的大部分模型都是参数化模型(parametric model),我们还看到了一个简单线性模型的示例。参数化模型的一个特征是它们往往会定义一个函数形式(functional form)。这意味着它们把在所有可能的函数中选择目标函数的问题化简为一个具体的函数族,这个函数族就构成了一个参数集合。选择能定义模型的特定函数,实质上就是为这些参数选取确切的值。因此,回到那个有3个特征的线性模型示例,我们可以看到,有下面两种可能的参数选择(当然,选择是无穷的,这里我们只是演示了两个具体的选择):

Y1=0.68+2.54X1+9.12X2-0.13X3

Y2=4.56+3.08X1-2.29X2+1.11X3

这里,我们给输出Y使用了一个下标来注明两种不同的参考模型。这其中的哪一个会是更优的选择?答案是,这取决于数据。如果我们把每个模型运用于数据集里的观测数据,就会对每条观测数据产生预测输出。对于有监督学习而言,训练数据中的每条观测数据都标记了输出变量的正确值。为了评估模型的拟合优度,可以定义一个误差函数,用它来衡量我们的预测输出和正确输出的差异程度。然后,这个误差函数就可以用来对案例里的两个候选模型进行挑选,但是它更一般的作用在于通过渐进地逐步优化候选模型,对模型进行迭代式的改进。

某些参数化模型比线性模型更灵活,这意味着它们可以用来表达更多种可能的参考函数。线性模型会要求输出是输入特征的线性加权组合,这是比较严格的。可以直观地看出,更灵活的模型往往能让我们更精确地对输入数据进行近似,不过,当观察到过拟合问题时,我们就会发现这样并不总是好事。更灵活的模型往往也更复杂,因而对它们的训练往往会比训练不那么灵活的模型更难。

模型并不一定都是参数化的,实际上,没有参数的那一类模型被(名正言顺地)称为非参数化模型(nonparametric model)。非参数化模型一般对输出函数的具体形式不作任何假设。构建一个没有参数的目标函数有不同的方式。样条(spline)是非参数化模型的常见示例。样条背后的核心思想是,对于形式未知的输出函数,我们设想它是准确定义于训练数据的所有观测数据对应的点上。在这些点之间,可以利用平滑多项式函数对输出函数进行局部插值。实质上,输出函数是以分片方式在训练数据的点之间的空间中构建的。不像大部分场景那样,样条可以对训练数据确保百分之百的精确度,然而,在训练数据中存在某些误差是完全正常的。另一个非参数化模型的范例是我们已经看到的k近邻算法。

1.2.3 回归和分类模型

回归(regression)和分类(classification)模型的差别和我们要预测的输出类型有关,并且通常会关联到有监督学习。回归模型会预测一个数量或量化的值,例如证券市场指数、降雨量或某项目的成本。分类模型则会从一个有限的(然而可能还是会很大)类别或分类的集合中预测其中一个值。分类的示例包括预测某个网站的主题、某用户会输入的下一个单词、某人的性别,或根据一系列症状判断某病人是否患有某种疾病。我们要在本书中学习的大部分模型都刚好属于这两种类型之一,虽然有一些模型可以用于解决这两类问题,比如神经网络。这里要重点强调的是,这种区分只是针对输出的,而不是针对用来预测输出的特征值本身是定量还是定性。总体而言,在回归和分类等模型中使用的特征,既可以编码为定性的,也能编码为定量的特征形式。之前,当我们构建kNN模型来根据鸢尾花样本测量值预测鸢尾花品种的时候,就是在解决一个分类的问题,因为我们的品种输出变量只能从3个不同的标签中选取1个。kNN方法也可以被用到回归环境里;在这种情况下,模型可以通过取均值或中位数,把被选中的最近邻的输出变量的数量值进行合并,从而产生其最终预测结果。因此,kNN也是一种可以用于回归和分类两种环境的模型。

1.2.4 实时和批处理机器学习模型

预测模型可以利用实时机器学习(real-time machine learning),也可能涉及批处理学习(batch learning)。实时机器学习这个术语可以参考两种不同的场景,虽然它的思路明显不是指实时机器学习必须实时(也就是说,在一个预先设定的、通常比较小的时间范围内)作出预测。例如,一个神经网络模型在完成训练后,只需要少量的计算(取决于输入和网络层的数量)就能产生输出的预测。不过,这并不是我们所讨论的实时机器学习的含义。

运用实时机器学习的模型的一个范例是天气预报,它会利用从各种气象设备获取其读数的数据流。在这里,模型的实时性是指这样的事实:我们为了进行天气预报,只选取在最近的时间窗口里获取的一批读数。时间回溯得越远,读数的相关度就越低,因此我们可以选取最近的信息来进行预报。当然,要在实时环境下使用的模型也必须能快速计算出它们的预测结果—如果系统需要几个小时根据早晨的测量值计算晚上的预测结果那这就没多大用处,因为等到计算完成的时候,预测结果已经没什么价值了。

说到利用最近一段时间范围内获取的信息来进行预测的模型,通常指那些已经用一些能代表所有将来要预测的数据的典型数据进行了训练的模型。如果描述的是能探测目标过程的性质以某种方式变化的模型,会产生对实时机器学习的第二种诠释。在本书中讨论到时间序列模型时,我们会把重点放在第一种情况的示例上。