在机器学习领域,模型训练的核心目标是提升模型的泛化能力、可靠性、鲁棒性,并尽量减少偏差。所有模型算法都依赖于尽可能接近真实情况的预测,因此误差分析和相应的行动在实现这一目标中扮演着关键角色。
机器学习模型主要基于单一或聚合指标(如准确率、精确度、召回率)进行测试和开发,这些指标覆盖了模型在整个数据集上的表现。虽然这有助于调整整体模型性能,但并不能深入到错误细节中,以帮助更好地解决训练/测试集错误。深入审查错误案例可以帮助系统地提出改进模型性能的想法和建议,尽可能接近真实情况。此外,误差分析还有助于创建负责任的机器学习模型,通过识别模型是否在某些受保护的变量/类别上表现得更错误。
误差分析是隔离、观察和诊断机器学习错误预测的过程,帮助理解模型在不同数据子组中的高低性能。当提到“模型准确率为90%”时,这可能并不是在所有数据子组中均匀分布的,可能存在一些输入条件,模型在这些条件下更容易失败。因此,它是从聚合指标到更深入审查模型错误的下一步。
例如,一个狗检测图像识别模型可能在户外环境中表现更好,但在低光照的室内环境中表现不佳。这可能是由于数据集的偏差,误差分析有助于识别这些情况是否影响模型性能。下图提供了从聚合到按组划分错误,以获得更好的模型性能视图。
这有助于了解错误是如何在关键假设或关键特征/类别/队列的数据集中分布的。例如,在银行使用的贷款批准模型中,可能发现模型在年轻且月平均余额较低的个体上出现更多错误。
如何手动进行(尤其是在数据是图像、语音或文本,没有明显特征的情况下):
# 示例代码:创建混淆矩阵
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 2, 2, 0]
y_pred = [0, 1, 1, 0, 0]
cm = confusion_matrix(y_true, y_pred)
print(cm)
通过混淆矩阵,可以看到模型在不同类别上的表现,但并不能帮助理解哪些被错误分类,因此需要隔离错误分类的图像,并创建一些关于这些错误的假设/观察。
在快速审查所有示例后,发现以下情况在所有错误案例中都很常见:
对于所有错误用例的假设或共性观察,随后创建一个Excel表格或类似工具,以映射错误的确切分布。对于猫分类示例,它看起来像下面这样(请注意,每个数据点/图像可能具有以下多个标签):
如果数据具有更明显的特征,如信用评级模型、产品推荐模型或客户流失模型,可以使用erroranalysis.ai
包快速识别并进一步诊断错误分布。可以创建热图和树图来显示导致错误的原因,以及有关错误细节的更多信息。
在识别和分析上述错误后,需要进入解决错误的下一步!让以语音识别为例,用上述表格填充额外的列,这些列是这些情况下错误发生的总体百分比,然后是错误影响的数据集的总体百分比。选择从影响最多案例的假设开始工作是有意义的(在Andrew Ng的视频中有进一步解释)。
在选择了领域后,可以尝试以下方法,基于可行性、所需工作量、在该领域改进的重要性以及在该领域可以实现的最大准确性: