我们已经明确,机器学习系统从数据中学习,特别是从数据中的特征(输入)以及有时是标签(输出)中学习。但这种学习过程的成果究竟是什么?这个成果就是我们所说的模型。可以把机器学习模型看作是对训练数据中发现的规律的一种特定表现。它是通过在数据集上运行机器学习算法而生成的产物。其目的是让这个模型能够掌握输入特征和(如果适用)输出标签之间的潜在联系,从而对新的、未见过的数据做出有用的预测或判断。模型有什么作用?核心来说,模型接收你不知道结果的新输入数据(特征),并生成一个输出,通常是预测或判断。对于回归任务(预测连续值,例如房屋价格),模型可能会输出一个数字。例如,给定房屋的面积、卧室数量和位置(特征),模型会预测其价格(输出)。对于分类任务(预测离散类别,例如垃圾邮件识别),模型可能会输出一个类别标签。给定电子邮件的发件人、主题行和内容(特征),模型会预测它是“垃圾邮件”还是“非垃圾邮件”(输出)。对于聚类任务(将相似数据点分组),模型实际上是数据中发现的群组的定义。给定客户的购买历史(特征),模型可能会将他们分配到特定的客户细分(输出群组)。考虑一个简单的例子:想象你正在努力弄清你的学习时间 ($x$) 和你在考试中获得的分数 ($y$) 之间的关系。你从几次考试中收集数据(你的训练数据)。机器学习算法是你分析这些数据所用的方法(也许是绘制点并画一条线)。模型是你最终画出的那条具体直线,也许用 $y = 5x + 40$ 这样的方程来表示。这个方程(模型)体现了你观察到的规律,现在可以用来根据新的学习时间 ($x$) 预测你的分数 ($y$)。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [color="#adb5bd"]; TrainingData [label="训练数据\n(特征, 标签)", color="#1c7ed6", fontcolor="#1c7ed6"]; Algorithm [label="学习算法\n(例如, 线性回归)", color="#ae3ec9", fontcolor="#ae3ec9"]; Model [label="训练好的模型\n(学到的规律 / 函数)", shape=ellipse, color="#0ca678", fontcolor="#0ca678"]; NewData [label="新输入数据\n(仅特征)", color="#1c7ed6", fontcolor="#1c7ed6"]; Prediction [label="预测 / 判断\n(输出)", color="#f76707", fontcolor="#f76707"]; TrainingData -> Algorithm [label=" 由...使用 "]; Algorithm -> Model [label=" 生成 "]; NewData -> Model [label=" 输入给 "]; Model -> Prediction [label=" 做出 "]; }学习算法处理训练数据以生成训练好的模型。该模型随后可以对新输入数据进行预测。模型是学习而来,而非明确编程这是与上一章中强调的传统编程的一个根本区别。我们不再编写明确的规则(例如 如果电子邮件包含“免费钱”则标记为垃圾邮件),而是提供数据,让算法学习构成模型的规则或规律。这些规律的复杂程度可以从我们学习示例中的简单线性方程,到能够识别图像或翻译语言的非常复杂的结构。模型与算法区分算法和模型会很有帮助:算法: 从数据中学习所用的程序或规则集合。例子包括线性回归、K近邻或K均值(我们将在后面讨论)。它是学习的“食谱”。模型: 将学习算法应用于特定数据集后得到的具体输出或成果。它是学习到的表现形式,就像使用线性回归算法从学习数据中推导出的方程 $y = 5x + 40$。它是用“食谱”烘焙出的“蛋糕”。你在数据上使用算法来训练模型。这个训练好的模型随后会被保存,并用于未来的预测。在接下来的章节中,我们会更详细地了解模型如何通过调整其内部设置(称为参数)来实际学习,以及我们如何使用超参数配置学习过程。