原文:
towardsdatascience.com/nailing-the-machine-learning-design-interview-6b91bc1d036c?source=collection_archive---------8-----------------------#2024-06-18
FAANG 设计面试的提示和技巧
https://medium.com/@rheagoel?source=post_page---byline--6b91bc1d036c--------------------------------https://towardsdatascience.com/?source=post_page---byline--6b91bc1d036c-------------------------------- Rhea Goel
·发布在 Towards Data Science ·8 分钟阅读·2024 年 6 月 18 日
–
https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4886b4956c25d71687c4db6cca80329d.png
通过 Dall-E 生成
我是亚马逊的高级应用科学家,曾在机器学习设计面试问题的两方角色中都有过经验。我希望分享我随着时间积累的所有技巧和窍门。通过阅读本文,你将了解面试中可能遇到的内容,面试官的期望,候选人常犯的错误和陷阱,以及如何根据职位的资历/级别调整你的回答。接下来,我还会发布一系列关于常见机器学习设计面试问题的文章(包括解决方案)。敬请关注!
什么是机器学习设计面试?
机器学习设计面试是一个问题解决会议,特别关注机器学习在商业应用中的使用。面试的目的是评估你是否能够将商业问题转化为机器学习问题,并提出一个端到端的策略,以在生产环境中应用机器学习算法。
期望的内容
你将被给定一个真实世界的商业问题,通常是与你所面试的公司或根据你的简历相关的专业领域的问题。你需要主导面试全过程,并经常与面试官确认方向及时间管理上的建议。讨论通常是开放式的,可能涉及白板工具(如Excalidraw)或共享文档(如Google Docs)。通常,这一轮面试不需要编程。
FAANG 及类似公司常见的机器学习设计问题:
为电商平台设计一个推荐系统
为银行应用设计一个欺诈检测系统
设计一个系统,将客户服务票据自动分配给正确的处理团队
面试官在寻找什么
从高层次来看,面试官需要收集以下数据:
科学广度与深度:你能为业务问题识别出机器学习解决方案吗?
问题解决:你能充分理解业务用例/问题吗?
行业机器学习应用经验:你能将机器学习算法应用于生产环境中吗?
具体来说,当你阐述解决方案时,面试官会关注以下内容:
理解业务用例/问题:你会提出澄清问题,确保自己完全理解问题吗?你理解机器学习解决方案如何用于下游任务吗?
识别业务成功指标:你能定义明确的业务指标来衡量成功吗?比如通过与问题相关联的指标,如点击率、收入或更低的解决时间?
将业务问题转化为机器学习问题:你能识别出适用于此问题的正确机器学习算法类型吗,比如分类、回归、聚类或其他算法?
识别系统的高层次组件:你能识别出整个系统的关键组件吗?你能展示各种在线和离线组件如何相互作用吗?你是否遵循一个有条理的思考过程:从数据收集、预处理、模型训练、部署,到用户服务层?
建议相关数据/特征:你能识别出哪些数据和特征对模型的性能至关重要吗?你能推理出最佳的数据收集策略吗——通过人工标注收集真实数据、使用隐式数据(例如用户点击)还是使用一些自动标注方法?你能推理不同数据源的质量吗?
预测特征/标签可能存在的偏差或问题并提出缓解策略:你能预测数据质量问题吗,比如缺失数据、稀疏特征或特征过多?你是否考虑过标签中的噪音?你能预见数据中的偏差吗,比如流行度偏差或位置偏差?你如何解决这些问题?
使用简单模型设定基准并推理为何需要更复杂的模型:你能为该问题建议合适的算法吗?你是否建议构建一个基于启发式的方法的简单模型或轻量级模型,作为一个基准模型,以便在需要时评估更高级/复杂的模型?在从简单模型迁移到更复杂的模型时,你能推理出性能与复杂度的权衡吗?
训练流水线经验:你能解释训练模型的不同步骤吗?你如何进行训练-测试-验证集的划分?你会使用什么损失函数?你会使用什么优化器?你会使用什么架构和激活函数?你会采取哪些步骤来防止过拟合?
**提出离线评估指标和在线实验设计:**你能为你的模型识别出合适的评估指标吗(例如,精确度、召回率)?你能提出一个好的在线实验设计吗?你是否提议采取错开拨号策略以减少意外问题时的影响范围?
常见的好与不好回答错误
#1 直接跳入模型
有些候选人直接跳到他们会使用的机器学习算法来解决问题,而没有先阐明业务应用、解决方案的目标以及成功的衡量标准。
不好的回答:“对于欺诈检测,我会使用深度神经网络,因为它很强大。”
好的回答:“这个解决方案是用来做每次刷卡的实时欺诈检测吗?这意味着我们需要一个快速且高效的模型。让我先确定可以用来训练这个模型的所有数据。首先,我有交易元数据,例如交易金额、地点和时间。我还可以使用这张卡片的历史交易数据——我可以查看过去 30 天的数据,从而减少需要实时分析的数据量,或者我可能会预先计算从交易历史中得出的分类/二元特征,比如‘is_transaction_30_days’(30 天内是否有交易)、‘most_frequent_transaction_location_30days’(过去 30 天最频繁的交易地点)等。最初,我将使用逻辑回归来设置基准,然后再考虑使用更复杂的模型,如深度神经网络,如果有必要的话。”
#2 过于泛泛而谈
你不仅仅需要提供一个套用的策略,还应该在每个步骤中加入与特定业务问题相关的具体例子。
不好的回答:“我会做探索性数据分析,去除异常值,然后构建模型预测用户参与度。”
好的回答:“我会分析历史用户数据,包括页面浏览量、点击率以及在网站上停留的时间。我会分析如产品类别、品牌等分类特征,如果有超过 75%的值缺失,我会将其删除。但在这一步我会小心,因为某些特征的缺失有时可能也包含很有价值的信息。逻辑回归模型可以作为起点,如果需要的话,我会进一步使用像随机森林之类的更复杂的模型。”
#3 只解决理想情况
如果候选人只谈论数据和建模策略,而没有讨论数据质量问题或其他在实际应用中可能遇到的细节,那么很容易看出其缺乏行业经验。
不好的回答:“我会使用过去的用户-商品点击数据来训练分类器,预测广告点击。”
好的回答:“过去的用户-商品点击数据可能会有位置偏差,因为在搜索结果中,排名靠前的商品更容易被点击。我会通过估计每个位置的点击概率(即倾向度),并使用逆权重倾向性来修正这个位置偏差,从而加权所有标签。”
#4 从最复杂的模型开始
你需要展示采取行动的偏好,使用易于开发、成本较低且时间消耗少的轻量级模型,并根据需要引入复杂性。
不良回答:“我将使用最先进的双编码器深度学习架构来构建推荐系统。”
良好回答:“我将从一个简单的协同过滤方法开始,建立一个基准模型。一旦了解其表现,我们可以根据初步结果的需要引入矩阵分解或深度学习模型,如双编码器。”
#5 在遇到难题时不做调整
面试官可能会打断你的策略,提出后续问题或提出替代情境,以了解你对不同技术的理解深度。你应能够在他们引入新挑战或变化时调整你的策略。
不良回答:“如果我们无法访问用户的个人身份信息,我们就无法构建个性化模型。”
良好回答:“对于选择不分享个人身份信息或过去互动数据的用户,我们可以将他们视为冷启动用户,并向他们推荐基于人气的内容。我们还可以加入在线会话 RNN,基于他们在会话中的活动调整推荐。”
根据层级调整回应
随着职位层级的提升,回答中的广度和深度预期也会增加。通过一个例子可以更好地说明这一点。假设你被要求设计一个在线支付平台的欺诈检测系统。
入门级(0-2 年相关行业经验)
对于这个层级,候选人应关注数据(特征、预处理技术)、模型(简单的基准模型、更复杂的模型、损失函数、优化方法)以及评估指标(离线指标、A/B 实验设计)。一个好的流程如下:
特征识别与预处理:例如交易金额、位置、时间以及其他代表支付历史的分类特征。
基准模型与进阶模型:例如使用逻辑回归模型作为基准,考虑在下一版本中采用梯度提升树。
评估指标:例如精准率、召回率、F1 分数。
中级经验(3-6 年相关行业经验)
对于这个层级,候选人应关注业务问题以及在生产环境中部署模型时的细节。一个好的流程如下:
业务需求:例如在召回率和精准率之间的权衡,我们希望减少欺诈金额,同时保持低假阳性率,以提供更好的用户体验;强调需要可解释的模型。
数据细节:例如欺诈交易的数量远少于非欺诈交易,可以使用像 SMOTE 这样的技术来解决类别不平衡问题。
模型权衡:例如,先使用基于启发式的基线模型,然后是逻辑回归,再接着是基于树的模型,因为它们比使用难以解释的非线性特征变换的逻辑回归更易于解释。
讨论部署细节:例如,实时交易处理,以及更新模型的节奏,以适应变化中的欺诈模式。
高级/员工/首席级别经验(6 年以上)
对于这个层级,候选人需要利用他们多年的经验,深入思考更广泛的生态系统,识别这个领域中的核心挑战,并强调不同的机器学习子系统如何协同解决更大的问题。解决如实时数据处理和确保模型对抗攻击的鲁棒性等挑战。提出一种多层次的方案:使用规则引擎系统进行即时标记,并使用深度学习模型进行模式识别。包括反馈回路和监控机制,以确保模型能够适应新的欺诈形式。同时,展示你对最新行业趋势的了解(例如,使用 GPU、表示学习、强化学习、边缘计算、联邦机器学习、构建不涉及 PII 数据的模型、机器学习中的公平性与偏见等)。
希望这份指南能帮助你顺利应对机器学习设计面试!如果有任何想法或经验分享,请留言评论。
其他有用资源
research.facebook.com/blog/2018/05/the-facebook-field-guide-to-machine-learning-video-series/github.com/chiphuyen/machine-learning-systems-design/blob/master/content/design-a-machine-learning-system.mdpatrickhalina.com/posts/ml-systems-design-interview-guide/