以一个垃圾邮件分类器算法为例进行讨论。
如何选择并表达特征向量x:选择一个由100个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量(出现为1,不出现为0),尺寸为100×1。
为了构建这个分类器算法,我们可以做很多事,例如:
构建一个学习算法的推荐方法为:
学习曲线 vs 误差分析
方面 | 学习曲线 | 误差分析 |
定义 | 展示训练集大小与模型性能之间的关系 | 分析模型预测误差的类型、模式和来源 |
目标 | 帮助判断欠拟合、过拟合情况,指导数据收集和模型选择 | 帮助了解模型弱点,为改进提供方向,优化模型性能 |
绘图 | 绘制训练集大小 vs. 性能指标曲线 | 可以绘制误差分布图、误差累积分布图,特征与误差关系图等 |
关注点 | 训练集大小对性能的影响,拟合情况 | 分类错误、误差分布、特征与误差关系、数据分布与误差关系等 |
提示 | – 当训练集较小时,训练误差和验证误差之间的关系 – 当训练集足够大时,模型性能是否趋于稳定 | – 哪些类别容易被误分类 – 是否有误差模式或集中误差范围 – 是否有特定特征与高误差相关 – 模型在不同数据分布下的表现 |
应用 | – 选择适当的模型复杂度 – 判断是否需要更多数据 | – 改进模型,修复特定误差模式 – 优化数据处理流程 – 指导后续的数据收集和特征工程 |
示例 | 随着训练集增加,训练误差逐渐下降,验证误差可能先下降后趋于稳定 | 识别分类错误中哪些类别容易混淆,查看误差是否集中在某个范围,分析模型对不同特征的误差是否一致,检查模型在不同数据分布上的表现 |
误差分析
误差分析(Error Analysis)是指在机器学习和数据分析领域中,对模型预测结果与实际观测值之间的误差进行系统性的分析和理解的过程。通过对误差进行深入分析,可以帮助开发者和研究人员更好地理解模型的性能、识别模型的弱点,并指导后续改进和优化工作。
误差分析的主要目标是确定误差的来源、类型和模式。它可以包括以下几个方面的内容:
“偏斜类”(Skewed Class)通常指的是在分类问题中,不同类别之间的样本分布非常不平衡或不均匀的情况。具体来说,一个类别的样本数量远远多于另一个类别,导致数据集中的某些类别占据主导地位,而其他类别则占据较小的比例。这种情况在实际问题中非常常见,例如:
为什么偏斜类是问题?
偏斜类会引入一些问题,包括:
应对偏斜类的方法包括:
采用精确度(Precision)、召回率(Recall)评估偏斜类
查准率(Precision)和查全率(Recall)是用于评估分类模型性能的两个重要指标,它们通常用于将算法的预测结果划分成四种情况,这种分类方式称为混淆矩阵(Confusion Matrix)。混淆矩阵用于比较模型的预测结果与实际观测值之间的关系,四种情况包括:
则:
通常情况下,查准率和查全率之间存在权衡关系,提高查准率可能会导致查全率下降,反之亦然。选择哪个指标更重要取决于具体的应用场景。如果对于假正例的代价较高(例如,金融欺诈检测),则查准率可能更重要。如果对于假负例的代价较高(例如,癌症检测),则查全率可能更重要。
上一章节谈到查准率和召回率,作为遇到偏斜类问题的评估度量值。在很多应用中,希望能够保证查准率和召回率的相对平衡。 假使依然以癌症分类为例,算法输出的结果在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分数将查准率和查全率结合起来,具有以下特点:
在某些场景下,高查准率更为重要,而在其他场景下,高查全率更为重要,具体取决于问题的性质。F1分数提供了一个平衡权衡的指标,可以根据具体需求进行调整。
讨论一下机器学习系统设计中另一个重要的方面,这往往涉及到用来训练的数据有多少。得到大量的数据并在某种类型的学习算法中进行训练,可以是一种有效的方法来获得一个具有良好性能的学习算法。而这种情况往往出现在这些条件对于你的问题都成立。 并且你能够得到大量数据的情况下。这可以是一个很好的方式来获得非常高性能的学习算法。
机器学习中的普遍共识:”取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。 总之,可以迷恋数据,但不要过分迷恋数据。
The post 吴恩达机器学习一站式学习系列(8)——系统的设计 Machine Learning System Design first appeared on PMSOLO.