你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通过自动化 ML 防止过度拟合和不均衡数据
在生成机器学习模型时,过度拟合和不均衡数据是常见的错误。 默认情况下,Azure 机器学习中的自动化 ML 功能提供图表和指标来帮助识别这些风险。 本文介绍如何在自动化 ML 中实现最佳做法,帮助解决常见问题。
识别过度拟合
如果模型过于适合训练数据,则将发生机器学习中的过度拟合。 这会导致模型无法对没见过的测试数据进行准确的预测。 模型记住了训练数据中的特定模式和噪音,且不够灵活,无法预测实时数据。
请考虑以下经过训练的模型及其相应的训练和测试准确度:
模型 | 训练准确度 | 测试准确度 |
---|---|---|
A | 99.9% | 95% |
B | 87% | 87% |
C | 99.9% | 45% |
模型 A:此模型的测试生成的准确度略低于模型训练。 存在一种常见的误解:对于没见过的数据,如果测试准确度低于训练准确度,则该模型过度拟合。 但是,测试准确度应始终低于训练准确度。 过度拟合与拟合适当的数据之间的区别在于测量准确度的减少程度。
模型 A 对比模型 B:模型 A 更好,因为它的测试准确度更高。 虽然测试准确度 (95%) 略低,但这一误差并不显著,不能说明存在过度拟合。 模型 B 不是首选项,因为训练和测试的准确度相似。
模型 C:此模型明显表示存在过度拟合。 训练准确度很高,测试准确度较低。 这种分辨方式虽然较主观,但却是从对问题和数据的了解以及可接受的误差大小中得出的。
防止过度拟合
在大多数严重情况下,过度拟合的模型将假定在训练过程中出现的特征值组合始终生成与目标完全相同的输出。 为了避免过度拟合数据,建议遵循机器学习最佳做法。 可以在模型实现中配置几种方法。 默认情况下,自动化 ML 还提供其他选项来帮助防止过度拟合。
下表总结了常见最佳做法:
最佳做法 | 实现 | 自动化机器学习 |
---|---|---|
使用更多训练数据并消除统计偏差 | X | |
防止目标泄漏 | X | |
合并更少的特征 | X | |
支持正则化和超参数优化 | X | |
应用模型复杂性限制 | X | |
使用交叉验证 | X |
应用最佳做法以防止过度拟合
以下部分介绍可在机器学习模型实现中使用的防止过度拟合最佳做法。
使用更多数据
使用更多数据是防止过度拟合的最简单且最可行的方法,而且通常还能提高准确度。 使用更多数据时,模型更难记住确切的模式。 这能迫使模型给出更灵活的解决方案,以适应更多条件。 识别统计偏差也很重要,确保你的定型数据不包含实时预测数据中不存在的独立模式。 这种情况可能很难解决,因为与实时测试数据相比,可能存在过度拟合的情况。
防止目标泄漏
目标泄露是一个类似的问题。 在训练集和测试集之间可能没有出现过度拟合,但泄露问题会出现在预测时。 当你的模型在训练期间“作弊”,访问在预测时不应有的数据时,就会发生目标泄露。 例如,模型在星期一预测商品在星期五的价格。 如果特征意外包含来自星期四的数据,则模型能够访问预测时不可用的数据,因为它看不到未来。 目标泄露是一个容易忽略的错误。 通常在问题的准确度异常高的情况下能看到发生此错误。 如果你正在尝试预测股票价格,并且定型模型的准确度为 95%,则功能中可能存在目标泄漏。
合并更少的特征
删除特征也有助于避免过度拟合问题:防止在模型中包含过多的字段用于记住特定的模式,从而使其更灵活。 量化衡量可能很困难。 如果可以移除特征并保留相同的准确度,则模型可能更加灵活,并降低过度拟合的风险。
查看自动化 ML 功能以防止过度拟合
以下部分介绍自动化 ML 中默认提供的最佳做法,以帮助防止过度拟合。
支持正则化和超参数优化
正则化是最大程度地减小代价函数来惩罚复杂的过度拟合模型的过程。 正则化函数有很多不同类型。 通常,所有函数都会惩罚模型系数大小、方差和复杂性。 自动化 ML 结合用于控制过度拟合的不同模型超参数设置,使用 L1 (Lasso)、L2 (Ridge) 和 ElasticNet(同时包括 L1 和 L2)的不同组合。 自动化 ML 会改变模型的管控程度,并选择最佳结果。
应用模型复杂性限制
自动化 ML 还实施明确的模型复杂性限制来防止过度拟合。 在大多数情况下,此实现专门用于决策树或林算法。 单个树的最大深度有限,林或集成技术中使用的树总数有限。
使用交叉验证
交叉验证 (CV) 是提取整个训练数据的多个子集,并针对每个子集训练模型的过程。 其思路是,针对某个子集时,模型可能会“幸运地”具有高准确度,但在使用多个子集时,模型无法每次都实现高准确度。 当执行 CV 时,你需要提供一个验证维持数据集并指定你的 CV 折叠数(子集数),自动化 ML 将训练你的模型并调整超参数以最大程度地减少验证集上的错误。 可能有一个 CV 折过度拟合,但如果使用许多折,该过程可以减少最终模型过度拟合的可能性。 缺点是 CV 会导致训练时间变长,从而导致成本增加,因为你针对 CV 子集中的每个 n 对某个模型训练一次。
注意
默认情况下不启用交叉验证。 必须在自动化机器学习设置中配置此功能。 但是,在配置交叉验证并提供验证数据集后,此过程将自动执行。
标识具有不均衡数据的模型
不均衡数据通常存在于机器学习分类场景的数据中,它是指在每个类中包含比例不相称的观察值的数据。 这种不平衡可能会对模型准确度造成错误的认知效应,因为输入数据与一个类存在偏差,从而导致训练的模型模拟该偏差。
此外,自动化 ML 作业会自动生成以下图表。 这些图表有助于了解模型分类的正确性,并识别可能会受到不均衡数据影响的模型。
图表 | 说明 |
---|---|
混淆矩阵 | 根据数据的实际标签评估正确分类的标签。 |
精准率-召回率 | 针对找到的数据标签实例的比率,评估正确标签的比率。 |
ROC 曲线 | 根据误报标签比评估正确的标签比。 |
处理不平衡的数据
作为简化机器学习工作流的目标的一部分,自动化 ML 具有内置功能,可帮助处理不均衡数据:
自动化 ML 将创建权重列作为输入,以便能够增大或减小数据中的行的权重,这可用于使某个类的“重要性”更大或更小。
当少数类的样本数等于或小于多数类的样本数的 20% 时,自动化 ML 所使用的算法会检测到不平衡。 少数类是指样本最少的类,多数类是指样本最多的类。 然后,自动化机器学习会使用子采样的数据运行试验,以检查使用类权重是否可以纠正此问题并提高性能。 如果通过此试验确定性能得到提高,则采用此补救措施。
使用性能指标来更好地处理不平衡的数据。 例如,AUC_weighted 是一项主要指标,它基于表示每个类的样本的相对数量计算该类的贡献。 此指标在存在不平衡时更可靠。
除自动化 ML 之外,下面提供了一些可用于处理不平衡数据的其他方法:
重新采样,使类的不平衡变为平衡。 可以上采样较小的类或下采样更大的类。 这些方法需要具备处理和分析方面的专业知识。
查看不平衡数据的性能指标。 例如,F1 分数是查准率和查全率的调和平均值。 精度测量分类器的精确性,精度更高表示误报更少。 召回率测量分类器的完整性,召回率更高表示误报更少。