您的用户期望什么?
两年前,当他们放弃了一个重要的智慧宝藏时,我正坐在 Spotify 关于他们主页个性化的演讲中。他们的个性化主页布局包括用户特定和上下文特定顺序的不同轮播。
作为一个健全的指标,他们监控用户最常用的轮播的排名。 对于新的个性化算法,如果用户最喜欢的轮播排名较低或排名突然下降,则表明存在问题。
您可以将指标视为基本用户故事或简单的常识基线(baseline):
作为一个用户,我希望我最喜欢的轮播可以轻松访问(页面排名靠前)。
有时,这些故事甚至可以更基本,并且仍然可以有效地发现问题。在Zalando(欧洲最大的电子商务时尚零售商之一),我们根据用户的上下文实时个性化推荐产品页面上的类似文章。如果一个请求没有足够的上下文来完全个性化,那么下一个最好的选择,非个性化的模型,就会被交付。因此,一个简单的指标可以是至少有4篇文章的完全个性化回复的份额:
作为用户,我希望看到一个个性化的推荐框。
你能想到你的产品的基本常识规则吗?
提示:如果您难以从用户的角度提出指标,请尝试集思广益的技术用户故事,并专注于那些对用户体验有影响的故事。
你能鉴别一个糟糕的用户体验吗?
我的第二个帮助您设计特定于领域的机器学习监控指标的技巧是观察极端情况,而不是典型的经验。这种方法在其他监控领域很常见,如应用程序延迟监控。为了检测我们服务速度的问题,我们根据95分位数和99分位数而不是中值发出警报。当速度变慢时,你会发现95分位数和99分位数的速度要比中值快得多。
我们可以采取类似的方法,通过询问以下问题来监控我们的机器学习服务响应:
哪种服务响应可能是糟糕的用户体验?
让我们考虑一些最有可能是不良用户体验的示例:
- 空响应:您的服务以空响应进行响应,例如,因为模型无法给出预测,或者预测的条目/艺术家/歌曲等被业务规则过滤掉。
- 部分填充响应:您的模型只给出部分响应。对于产生推荐模型或等级库等集合的模型,会发生这种情况。任何时候,如果您预测填充面向用户的组件所需的文章更少(例如,4篇文章填充一个推荐框,10个结果填充一个谷歌结果页面,……),您都可以假设您的结果看起来有点糟糕。
- 应急响应:您提供的不是高质量的答案,而是应急响应。回退可以是默认值、流行/最近的条目,甚至是非常基本的模型。
- 低确定性响应:如果您的模型对其预测不确定,例如,在单个标签分类问题中存在中低概率或具有相同概率的多个类别,则响应很可能质量不佳。
通过深入思考您提供的服务类型并与了解您用户的人(可能是产品经理?)交谈来设计“不良体验”指标通常是有意义的。
不要只是测量:报警!
将这些指标作为分析 notebook 运行是很好的,但它不会让您放心,您的服务现在和将来的任何时候都能按预期工作。根据我在Zalando推荐团队为数百万用户运行许多模型和服务的经验,我可以确认推理服务代码、客户端代码、配置、推理输入数据、训练数据、模型库或训练代码中的错误定期发生。您需要实时指标来检测影响机器学习服务质量的问题。
第一步是创建您的指标,并对其进行几周的评估。此分析可以在notebook(如果可能)中完成,也可以通过在实时服务中实现度量来完成。它们稳定吗?在你知道你有质量问题的时候,它们会下降吗?
如果一个指标在一段时间内相对稳定,并且在发生问题时确认(或至少预期)会下降,那么您可以使用合理的阈值发出警报。您根据对“典型水平”的分析来定义阈值。如果指标有点杂乱,您可以进行清理,例如:应用平滑,考虑稍微更改其定义(例如,与上周/昨天的同一时间相比,占总数的百分比……),或者仅针对较大差异发出警报。
产生特定于域的噪声指标的一个典型原因是机器人流量。如果机器人流量包含在您的指标中,并且机器人的输入分布与人类用户不同,那么模型指标的行为可能不规则。如果无法在度量收集期间删除机器人程序,则可以在有助于限制对“机器人程序背景噪音”不影响度量的时间发出警报,例如:在白天。
现在,您可以将警报放在仪表板上,并将其连接到自动通知。