原文towardsdatascience.com/nailing-the-machine-learning-design-interview-6b91bc1d036c?sourcecollection_archive---------8-----------------------#2024-06-18FAANG 设计面试的提示和技巧https://medium.com/rheagoel?sourcepost_page---byline--6b91bc1d036c--------------------------------https://towardsdatascience.com/?sourcepost_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/