吴恩达机器学习一站式学习系列(9)——系统的设计 Machine Learning System Design

首先要做什么 Prioritizing What to Work On

以一个垃圾邮件分类器算法为例进行讨论。

如何选择并表达特征向量x:选择一个由100个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量(出现为1,不出现为0),尺寸为100×1。

为了构建这个分类器算法,我们可以做很多事,例如:

  1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
  2. 基于邮件的路由信息开发一系列复杂的特征
  3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
  4. 为探测刻意的拼写错误(把watch 写成w4tch)开发复杂的算法

误差分析Error Analysis

构建一个学习算法的推荐方法为:

  1. 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
  3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的样本,看看这些样本是否有某种系统化的趋势

学习曲线 vs 误差分析

方面学习曲线误差分析
定义展示训练集大小与模型性能之间的关系分析模型预测误差的类型、模式和来源
目标帮助判断欠拟合、过拟合情况,指导数据收集和模型选择帮助了解模型弱点,为改进提供方向,优化模型性能
绘图绘制训练集大小 vs. 性能指标曲线可以绘制误差分布图、误差累积分布图,特征与误差关系图等
关注点训练集大小对性能的影响,拟合情况分类错误、误差分布、特征与误差关系、数据分布与误差关系等
提示– 当训练集较小时,训练误差和验证误差之间的关系 – 当训练集足够大时,模型性能是否趋于稳定– 哪些类别容易被误分类 – 是否有误差模式或集中误差范围 – 是否有特定特征与高误差相关 – 模型在不同数据分布下的表现
应用– 选择适当的模型复杂度 – 判断是否需要更多数据– 改进模型,修复特定误差模式 – 优化数据处理流程 – 指导后续的数据收集和特征工程
示例随着训练集增加,训练误差逐渐下降,验证误差可能先下降后趋于稳定识别分类错误中哪些类别容易混淆,查看误差是否集中在某个范围,分析模型对不同特征的误差是否一致,检查模型在不同数据分布上的表现

误差分析

误差分析(Error Analysis)是指在机器学习和数据分析领域中,对模型预测结果与实际观测值之间的误差进行系统性的分析和理解的过程。通过对误差进行深入分析,可以帮助开发者和研究人员更好地理解模型的性能、识别模型的弱点,并指导后续改进和优化工作。

误差分析的主要目标是确定误差的来源、类型和模式。它可以包括以下几个方面的内容:

  1. 误差类型分类: 将误差分为不同的类型,如偏差误差(Bias Error)和方差误差(Variance Error)。偏差误差是由模型本身的复杂度不足或者选择的特征不恰当引起的,导致模型无法很好地拟合训练数据和测试数据;方差误差是由于模型过于复杂,对训练数据的微小变化过度敏感,从而导致在测试数据上表现不佳。
  2. 误差分布分析: 研究误差在不同数据点上的分布情况。可以绘制误差分布图、误差累积分布图等来直观地观察误差的分布特点。
  3. 误差与特征关系: 分析误差与输入特征之间的关系,寻找特征与误差之间的模式,帮助识别哪些特征可能对模型的性能产生重要影响。
  4. 误差与数据分布关系: 检查模型在不同子集或数据分布上的表现,判断模型是否在某些特定情况下表现更差,是否存在数据偏差等问题。
  5. 误差与任务重要性关系: 考虑误差对于特定任务的影响程度,有时候对于某些任务,对高影响的错误进行重点关注可能比一般错误更有意义。
  6. 模型改进方向: 根据误差分析的结果,制定改进模型的具体方案。这可能涉及数据清洗、特征工程、模型参数调整等。

类偏斜的误差度量 Error Metrics for Skewed Classes

“偏斜类”(Skewed Class)通常指的是在分类问题中,不同类别之间的样本分布非常不平衡或不均匀的情况。具体来说,一个类别的样本数量远远多于另一个类别,导致数据集中的某些类别占据主导地位,而其他类别则占据较小的比例。这种情况在实际问题中非常常见,例如:

  1. 医学诊断问题: 在癌症检测中,患病者的数量通常远远少于健康者,导致阳性类别(患病者)是偏斜类。
  2. 金融欺诈检测: 大多数金融交易都是正常的,而欺诈交易的数量相对较少,因此欺诈交易类别是偏斜类。
  3. 自然语言处理中的情感分析: 在情感分析任务中,正面或负面情感的文本评论可能远多于中性评论,导致中性类别成为偏斜类。

为什么偏斜类是问题?

偏斜类会引入一些问题,包括:

  1. 模型偏向主导类别: 由于主导类别的数量远多于其他类别,模型可能会倾向于更频繁出现的类别,导致对少数类别的性能下降。
  2. 评估不准确: 在不平衡数据中,简单地使用准确率(Accuracy)等评估指标可能会给出误导性的结果。模型可以通过预测所有样本为主导类别来获得高准确率,但对少数类别的性能却很差。

