线性回归
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
创建线性回归模型
模块概述
本文介绍如何使用机器学习 Studio 中的 "线性回归" 模块 (经典) ,以创建可在实验中使用的线性回归模型。 线性回归尝试在一个或多个自变量与数字结果或因变量之间建立线性关系。
使用此模块可以定义线性回归方法,然后使用带标签的数据集训练模型。 然后,可以使用训练后的模型进行预测。 另外,还可以将未训练的模型传递给 交叉验证模型 ,以便对标记的数据集进行交叉验证。
有关线性回归的详细信息
线性回归是一种常用的统计方法,它已在机器学习中得到运用,并已通过许多用于拟合线条和度量错误的新方法得到增强。 从最基本的意义上讲,回归是指数字目标的预测。 当你需要一个非常简单的模型来实现基本预测任务时,线性回归仍是一个不错的选择。 此外,线性回归往往能够很好地处理缺少复杂性的高维稀疏数据集。
机器学习 Studio (经典) 除了线性回归以外,还支持多种回归模型。 不过,术语 "回归" 可进行松散解释,而在其他工具中提供的一些回归类型在 Studio (经典) 中不受支持。
典型的回归问题涉及到一个自变量和一个因变量。 这称为“简单回归”。 此模块支持简单回归。
“多重线性回归”涉及到影响单个因变量的两个或更多个自变量。 使用多个输入来预测单个数字结果的问题也称为“多变量线性回归”。
" 线性回归 " 模块可以解决这些问题,因为 Studio 中的大多数其他回归模块 (经典) 。
“多标签回归”是在单个模型中预测多个因变量的任务。 例如,在多标签逻辑回归中,可将一个样本分配到多个不同的标签。 (不同于在单个类变量中预测多个级别的任务。)
机器学习不支持这种类型的回归。 若要预测多个变量,请为要预测的每个输出单独创建一个学习器。
多年来,统计学家一直在开发更先进的回归方法。 对于线性回归也是如此。 此模块支持通过以下两种方法来度量错误和拟合回归线:普通最小二乘法和梯度下降。
“梯度下降”法尽量将模型训练过程的每个步骤中的错误量减到最少。 梯度下降法存在许多变数,本行业已广泛研究了此方法针对各种学习问题的优化措施。 如果选择此选项作为解决方法,可以设置各种参数来控制步骤大小、学习速率等。 此选项还支持使用集成式参数扫描。
“普通最小二乘法”是线性回归中最常用的方法之一。 例如,Microsoft Excel 的分析工具库中就使用了最小二乘法。
普通最小二乘法是指损失函数,该函数将误差计算为实际值与预测线之间差值的平方和,通过最小化平方误差来拟合模型。 此方法假设输入与因变量之间存在较强的线性关系。
如何配置线性回归
此模块支持使用两种方法来为回归模型提供不同的选项:
-
对于更复杂的模型,或者在给定变量数的前提下具有极少训练数据的模型,梯度下降是更好的损失函数。
如果使用 优化模型超参数 对模型进行定型以便自动优化模型参数,则此选项还支持参数扫描。
-
对于小型数据集,最好选择普通最小二乘法。 这会为 Excel 提供非常类似的结果。
使用普通最小二乘法创建回归模型
将 线性回归模型 模块添加到 Studio 中的试验 (经典) 。
可以在“机器学习”类别中找到此模块。 展开 " 初始化模型",展开 " 回归",然后将 " 线性回归模型 " 模块拖到试验中。
在“属性”窗格中的“解决方法”下拉列表内,选择“普通最小二乘法”。 此选项指定用于查找回归线的计算方法。
在“L2 正则化权重”中,键入用作 L2 正则化权重的值。 建议使用非零值以避免过度拟合。
若要详细了解正则化如何影响模型拟合,请参阅以下文章:机器学习的 L1 和 L2 正则化
若要查看截距的项,请选择选项“包括截获项”。
如果不需要查看回归公式,请取消选择此选项。
对于“随机数种子”,可以选择性地键入一个值以设定模型所用随机数生成器的种子。
在以下情况下使用种子值很有用:你希望在每次运行相同的试验时保持相同的结果。 否则,默认会使用系统时钟中的值。
如果希望缺少值导致错误,请取消选择选项 " 允许未知的分类级别"。
如果选择此选项,则将为每个分类列创建一个附加级别。 测试数据集中未出现在定型数据集中的任何级别将映射到此附加级别。
将 训练模型 模块添加到实验,并连接标记的数据集。
运行试验。
普通最小二乘法模型的结果
在训练完成后:
若要查看模型的参数,请右键单击训练器输出,并选择“可视化”。
若要做出预测,请将训练后的模型连同包含新值的数据集一起连接到评分模型模块。
若要对标记的数据集执行交叉验证,请将未经训练的模型连接到 交叉验证模型。
使用在线梯度下降创建回归模型
将 线性回归模型 模块添加到 Studio 中的试验 (经典) 。
可以在“机器学习”类别中找到此模块。 展开 " 初始化模型",展开 " 回归",然后将 " 线性回归模型 " 模块拖到试验
在“属性”窗格中的“解决方法”下拉列表内,选择“在线梯度下降”作为用于查找回归线的计算方法。
对于“创建训练器模式”,请指示是要使用一组预定义的参数来训练模型,还是要使用参数扫描来优化模型。
单个参数:如果你知道自己想要如何配置线性回归网络,可以提供一组特定的值作为参数。
参数范围:如果想要算法查找最佳参数,请将 " 创建训练人员模式 " 选项设置为 " 参数范围"。 然后,你可以为该算法指定多个值来尝试。
对于“学习速率”,请指定随机梯度下降优化器的初始学习速率。
对于“训练时期数”,请键入一个值,指示算法迭代示例的次数。 对于包含少量示例的数据集,此数字应足够大,以实现收敛。
规范化特征:如果已规范化用于训练模型的数字数据,则可以取消选择此选项。 默认情况下,该模块将所有数字输入规范化为 0 到 1 的范围。
注意
请记得对用于评分的新数据应用相同的规范化方法。
在“L2 正则化权重”中,键入用作 L2 正则化权重的值。 建议使用非零值以避免过度拟合。
若要详细了解正则化如何影响模型拟合,请参阅以下文章:机器学习的 L1 和 L2 正则化
选择选项 " 平均最终假设" 以计算最终假设的平均值。
在回归模型中,假设测试意味着使用某些统计信息来计算 null 假设的概率,这表明依赖变量和独立变量之间没有线性关联。 在许多回归问题中,必须测试涉及多个变量的假设。
默认情况下,此选项处于启用状态,这意味着算法将测试涉及两个或多个参数的参数的组合。
如果希望学习速率随着迭代的不断进行而降低,请选择选项“降低学习速率”。
对于“随机数种子”,可以选择性地键入一个值以设定模型所用随机数生成器的种子。 在以下情况下使用种子值很有用:你希望在每次运行相同的试验时保持相同的结果。
如果希望缺少值导致错误,请取消选择选项 " 允许未知的分类级别"。
如果选择此选项,则将为每个分类列创建一个附加级别。 在定型数据集中不存在的测试数据集中的任何级别将映射到此附加级别。
添加标记的数据集和 定型模块之一。
如果未使用参数扫描,请使用训练模型模块。
若要让算法查找最佳参数,请使用 优化模型超参数来训练模型。
注意
如果使用 Single 参数 选项配置具有特定值的模型,然后切换到 " 参数范围 " 选项,则该模型将使用每个参数范围中的最小值进行定型。
相反,如果您在创建模型时配置了特定设置,但又选择 " 参数范围 " 选项,则该模型将使用学习器的默认值作为要扫描的值范围。
运行试验。
在线梯度下降的结果
训练完成后:
示例
有关回归模型的示例,请参阅 Azure AI 库中的以下示例试验:
比较回归量:对比几种不同类型的回归模型。
交叉验证回归:使用普通最小二乘法演示线性回归。
Twitter 情绪分析:使用几种不同的回归模型来生成预测的等级。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
使用提示
许多工具都支持创建线性回归,无论是简单的还是复杂的,都能创建。 例如,您可以使用 "规划求解工具库" 在 Excel 中轻松执行线性回归,或者可以使用 R、Python 或 c # 编写自己的回归算法。
但是,由于线性回归是一种由许多不同的工具支持的良好构建的技术,因此有很多不同的解释和实现方式。 所有工具都不支持所有类型的模型。 在不同的命名法中也有一些不同之处。
回归方法通常按响应变量的数目进行分类。 例如,多个线性回归是指要预测多个变量的模型。
在 Matlab 中,多元回归是指具有多个响应变量的模型。
在机器学习中,回归模型支持单个响应变量。
在 R 语言中,为线性回归提供的功能取决于所使用的程序包。 例如, glm 包使你能够创建具有多个独立变量的逻辑回归模型。 通常,机器学习 Studio (经典) 提供与 R glm包相同的功能。
建议将此模块用于典型回归问题的 线性回归。
相反,如果使用多个变量来预测某个类值,我们建议使用 双类逻辑回归 或 多类逻辑回归 模块。
如果你想要使用可用于 R 语言的其他线性回归包,则建议你使用 "执行 r 脚本" 模块并调用lm或glm包,这些包包含在机器学习 Studio (经典) 的运行时环境中。
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
规范化特征 | any | 布尔 | 是 | 指示是否应规范化实例 |
平均最终假设 | any | 布尔 | 是 | 指示是否应计算最终假设的平均值 |
学习速率 | >=double.Epsilon | Float | 0.1 | 指定随机梯度下降优化器的初始学习速率 |
训练循环数 | >=0 | Integer | 10 | 指定算法应循环访问示例的次数。 对于包含少量示例的数据集,此数字应足够大,以实现收敛。 |
降低学习速率 | 任意 | 布尔 | 是 | 指示学习速率是否应该随着迭代的进行而降低 |
L2 正则化权重 | >= 0。0 | Float | 0.001 | 指定 L2 正则化的权重。 使用非零值以避免过度拟合。 |
随机数种子 | any | Integer | 指定一个值以设置模型使用的随机数生成器种子。 保留空白表示使用默认值。 | |
允许未知的分类级别 | any | 布尔 | 是 | 指示是否应为每个分类列创建附加的级别。 测试数据集中不可用于训练数据集的任何级别将映射到此附加级别。 |
包括截距项 | 任意 | 布尔 | True | 指示是否应为截距额外添加一个项 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
未训练的模型 | ILearner 接口 | 未训练的回归模型 |