缺乏经验的ML工程师的五个迹象
在这篇文章中,我将分析缺乏经验、自学成才的机器学习工程师的五个迹象,以便你能够避开这些陷阱,展现出最好的自己。

在竞争激烈的初级工程师就业市场中,只有那些拥有最强技能的人才能被录用。在这篇文章中,我将分析缺乏经验、自学成才的机器学习工程师的五个迹象,以便你能够避开这些陷阱,展现出最好的自己,无论是在简历中、面试中,还是在入职后的头几周。
我的经验来源于我在亚马逊指导过团队中许多人的经历,以及多年担任职业教练的经验。我自己也是半自学成才,因为我来自非传统背景,为了达到今天的水平,不得不靠自己不断提升自己。
那么,让我们开始吧。
注意事项
在讨论第一个迹象之前,我要先声明一下,“自学”这个词的含义有点复杂。实际上,无论你是否参加过正规的培训课程,你职业生涯中学到的绝大部分知识都将在工作中运用。
所以我在这里真正想说的是,有些迹象表明你之前没有接受过正规的指导,也没有参与过大型项目。即使是拥有大学学位的人,在这些方面也完全有可能遇到困难。
尤其是第一个迹象。
迹象#1:只考虑模型
我从缺乏经验的机器学习工程师身上看到的第一个主要危险信号是,他们只考虑模型本身。
稍微放大一点,作为一名机器学习工程师 (MLLE),你的最终工作是解决问题。一个放在 Jupyter Notebook 里的模型不太可能做到这一点。我见过非常聪明的人花费数周时间构建一个离线性能指标非常出色的模型,结果却发现现有系统无法处理输入格式,或者推理时间只有 5 秒,而业务问题需要亚秒级的响应。
从任何项目一开始,你都应该考虑整个系统的设计。这个模型将如何部署?它会在服务器还是移动设备上运行?它将如何接收数据——通过批处理、实时 API 还是流式传输?当模型失败或产生意外输出时会发生什么?你将如何监控其在生产环境中的性能?
这些问题你应该从一开始就考虑,因为它们会对哪种模型更适合该任务产生巨大的影响。
但有时,系统设计中最重要的考量因素是你是否真的需要机器学习,这就引出了第二个迹象。
迹象#2:从过于复杂的模型入手
第二个迹象是直接跳到你能想到的最复杂的模型。这是一个陷阱,很多自学成才的工程师都会陷入其中,因为他们想炫耀自己掌握的尖端技术。
但如果一开始就从过于复杂的模型入手,可能会出现很多问题:
- 没有可供比较的基准
- 没有明确的投资回报
- 开始迭代需要太长时间
- 模型不易维护
- 无法向利益相关者解释,并且出现问题时更难调试。
最终,甚至可能出现机器学习根本不需要解决该问题的情况。我最自豪的时刻之一,就是说服一位产品经理从构建实时个性化推荐模型简化到仅仅使用一个精心设计的 SQL 查询。这个 SQL 查询解决了 80% 的业务需求,而复杂性和开发时间只x有 1%。
所以,永远要从简单入手,并建立一个基准线。线性回归、逻辑回归,甚至是基本的启发式算法。然后,只有当你能够通过明显的改进和商业价值来证明其合理性时,才进行迭代并增加复杂性。
迹象 #3:糟糕的软件工程实践
表明某人缺乏经验的第三个迹象是糟糕的软件工程实践。这一点非常重要,因为机器学习的核心仍然是软件工程,而这正是我认为学术项目和行业工作之间最大差距的地方。
让我们从测试开始。机器学习流程就像任何软件产品一样需要测试。至关重要的是,这些测试必须尽早到位,并在更改时持续运行。你需要对数据预处理、特征工程、模型训练逻辑,尤其是预测流程进行测试。
测试和部署检查需要使用 CI/CD 流水线运行。它可以是像 GitHub Actions 这样的简单操作,但如果有人说他们在合并 PR 之前手动运行测试,或者在部署到生产环境之前手动检查模型,那就太糟糕了。
模块化是另一个重要因素。还记得我们一开始讨论过不要只关注模型本身吗?只有一个 Mono 的笔记本可不行。我们需要编写代码以易于维护、扩展和迭代的方式,构建一个完整的系统。
说到迭代,缺乏经验的工程师经常会提交大量的代码变更。这确实不太理想。这意味着几乎不可能进行非常彻底的审查,而这对于初学者来说尤为重要,而且在修改仍然很容易的情况下,你得不到好的反馈。这也很烦人,会让你的团队对你感到失望。
但即使拥有完美的工程实践,仍然有一个基本步骤,许多工程师要么完全跳过,要么完全过度,这就引出了第四个迹象。
迹象 #4:跳过 EDA(或过度)
第四个迹象是要么完全跳过探索性数据分析,要么反过来,完全过度使用它。
在职业生涯的初期,你知道你应该做 EDA。所以你画了一大堆图表。然后你对它们进行审查,但这几乎是徒劳的,因为你没有寻找正确的东西。
我们不需要为了绘图而绘图。好的 EDA 应该回答具体的问题:我需要标准化或缩放我的特征吗?空值在哪里?我应该如何处理它们?上游数据中是否存在明显的错误需要处理?我需要注意哪些潜在的数据泄露风险?
最重要的是,什么样的模型真正适合这个问题?有些模型有特定的假设需要我们验证。线性模型假设线性关系。神经网络需要大量数据才能正常工作——诸如此类。
让我给你举一个具体的例子。假设你正在处理一个欺诈检测问题,初始 EDA 显示 99.9% 的交易是合法的。这立即告诉你,准确率是一个无用的指标,你需要一些技术来处理严重的类别不平衡。
理解异常值也至关重要。它们是数据中的错误,还是你真正需要捕捉的最有趣的案例?在那个欺诈检测的例子中,异常值通常就是我们试图捕捉的真正欺诈案例。
别忘了特征工程的理念。好的 EDA 应该能让你深入了解如何转换特征,使其更具预测性。
关键在于有的放矢。每个图表、每个汇总统计数据都应该能为你如何进行建模提供参考。
但即使你做了完美的 EDA 并构建了一个优秀的模型,还有一个领域,缺乏经验的工程师总是会搬起石头砸自己的脚。
迹象 #5:指标选择不当或误解指标
最后一个迹象是对指标理解不足,而这一点可能是最具破坏性的,因为它会影响你对其他所有指标的评估。
让我们从最基本的错误开始——在错误的数据集上评估指标。我见过有人报告测试集上的性能,而不是合适的保留验证集。甚至更糟——报告训练集上的性能。🙁
然后是选择完全错误的指标。最明显的例子就是准确率,基本上从来都不存在。现实世界中,平衡的数据集非常少见。如果你正在进行垃圾邮件检测,并且 95% 的邮件都是合法的,那么一个仅仅预测所有邮件“不是垃圾邮件”的模型,虽然能获得 95% 的准确率,但却完全没用。
这就是为什么 99% 的准确率应该让你感到怀疑而不是兴奋:在大多数现实世界的问题中,99% 的准确率通常意味着两种情况之一:要么你存在严重的类别不平衡问题,而你没有妥善处理;要么你存在数据泄露,未来的信息会潜入你的训练数据中。
有一次,我审查了一个预测客户流失率的模型,该模型声称准确率高达 98%。听起来很神奇,对吧?结果发现,他们意外地添加了只有在客户流失后才可用的特征。典型的数据泄露。当我们修复这个问题后,实际性能大约为 72%,这仍然不错,但更符合实际情况。
另一个重大问题是没有将你的模型指标与实际业务指标联系起来。你的精确度可能达到 0.85,但这对收入意味着什么?F1 分数提升 5% 如何转化为客户满意度或成本节省?如果你无法理解这其中的联系,那么你就没有解决业务问题,而这正是你的工作。
仅仅在全局层面检查指标是另一个陷阱。你需要检查不同数据子集的性能。你的模型可能对 25-35 岁的用户非常有效,但对 65 岁以上的用户却非常糟糕。它可能在城市地区表现良好,但在农村地区却表现不佳。这些洞察对于理解模型的局限性并改进模型至关重要。
最后,也要从定性的角度理解你的错误。不要只看数字——要真正检查你的模型失败的案例。你应该能够解释为什么你的模型对特定样本进行了错误分类,并利用这些洞察来改进模型。改进你的特征工程或模型架构。
我曾经开发过一个性能出奇糟糕的模型。在进行系统的定性误差分析后,我发现问题在于我们的评估数据标注不当。模型是对的,但标注错了。这是因为人工标注团队的训练不一致造成的——仅凭指标本身我不可能知道这一点。
结束语
这五个迹象——只关注模型、起点过于复杂、软件工程不佳、EDA 不恰当以及对指标的误解——是表明某人从未在生产环境中参与过真正的机器学习项目的最大信号。
好消息是,所有这些问题都可以通过正确的心态和实践完全解决。专注于端到端地解决问题,而不仅仅是构建酷炫的模型。从简单开始,并根据实际业务价值进行迭代。将机器学习视为一门软件工程学科。进行有目的的数据探索,为你的建模决策提供参考。并真正理解你的指标所反映的模型性能和业务影响。
原文链接:5 Signs of an Inexperienced, Self-Taught Machine Learning Engineer
汇智网翻译整理,转载请标明出处
