机器学习构成三要素之任务

任务:可通过机器学习解决的问题

Posted by Xiaosheng on February 20, 2017

本文为 Peter Flach 所著《机器学习》的读书笔记,内容基本摘自原书,部分内容有修改。

机器学习可以概括为“使用正确的特征来构建正确的模型,以完成既定的任务”。

特征(feature)是一种对问题域中相关对象的描述,一旦获得对问题域中对象的某种恰当的特征表示,我们便不必再去关注这些对象本身。任务(task)是对我们所期望解决的、与问题域对象有关问题的一种抽象表示(例如两类或多类分类问题)。许多任务都可以抽象为一个从数据点到输出的映射,我们将这种映射称为模型(model),而这种映射或模型本身又是应用于训练数据的某个机器学习算法的输出。

1 任务种类

我们以大家比较熟悉的垃圾邮件过滤说起,垃圾邮件识别本质上是一个二元分类两类分类(binary classification)任务,因为其中涉及将不同对象(电子邮件)划分为两个不同的类别——垃圾邮件或者普通邮件。实际应用中,我们经常会遇到两类分类问题的变体——多类分类(multi-class classification)问题。例如,我们可能希望邮件分类系统能够自动区分垃圾邮件、工作邮件和私人邮件,解决该问题的一种思路是将该任务分解为两个级联的两类分类子任务:第一个子任务区分垃圾邮件和普通邮件,第二个子任务则是在“普通邮件”的集合中进一步区分工作邮件和私人邮件。但是按照这种方式,可能会丢失一些潜在的、有价值的信息。例如,一些垃圾邮件与私人邮件极为相似,但是与工作邮件有着较为显著的区别,所以将多类分类问题视为一种独立的机器学习任务往往可以带来诸多益处。

有时,我们对于问题域对象并不是要预测一些离散的类别,而是要预测出具体的值(例如对新收到的邮件的紧急程度进行评估),这样的任务称为回归(regression),其本质是依据标注有函数输出真值的训练样本集来学习一个实值函数。

分类和回归的共同假设是可以获得由带有类别真值或函数真值标注的样本所构成的训练集,但为数据集提供真值标注通常费时费力。还有一类任务,不借助带有标注信息的训练集直接进行分类,即对数据进行分组,但不利用与“组”有关的任何先验信息,这类任务称为聚类(clustering)。典型的聚类算法首先计算不同实例(即聚类的对象,如电子邮件)之间的相似性,然后将那些“相似”的实例放入同一个簇(cluster)中。

2 任务分类

从有标注的数据中学习称为有监督学习(supervised learning),从无标注的数据中学习称为无监督学习(unsupervised learning),二者的不同之处在于有监督学习必须借助带有标注信息的训练数据。类似地,还可以按模型的输出是否含有目标变量来划分模型:如果有,则称为预测性模型(predicative model);否则称其为描述性模型(descriptive model)。按照这种划分原则,机器学习问题可以用下表来概括:

  预测性模型 描述性模型
有监督学习 分类、回归 子群发现
无监督学习 预测性聚类 描述性聚类、关联规则发现
  • 最常见的设置是预测性模型的有监督学习。实际上,当人们提到有监督学习时,通常指的都是该类问题。该设置下的典型任务包括分类和回归。
  • 有时我们也会用带标注的训练数据来构建描述性模型,它并不以预测目标变量为主要目的,而是为识别其行为与目标变量存在较大差异的数据子集。这种描述性模型的有监督学习任务称为子群发现(subgroup discovery)
  • 用无监督学习的方式,可以十分自然地学习到描述性模型。通常人们在提到无监督学习时,指的就是这种设置。
  • 有时我们对数据进行聚类的目的是用聚类结果为新数据赋予相应的类别标签,这正是预测性模型无监督学习的一个典型示例。我们称之为预测性聚类(predicative clustering),以区别于描述性(descriptive)聚类

除了上面的四种设置外,还有一种模型值得一提,即预测性模型的半监督学习(semi-supervised learning)。在许多问题域中,数据虽易于获取,但要得到有标注的数据则代价不菲,这是就可以使用半监督学习。一种可行的方案是首先依据少量带标注的训练样本来构造一个初始模型,然后利用无标注的数据对模型进行优化。例如,我们可用初始模型来对无标注的数据进行预测,再将那些预测结果置信度最高的样本作为新的训练数据来扩充之前的训练集,然后利用这个新的训练集对模型重新进行训练。

3 性能评价

无论面对何种机器学习任务,都应铭记如下重要事实——这些任务并无“标准”答案。在很多情形下,数据中都携带者“噪声”,例如样本可能被赋予了错误标注信息,或特征本身就含有错误。在这种情况下,如果过于寻求能够将训练数据正确分类的模型,将导致模型过拟合(overfitting),从而无法在新数据上推广运用。在某些情况下,用于描述数据的特征仅说明了其可能归属的类别,并不包含能完美预测其类别的“信号”。出于各种各样的原因,机器学习研究者对于学习算法的性能评价通常都非常重视。

背景:归纳问题与 no free lunch 定理

早在机器学习出现之前,哲学家便已认识到对一些特例进行推广以获得一般性的规则是一个不存在明确定义的解(well-defined solution)的非适定问题。这种通过推广(或泛化)来进行推理的方法被称为归纳(induction)。与之对立的概念为演绎(deduction),它是一种适用于具有明确定义的正确解的问题的推理方法。归纳问题(problem of induction)存在多种版本,18 世纪苏格兰哲学家 David Hume 给出了这样一个版本,他认为证明归纳推理合理性的过程本身——既然它对于某些归纳问题有效,因此有望对所有归纳问题均有效——也是一种归纳推理。这不仅意味着归纳的合理性无法用演绎的方式来证明,还表明证明的过程本身即为一种循环论证,显然这是一种比较严重的缺陷。

no free lunch 定理为:不存在能够在所有可能的分类问题中性能均为最优的算法。在现实世界中,学习问题的分布也是高度非均匀的。因此,逃离 no free lunch 定理魔咒的方法是尽可能深入地了解所面对问题的分布,并利用这种先验知识来帮助我们选择适宜的学习算法。

假定要评价新训练的垃圾邮件过滤系统的表现,最容易想到的是统计正确分类的邮件数目并除以邮件总数,从而得到一个比值——通常称为分类器的准确率(accuracy),但它不能表明是否出现了过拟合现象。一种更好的思路是抽取 90% (打个比方)的数据用于训练,将其余 10% 的数据作为测试集(test set),如果出现了过拟合,则系统在测试集上的性能一定显著低于其在训练集上的性能。然而我们即便从数据中随机选择测试实例,也很难摆脱“运气”的影响——运气好时,多数测试实例与训练实例十分相似;不走运时,测试实例可能恰好不那么典型,甚至可能含有很多噪声。

在实践中,人们通常会选择一个称为交叉验证(cross validation)的过程不断重复训练集和测试集的划分。交叉验证的步骤如下(以 10 份交叉验证为例):首先将数据随机均分为 10 份,然后每次选用其中 9 份来训练,而用剩余的 1 份来做测试,并重复 10 次,以保证每份数据均作为测试集经过测试。最后对模型的测试集(共 10 个)性能取平均值(通常也会计算标准差,可以用于判定不同学习算法平均性能之间的微小差异是否有意义)。交叉验证也可用于其他有监督学习问题,但无监督学习问题则要采用另外一套评价方法。

相关文章

  1. 《机器学习构成三要素之任务》
  2. 《机器学习构成三要素之模型》
  3. 《机器学习构成三要素之特征》