
在机器学习的世界里,做出预测的能力至关重要。然而,并非所有的预测都是生而平等的。预测未来的股票价格与识别一封电子邮件是“垃圾邮件”还是“非垃圾邮件”是两种不同的挑战。这个根本性的差异将监督学习分成了两个最基本的分支:回归和分类。理解预测数量和分配类别之间的区别不仅仅是一项学术练习;它对于构建有效的模型、正确衡量其性能以及恰当地应用它们来解决现实世界的问题至关重要。本文将深入探讨这一区别的核心。第一章“原理与机制”将解析区分这两项任务的核心机制,从它们各自的目标和损失函数,到其底层学习算法中惊人的统一性。随后的“应用与跨学科联系”将展示这些理论概念如何转化为在从基础科学到金融工程等广泛领域中进行发现和创新的强大工具。
在我们理解机器学习的旅程中,我们已经看到其核心目的是做出预测。但预测有不同的类型。预测明天以摄氏度为单位的确切温度,与预测明天是否会下雨,是两种根本不同的任务。前者寻求一个连续尺度上的特定数字;后者则寻求从一个小的可能性集合——“雨”或“无雨”——中选择一个标签。这一关键区别将监督学习的世界分成了两大洲:回归(regression)和分类(classification)。
想象一下,你是一位材料科学家,正在为下一代太阳能电池寻找一种新的神奇材料。你有一个庞大的候选化合物库,并希望使用机器学习模型来指导你的实验。
你可以向你的模型提出两类问题。首先,你可能会问:“对于这个特定的化合物,它的带隙能量的精确值是多少?”带隙是一个连续的量,以电子伏特(eV)为单位,它决定了材料的电子特性。太阳能电池可能需要一种带隙在 eV 附近的材料。预测这个确切的数值就是一项回归任务。其目标是将一个化合物的特征(其化学式、晶体结构)映射到数轴上的一个点。
或者,你可以问一个更简单的问题:“这个化合物是金属、半导体还是绝缘体?”这些是由带隙范围定义的离散类别或分类。例如,任何带隙低于 eV 的物质都可能被视为“金属”。这项将预定义标签分配给对象的任务就是分类。
这种差异不仅仅是语义上的;它触及了模型构建目的的核心。回归模型生活在“多少”的世界,而分类模型则生活在“哪种”的世界。这一区别塑造了之后的一切:模型如何学习、如何被评估,甚至是它可能犯下的微小错误。
机器究竟是如何学习的?可以把它想象成一个为考试而练习的学生。学生尝试解一道题,核对答案,看看自己差了多少,然后调整思路。机器学习模型也做同样的事情,但它们的过程更加形式化。“差了多少”这部分由损失函数(loss function)来量化,它是一种误差或“不满意度”的数学表达式。训练的目标是调整模型的内部参数,以使在训练数据上的这个损失尽可能小。
任务的性质——回归或分类——要求不同类型的损失函数,即不同的衡量错误的方式。
对于回归,最常见的选择是均方误差(MSE)。如果模型预测的带隙是 eV,但真实值是 eV,那么误差就是 eV。平方误差是 。模型会因其猜测值与真实值之间距离的平方而受到惩罚。这对于预测数量来说非常直观,因为它会严厉惩罚大的误差。这个损失函数并非随意选择;它与数据中的误差或“噪声”服从钟形高斯分布的假设密切相关。在复杂的应用中,比如分析来自高通量生物测定的数据,我们甚至可能使用加权平方误差,给予我们知道更精确的测量值更大的权重,而给予那些噪声较大的测量值较小的权重。
对于分类,平方误差就不那么自然了。如果真实类别是“半导体”(我们标记为“1”),而模型预测为“金属”(标记为“0”),那么平方距离是多少呢?这些标签只是符号。因此,我们需要一个处理概率的损失函数。现代的分类模型不只是猜测一个标签;它会为所有可能的标签输出一组概率。例如,它可能会说:“我有80%的把握这是‘半导体’,15%的把握是‘绝缘体’,还有5%的把握是‘金属’。”
这里最常见的损失函数是交叉熵(cross-entropy),或称对数损失(log loss)。其背后的直觉是“意外程度”。如果模型说有99%的概率下雨,而天确实下雨了,那么意外程度就很低,损失也小。但如果模型说只有1%的概率下雨,结果却下起了倾盆大雨,那么模型就大错特错,其意外程度极高,损失也巨大。这个损失函数有效地衡量了模型概率性“赌注”的好坏,促使模型为正确的类别分配高概率。这一原理直接模拟了分类事件的统计特性,例如在流式细胞术实验中计算“击中”与“未击中”的细胞数量。
由于目标不同,损失函数也不同,回归和分类似乎是两个完全独立的学科。但在这里,我们发现了一个深刻而优美的统一时刻。机器学习中许多最强大的算法都构建在同一个优雅的引擎之上,唯一改变的只是我们注入其中的损失函数“燃料”。
思考一下被称为提升(boosting)的算法家族。其思想不是一次性构建一个高度准确的预测器,而是通过依次组合大量简单的“弱”预测器来构建。每一个新的弱预测器都被训练来修正集成模型到目前为止所犯的错误。
在回归中,这引出了一种名为Gradient Boosting的算法。在每一步,我们计算*残差*——即当前模型的预测值与真实值之间的原始误差()。下一个弱模型被训练来预测这些残差。从本质上讲,每个模型都在学习纠正前一个模型的错误。这正是将通用的提升方法与平方误差损失函数结合应用时得到的结果。
在分类中,同样的配方催生了著名的 AdaBoost 算法。当你代入一个对分类友好的损失函数,比如指数损失函数时,数学上的推导就不同了。算法不再是拟合残差,而是识别出当前模型错误分类或以低置信度(小“间隔”)分类的数据点。然后,它给这些“难”样本分配更高的权重,迫使下一个弱模型将注意力集中在它们身上。
这是一个惊人的洞见:两个著名且看似不同的算法,仅仅是同一个函数梯度下降基本原理的两种表现形式。核心引擎是相同的。唯一的区别在于“误差”的定义是根据手头的任务量身定制的——回归用的是平方距离,分类用的是错分成本。
我们已经确定,回归预测的是细粒度的数量,而分类预测的是粗粒度的标签。这暗示了一种层级关系。你总是可以将一个回归问题转化为分类问题。如果你能预测确切的温度,你当然可以通过设定一个阈值来说明天气是“热”还是“冷”。
但反过来可行吗?不尽然。这种转换是一条铺满信息损失的单行道。一个只能预测“热”的模型无法区分宜人的25°C和灼热的45°C。这些丢失的信息代表了一种不可避免的误差来源。一个直接为回归任务训练的模型,总是有潜力比一个在简化的、分箱的类别上训练的模型知道得更多。
这种预测谱系的思想甚至更深。在分类任务内部,一个只输出标签(“雨”)的模型和一个输出校准良好的概率(“75%的下雨概率”)的模型之间也存在差异。后者是一种更精细的预测。一个模型可能在排序方面表现出色——正确地识别出今天比明天更可能下雨——因此在衡量排序能力的指标(如ROC曲线下面积AUC)上得分很高。然而,同一个模型的概率估计可能大相径庭(例如,为一个实际只发生60%的事件预测了90%的概率)。这种现象被称为校准不准(miscalibration),它发生在我们使用一个简化的数学模型(如逻辑斯谛函数)来近似一个更复杂的现实(如概率单位函数)时,这可能会影响概率值,却不损害在50%阈值下的最终分类结果。这提醒我们总要问自己:我需要的是一个类别、一个排序,还是一个真实的概率?每一个都是独特的任务。
如果回归和分类的目标不同,那么我们衡量成功的标尺也必须不同。使用一个朴素的指标不仅可能没有帮助,甚至可能具有危险的误导性。
在回归中,一个常用的指标是决定系数,即 。它通常被解释为模型解释的方差百分比,值为 表示完美拟合。但多差的分数才算糟糕?不是零。得分为零意味着你的模型不比一个总是预测数据平均值的平凡模型更好。一个糟糕的模型完全有可能比那个平凡的基线更差,从而导致负的 !这严酷地提醒我们,一个模型可能会通过做出系统性地比猜测均值更差的预测而主动造成损害。
在分类中,最直观的指标是准确率(accuracy):预测正确的比例。但准确率可能是一个诱人的陷阱,尤其是在数据不平衡的情况下。想象一下,构建一个模型来检测一种罕见疾病,该疾病每1000人中有1人患病。一个总是预测“无病”的平凡模型将有99.9%的准确率,但它完全无用,因为它从未找出一个病例。这就是准确率悖论(accuracy paradox)。为了得到真实的情况,我们需要更细致的指标。召回率(Recall)衡量模型找到了多少真实的阳性案例。精确率(Precision)衡量模型的阳性预测中有多少是真正正确的。像平衡准确率(Balanced Accuracy)这样的指标,它平均了每个类别的性能,能迅速揭示那个平凡疾病检测器的失败,给它打出50%的分数(不比随机猜测好)。
将回归和分类联系在一起的最后一根线索是它们在概率语言中的共同基础。在最深层次上,这两项任务都是试图对条件概率分布 进行建模——即在给定某个输入 的情况下,结果为 的概率。
当我们考虑世界发生变化时会发生什么,这种共同的DNA就变得异常清晰。假设你在一个时期的数据上训练了一个模型,然后将其应用于未来一个整体条件已发生变化的时期。这被称为数据集偏移(dataset shift)。一种具体形式是标签偏移(label shift),即潜在关系保持不变,但结果的频率发生变化。例如,在金融衰退期间,“高风险”贷款(一个分类标签)的比例可能会增加,或者房价(一个回归目标)的平均值可能会下降。
一个在旧数据上训练的朴素模型会表现不佳。但有一个惊人优雅的解决方案,对回归和分类都适用。如果我们知道结果的分布是如何变化的,我们可以通过重要性加权(importance weighting)来拯救我们的模型。我们重新加权原始训练数据,使其看起来更像新的现实。在新世界中变得更常见的样本被赋予更高的重要性,而那些变得更罕见的样本则被降权。
深刻之处在于,这个通过概率比率对数据进行重新加权的强大单一原则,无论我们是预测离散类别还是连续数字,其作用方式都是相同的。它揭示了回归和分类是同一枚硬币的两面,是模拟世界概率性质这一普遍追求的两种应用。在这种统一性中,我们不仅找到了一个实用的工具,还发现了一种深刻而令人满足的美。
在上一章中,我们在沙地上画了一条看似简单的线:回归预测数字,分类分配标签。这是一个很好的开始,就像学习凿子用来削,锯子用来割一样。但对于一位大师级工匠来说,它们不仅仅是工具,而是他们意志的延伸,用以将一块木头变成美丽或有用的东西。回归和分类也是如此。它们真正的力量不在于其定义,而在于它们如何成为科学家、工程师和思想家手中发现的工具。
现在,让我们踏上一段旅程,看看这些简单的思想如何在人类探究的广阔领域中绽放出深刻的应用。我们将看到,它们之间的界线常常变得模糊,而它们最伟大的胜利往往来自于协同使用,使我们能够对世界提出极其复杂的问题。
科学的核心是与自然的一场宏大对话。我们提出一个故事——一个假说——关于世界某个部分的运作方式。然后,我们收集数据并提问:“我的故事与事实相符吗?”回归和分类是我们进行这场质询所使用的主要语言。
想象你是一位材料物理学家,刚刚创造出一种新颖的半导体。你想要理解电流是如何在其中流动的。理论提供了几个相互竞争的故事。在一个故事中,电子是“能带状的”(band-like),像高速公路上的汽车一样自由流动。在另一个故事中,它们是“小极化子”(small polarons),像一个人在拥挤的房间里穿行一样从一个位置跳到另一个位置。第三个故事涉及“变程跳跃”(variable-range hopping),这是一种在无序景观中更复杂的跳跃。每个故事都预测了温度与材料电导率()和塞贝克系数()——一种由温差产生的电压的度量——之间不同的数学关系。
那么,你该怎么做?你不能只靠猜测。你把每个故事都变成一个回归模型。对于能带状的故事,你可以绘制电导率的对数与逆温()的关系图,并期望得到一条直线。对于变程跳跃的故事,你会将它与 作图并寻找线性关系。你对所有三个故事、对电导率和塞贝克系数都这样做。然后,你只需问:哪组图最直?最能“拉直”数据的故事就是自然告诉你的那个。最终的答案是一个分类问题——“是模型A、B还是C?”——但你是通过一场回归模型的大混战得出的结论,其中每个模型都代表一个不同的物理理论。
这种“通过回归竞赛进行分类”的精神在整个科学界回响。化学家可能会通过观察反应的表观活化能——一个通过回归求得的值——如何随压力变化来区分两种反应机理。一位发育生物学家,凝视着一个微小的胚胎,可能会提出一个困扰了动物界几个世纪的问题:它的口是由第一个开口(胚孔)形成的,还是次级形成的?这两条发育途径,区分了原口动物(如昆虫)和后口动物(如我们),预测了未来口的形成位置有不同的轨迹。一个故事预测了与胚孔的距离呈指数衰减,另一个则预测了更线性或稳定的路径。通过将衰减的回归模型和线性运动的回归模型都拟合到数据上,生物学家可以使用像 Akaike Information Criterion (AIC) 这样的统计标准来决定哪个故事更合理,从而将该生物体归入生命之树的某个伟大分支。在每种情况下,回归都是工具,但最终目标是对系统进行深刻的、分类上的理解。
当我们中的一些人用这些工具来破译宇宙的法则时,另一些人则用它们来构建宇宙。在这里,焦点从解释转向了预测和控制。
考虑一下股票市场的动荡不休或天气的日常节奏。对于这类时间序列数据,我们可以提出两种问题。“明天中午的温度会是多少?”是一个回归问题。“明天会比今天热吗?”则是一个分类问题。同样的基础数据流可以用于任一任务。有时,分类问题不仅更容易回答,而且也更有用。知道一个组件的温度将超过一个临界阈值(分类)可能比知道它的确切值(回归)更重要。
但我们可以比这更聪明。在金融世界,仅仅预测单只股票的价格是出了名的困难;在很大程度上,它是一个随机游走。但如果我们能找到两只倾向于同步波动的股票,就像两个被无形绳索拴在一起的舞者呢?虽然每个舞者的路径都不可预测,但他们之间的距离可能非常稳定。我们可以使用回归来找到完美的“对冲比率”——即两种股票的精确组合,使这个距离或“价差”尽可能稳定。这个价差只不过是回归的残差!我们设计了一种新的、人造的资产,其行为根据设计变得更具可预测性。
然后我们可以问:它的可预测性有多强?它是否倾向于回归到零?我们可以通过应用另一次回归来回答这个问题,这次是基于昨天的价差值来建模今天的价差值。第二次回归的斜率告诉我们价差均值回归的速度有多快。如果它回归得快,并且我们设计的价差的方差很小,我们可能就找到了一个统计套利的机会。这是一个更深层原理的优美例证:回归不仅用于被动预测;它还是一个主动建模和设计系统以使其具有理想属性的工具。
一个模型,无论是用于回归还是分类,其好坏取决于提供给它的信息。建模过程中一个关键且常被忽视的部分是选择如何向机器表征世界。世界并非自带一个方便的“特征”列表;我们必须构建它们。
让我们回到生物学。基因的启动子是一段DNA,其作用就像转录的“启动”按钮。它的活性——即它按动按钮的强度——由其A、C、G和T的序列决定。如果我们想从一个启动子的序列预测其活性,我们面临一个选择。我们应该要求一个连续的活性值(回归),还是简单地将其标记为“开启”或“关闭”(分类)?通常,连续值包含的信息远多于此,将其武断地分箱到类别中是对来之不易的实验数据的浪费。
但更深层的问题是,我们如何将DNA序列输入到模型中?我们不能只输入字母。答案在于将我们的生物学知识编码到特征中。我们知道,被称为“基序”(motifs)的短而特定的模式是蛋白质识别的东西。因此,我们可以使用像卷积神经网络(CNNs)这样旨在寻找局部模式的模型来扫描序列。我们还知道,一个基序的功能关键取决于其相对于基因起点的位置。位于-35位置的基序与位于-100位置的基序是不同的。这告诉我们,我们的模型不应该是位置不变的;我们必须构建一种方式,让它知道自己沿着DNA链的位置。这些选择——使用回归而非分类,以及内置局部性和位置依赖性的知识——被称为“归纳偏置”(inductive biases)。它们是我们为引导模型走向合理解决方案而做出的假设,也是在复杂的基因组学世界中构建真正有效模型的关键。
选择正确表征方式的想法甚至可以更深入。假设我们正在建模作物产量与肥料用量 的函数关系。我们的模型应该直接使用 ,还是应该使用 的对数 ?这不仅仅是一个技术细节。这是一个关于关系本质的深刻问题。使用 意味着每增加一公斤肥料都会产生一个加性效应。使用 意味着将肥料量加倍会产生一个一致的效果(一种乘性关系)。选择正确的变换,就是将我们模型的数学原理与我们正在研究的系统的逻辑相匹配,无论是在经济学、生物学还是物理学中。
也许所有应用中最迷人的是,当我们把这些强大的工具反过来用于它们自身时,即使用回归和分类来分析我们自己创建的算法。
想象一下,你在数值分析中设计了一种新算法来计算函数的二阶导数。基于 Taylor 展开的理论告诉你,你的方法的误差应该随着步长 按照一个幂律减少:。指数 是你方法的“阶数”——衡量其质量的一个指标。你如何通过实验来验证这一点?你可以用几个不同的步长运行你的算法并测量误差。然后,通过绘制误差的对数与步长的对数的关系图,你应该看到一条斜率恰好为 的直线。你可以使用线性回归从你的数值实验中估计这个斜率!最终的问题可能是一个分类问题:“我的方法的阶数是否至少为2?是或否”,但答案是通过使用回归作为一种经验验证工具找到的。
我们甚至可以将这种思维应用于机器学习本身。当我们训练像神经网络这样的复杂模型时,训练过程是在一个巨大、高维的“损失”景观中寻找最低点。事实证明,并非所有的谷底都是生而平等的。一些谷底极其尖锐和狭窄,而另一些则是宽阔、平坦的盆地。越来越多的证据表明,最终落入“平坦”最小值的模型往往能更好地泛化到新的、未见过的数据上。
那么,我们如何描述我们找到的某个最小值处的景观特征呢?景观的曲率由一个称为Hessian矩阵的数学对象来描述。该矩阵的特征值告诉我们山谷在每个方向上的陡峭程度。因此,我们可以构建一个新问题:我们可以对Hessian矩阵的关键属性(如其最大特征值)进行回归,以获得一个锐度的量化度量。并且我们可以根据该特征值是否超过某个阈值,将该最小值分类为“平坦”或“尖锐”。我们正在使用回归和分类对我们自己的学习过程进行基础科学研究,试图理解它们为什么有效以及如何使它们变得更好。
从原子的核心到生命的进化,从我们经济的逻辑到我们自己算法的逻辑,回归和分类不仅仅是技术。它们是定量推理的基本模式。它们为我们提供了一种语言,用以构建和检验我们关于宇宙的故事,预测和塑造其未来,并最终理解我们自己。