好的,我们来学习监督学习的第一种主要任务类型:回归。如果你回顾第一章,监督学习是指用我们已知“正确”答案的数据来训练模型。在回归任务中,这个正确答案是一个连续的数值。考虑预测数量、总量或大小。其目的不是将项目归类(例如“垃圾邮件”或“非垃圾邮件”),而是估计连续范围内的某个具体数值。什么样的问题是回归问题?当主要目标是预测一个连续输出变量时,一个机器学习任务就被认为是回归问题。这个输出变量通常被称为目标变量、因变量或标签。用于进行预测的输入被称为特征、自变量或预测因子。核心思想是学习输入特征与连续输出目标之间的映射或关系。我们使用一个包含样本的数据集,其中既有输入特征,也有已知且正确的输出值。机器学习算法研究这些样本以找出其内部规律,从而能够预测新的、未见过输入特征的输出。考虑这些回归应用的常见情境:预测房价: 假设给定房屋面积、卧室数量、房龄以及位置(可能以数值表示)等特征,目标是预测其美元售价。价格是一个连续的数值(例如250,000美元、250,150.75美元、310,500美元等)。估算网站流量: 基于广告支出、星期几、发送的推广邮件数量以及近期社交媒体活动等因素,公司可能希望预测其网站明天的访客数量。访客数量虽然技术上是离散的,但在这种情境下常被视为连续的,尤其当数量较大时。预测温度: 利用历史天气数据(过去温度、湿度、气压、风速),目标可能是预测下一天的最高温度。温度是在连续尺度上测量的(例如25.5°C,78.1°F)。预测农作物产量: 农民可能使用降雨量、生长季节的平均温度、土壤养分水平和施肥量等特征来预测农作物产量(例如每公顷吨数)。产量是一个连续的测量值。在所有这些情况下,我们希望预测的变量原则上可以在给定范围内取任何值。目标的可视化假设你有一些关于不同房屋大小与价格的关联数据。如果你绘制这些数据,可能会看到以下情况:{"layout": {"xaxis": {"title": "房屋大小(平方英尺)"}, "yaxis": {"title": "价格(千美元)"}, "title": "房价与大小示例"}, "data": [{"x": [800, 950, 1100, 1250, 1300, 1400, 1550, 1600, 1700, 1850, 1900, 2000, 2150, 2200, 2400], "y": [150, 180, 210, 245, 230, 270, 300, 290, 330, 350, 320, 380, 400, 390, 450], "mode": "markers", "type": "scatter", "marker": {"color": "#228be6"}}]}一个散点图,显示了房屋大小与价格的数据点。较大的房屋通常价格更高,但它不是一条完美的直线。在回归任务中,我们的目标是学习一个模型,它通常以直线或曲线的形式呈现,最能反映这种数据趋势。例如,我们可以尝试用一条直线拟合这些点:{"layout": {"xaxis": {"title": "房屋大小(平方英尺)"}, "yaxis": {"title": "价格(千美元)"}, "title": "回归目标:找出趋势"}, "data": [{"x": [800, 950, 1100, 1250, 1300, 1400, 1550, 1600, 1700, 1850, 1900, 2000, 2150, 2200, 2400], "y": [150, 180, 210, 245, 230, 270, 300, 290, 330, 350, 320, 380, 400, 390, 450], "mode": "markers", "type": "scatter", "name": "数据点", "marker": {"color": "#228be6"}}, {"x": [800, 2400], "y": [160, 440], "mode": "lines", "type": "scatter", "name": "学习到的趋势线", "line": {"color": "#f03e3e", "width": 3}}]}相同的散点图,添加了一条潜在的回归线。这条线代表了模型学习到的房屋大小与价格之间的关系。这条拟合线代表了模型对这种关系的理解。一旦我们有了这条线(或更复杂的模型),我们就可以用它来预测我们以前从未见过的新房屋大小的价格。例如,如果有人询问一栋1500平方英尺的房屋,我们可以在直线上找到对应的点来估计其价格。机器学习工作流程中的回归回归完全符合我们前面讨论过的监督学习框架:收集带标签数据: 收集包含输入特征($X$)及其对应的已知连续输出值($y$)的样本。对于房价来说,这将是一个包含房屋特征和实际售价的房屋列表。选择模型: 选择一个回归算法(例如线性回归,我们接下来会学习)。训练模型: 将带标签数据输入算法。算法调整其内部参数,以最小化其预测与训练数据中实际已知输出值之间的差异。这就是“学习”的部分。评估模型: 使用一组单独的数据(测试集)来查看训练好的模型对未训练数据的输出预测效果如何。我们使用特定的衡量标准(稍后讨论)来衡量预测准确性。使用模型: 部署训练好的模型,对新的、未见过且输出值未知的数据进行预测。形式上,我们正在学习一个函数,我们称之为 $f$,它以输入特征 $X$ 为输入,生成输出值 $\hat{y}$(读作“y-hat”),这是我们对真实值 $y$ 的预测。目标是使 $\hat{y}$ 平均而言尽可能接近 $y$。因此,我们寻求:$$ \hat{y} = f(X) $$使得 $\hat{y}$ 是真实 $y$ 的一个很好的近似值。主要观点是,回归处理连续范围内的数量预测。它回答的是“多少?”或“有多少?”这类问题,而不是“属于哪个类别?”。这使它与分类不同,分类是监督学习的另一种主要类型,侧重于分配离散标签。在接下来的部分中,我们将学习线性回归,这是一种解决这类预测问题的基本算法。