审校 | 重楼
你是否竭力在测试阶段改进模型性能?即使你改进了模型,由于未知的原因,它也会在生产环境中失灵。如果你遇到类似的问题,那么这篇文章完全适合你。
本文将分享7个技巧,使你的模型准确而稳定。如果遵循这些技巧,你可以确保模型即使面对未见过的数据也有更好的表现。
为什么要听我的建议?我已经在这个领域工作了近四年,参加过80多场机器学习比赛,并参与了几个端到端机器学习项目。多年来,我还帮助许多专家构建了更好、更可靠的模型。
1. 清理数据
清理数据是最重要的部分。你需要填写缺失值、处理异常值、规范数据,并确保数据的有效性。有时,清理Python脚本无法真正起到作用。你必须逐个检查每个样本,以确保没有问题。我知道这会花费你很多时间,但相信我,清理数据是机器学习生态系统中最重要的部分。
比如说,当我在训练一个自动语音识别模型时,发现数据集中有多个问题无法通过简单地删除字符来解决。我不得不听音频,重写准确的转录。有一些转录内容很模糊,没有意义。
2. 添加更多数据
增加数据量通常可以提高模型性能。为训练集添加更相关、更多样的数据可以帮助模型学习更多模式,并做出更准确的预测。如果你的模型缺乏多样性,它可能面对多数群体表现良好,但面对少数群体表现不佳。
许多数据科学家现正在使用生成式对抗网络(GAN)来生成更多样化的数据集。为此,他们使用现有数据训练GAN模型,然后使用该模型生成合成数据集。
3. 特征工程
特征工程是指利用现有数据创建新特征,另外删除对模型决策贡献较小的不必要特征。这为模型提供了更相关的信息来进行预测。
你需要执行SHAP分析,查看特征重要性分析,并确定哪些特征对决策过程很重要。然后,它们可以用来创建新的特征,并从数据集删除不相关的特征。这个过程需要对业务用例和每个特征有一番透彻的了解。如果你不了解这些特征以及它们对业务的用处,将无异于蒙眼上路。
4. 交叉验证
交叉验证是一种用于评估模型跨多个数据子集的性能的技术,可以减小过拟合风险,并对其泛化能力提供一番更可靠的估计。这将为你提供模型是否足够稳定方面的信息。
计算整个测试集的准确性可能无法提供关于模型性能的完整信息。比如说,测试集的前五分之一可能显示100%的准确性,而后五分之一可能表现不佳,只有50%的准确性。尽管如此,总体准确率可能仍在85%左右。这种差异表明模型是不稳定的,需要更干净、更多样的数据进行再训练。
因此,我建议使用交叉验证,为其提供你想要用来测试模型的各种度量指标,而不是执行简单的模型评估。
5. 超参数优化
使用默认参数训练模型可能看起来简单而快速,但是你错过了性能的提升,因为在大多数情况下,你的模型没有经过优化。为了在测试期间提高模型的性能,强烈建议对机器学习算法彻底执行超参数优化,并保存这些参数,以便下次可以使用它们来训练或重新训练模型。
超参数调优需要调整外部配置以优化模型性能。在过拟合和欠拟合之间找到适当的平衡对于提高模型的准确性和可靠性至关重要。它有时可以将模型的准确率从85%提高到92%,这个幅度在机器学习领域已相当大。
6. 试验不同算法
模型选择和试验各种算法对于找到特定数据的最佳拟合至关重要。不要仅限于只使用简单的算法来处理表格数据。如果你的数据有多个特征和1万个样本,你应该考虑神经网络。有时,连逻辑回归也可以为文本分类提供惊人的效果,这是借助LSTM等深度学习模型所无法实现的。
从简单的算法开始,然后慢慢地试用高级算法,以获得更好的性能。
7. 集成学习
集成学习是指合并多个模型以提高整体预测性能。构建模型集合,每个模型都有自己的优势,可以带来更稳定、更准确的模型。
合并这些模型常常给我带来了更好的结果,有时让我在机器学习比赛中进入前10名。不要抛弃表现不佳的机型;如果将它们与一组高性能模型相结合,你的整体准确性将会得到提高。
集成学习、清理数据集和特征工程是我赢得比赛和实现高性能的三个最佳策略,哪怕是面对未见过的数据集。
结语
还有更多的技巧只适用于某些类型的机器学习领域。比如在计算机视觉中,我们需要关注图像增强、模型架构、预处理技术和迁移学习。然而,上面讨论的这七个技巧:清理数据、添加更多数据、特征工程、交叉验证、超参数优化、试验不同的算法和集成学习是普遍适用的,对所有机器学习模型都有益。
如果运用这些策略,你可以显著提高预测模型的准确性、可靠性和稳健性,从而获得更好的洞察力和更明智的决策。
原文7 Ways to Improve Your Machine Learning Models,作者:Abid Ali Awan