应对偏斜类的方法包括:

  1. 重新采样: 这可以通过过采样少数类别或欠采样主导类别来平衡类别分布。但要小心,过度采样或欠采样可能导致过拟合或信息丢失。
  2. 使用不同的评估指标: 替代准确率的评估指标如精确度(Precision)、召回率(Recall)、F1 分数等可以更好地反映模型对于偏斜类别的性能。
  3. 生成合成数据: 可以使用生成模型来生成合成的少数类别样本,以增加数据集的多样性。
  4. 算法调整: 一些机器学习算法(如决策树、支持向量机)具有参数或策略来处理不平衡数据,可以调整这些参数来改进性能。
  5. 集成方法: 使用集成方法,如随机森林或梯度提升树,可以改善模型在偏斜类别上的性能。

采用精确度(Precision)、召回率(Recall)评估偏斜类

查准率(Precision)和查全率(Recall)是用于评估分类模型性能的两个重要指标,它们通常用于将算法的预测结果划分成四种情况,这种分类方式称为混淆矩阵(Confusion Matrix)。混淆矩阵用于比较模型的预测结果与实际观测值之间的关系,四种情况包括:

  1. 正确肯定True Positive,TP):预测为真,实际为真
  2. 正确否定True Negative,TN):预测为假,实际为假
  3. 错误肯定False Positive,FP):预测为真,实际为假
  4. 错误否定False Negative,FN):预测为假,实际为真

则:

  1. 查准率(Precision): 它是指在模型预测为正类别的样本中,有多少个样本实际上是正类别的比例。计算方式为:Precision = TP / (TP + FP)。查准率衡量了模型的预测中有多少是准确的。
  2. 查全率(Recall): 它是指在所有实际正类别的样本中,有多少个样本被正确地预测为正类别的比例。计算方式为:Recall = TP / (TP + FN)。查全率衡量了模型对正类别的识别能力。

通常情况下,查准率和查全率之间存在权衡关系,提高查准率可能会导致查全率下降,反之亦然。选择哪个指标更重要取决于具体的应用场景。如果对于假正例的代价较高(例如,金融欺诈检测),则查准率可能更重要。如果对于假负例的代价较高(例如,癌症检测),则查全率可能更重要。

查准率和查全率之间的权衡 Trading Off Precision and Recall

上一章节谈到查准率和召回率,作为遇到偏斜类问题的评估度量值。在很多应用中,希望能够保证查准率和召回率的相对平衡。 假使依然以癌症分类为例,算法输出的结果在0-1 之间,使用阀值0.5 来预测真和假。

查准率(Precision)=TP/(TP+FP) 例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN)例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

如何平衡召回率和查准率

如果希望只在非常确信的情况下预测为真(肿瘤为恶性),即更高的查准率,可以使用比0.5更大的阀值,如0.7,0.9。这样做会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。

如果希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比0.5更小的阀值,如0.3。

这样可以将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同:

F1 值(F1 Score)帮忙选择阈值

F1分数(F1 Score)是一个用于综合评估分类模型性能的指标,特别适用于处理不平衡类别分布的问题。它是查准率(Precision)和查全率(Recall)的调和平均值。

F1其计算公式为:F1=2PR/(P+R),基于结果选择使得F1值最高的阀值。

F1分数将查准率和查全率结合起来,具有以下特点:

  1. 对不平衡类别分布更稳健: 当类别分布不平衡时,如果只关注准确率(Accuracy),模型可能会偏向预测数量多的类别,导致对少数类别的性能下降。F1分数能够更全面地反映模型在不同类别上的性能。
  2. 平衡查准率和查全率: F1分数是查准率和查全率的调和平均值,因此对二者都给予了平等的权重。这对于需要在查准率和查全率之间进行权衡的问题非常有用。
  3. 高F1分数要求高的查准率和查全率: 为获得高的F1分数,模型需要在查准率和查全率上都表现良好。如果其中一个较低,F1分数也会受到影响。

在某些场景下,高查准率更为重要,而在其他场景下,高查全率更为重要,具体取决于问题的性质。F1分数提供了一个平衡权衡的指标,可以根据具体需求进行调整。

机器学习的数据 Data For Machine Learning

讨论一下机器学习系统设计中另一个重要的方面,这往往涉及到用来训练的数据有多少。得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法。而这种情况往往出现在这些条件对于你的问题都成立。 并且你能够得到大量数据的情况下。这可以是一个很好的方式来获得非常高性能的学习算法。

机器学习中的普遍共识:”取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。 总之,可以迷恋数据,但不要过分迷恋数据。

滚动至顶部