作者:AARSHAY JAIN
翻译:张若楠
校对:张玲
本文约6500字,建议阅读10+分钟
本文将从原理及应用两方面出发,介绍如何采用日志数据对新模型进行上线测试前的初步筛选评估。
标签:机器学习
简介
大多数Kaggle类的机器学习竞赛都没有涵盖机器学习实际工作流程中的一个重点:在构建机器学习产品时搭建离线的评估环境。
比起真正训练机器学习模型,人们通常需要花费更多的努力去清晰地划分训练集/测试集,不断优化某一机器学习指标。在我从事机器学习工程师工作,投入很多时间在监督数据集上训练模型后,我才深有体会。
在这篇博文中,我想介绍设计离线评估环境的一个关键组成部分:创建测试集,该测试集不仅可以用于计算机器学习的基本指标,例如准确率(Accuracy),精确率(Precision),召回率(Recall);还可以估算产品指标,如点击率,收益等。
我们将使用基于反事实评估技术(counterfactual evaluation)的因果推断(causal inference)方法,并使用业界直观的案例来进行解读;然后深入研究Python代码实现,最终模拟出一个真实的场景!
目录
一、线上与线下进行机器学习模型评估对比
二、广告行业案例研究
三、设计并搭建因果图
四、模型干预
五、使用Python模拟反事实分析(Counterfactual Analysis)
一、线上与线下进行机器学习模型评估对比
在生产环境中开发和部署机器学习模型,通常从设定基线(baseline)甚至启发式模型开始,也就是使用实时流量进行决策。这样不仅有助于收集数据以训练更复杂的模型,也可以用来作为良好效能的基准。
接下来便是创建训练/验证/测试数据集,并离线训练模型。至此,模型不作任何影响终端用户的决策。建立好模型后,通常的做法是将其在线部署并运行A / B测试,将其与启发式模型进行比较。当对生产中的现有机器学习模型进行迭代时,我们一般也会遵循上述类似的过程。
“在此过程中,最大的挑战之一是如何验证离线模型的有效性,并决定上线测试哪一个模型。”
如果离线模型的离线机器学习指标(如AUC)比在线模型更好,那么是否意味着离线模型对业务更有帮助?
较高的离线机器学习指标是否意味着业务指标的提升?
离线模型的指标需要有多大提升,才值得我们将其部署成新模型或进行A / B测试?
这些是困扰机器学习从业者日常工作的一些常见问题,尤其是在构建面向用户的机器学习产品的时候。这些困扰来自以下3种常见场景:
机器学习应用尝试驱动以业务指标(例如点击率,收入,用户参与度等)进行考量的产品,依赖用户在线的反馈/互动,而这些反馈和互动难以离线评估;
机器学习模型通常与一些业务策略一起部署,这些策略会影响到模型的输出结果如何去转换为产品动作,例如在进行内容推荐时,同时考虑内容的多样性与用户具体偏好;
许多应用程序会接收来自多个模型的预测后进行判断。例如,选择展示哪个广告,可能取决于机器学习模型的点击率和需求预测,同时还要考虑一些业务限制条件,例如广告位的库存和用户匹配性。
在这些情况下,单个模型的常见指标(如准确性,AUC-ROC,精度召回率等)通常不足以判断离线搭建的模型是否比使用中的模型有重大改进。通常可以使用A / B测试进行这种评估,但是在金钱和时间方面,它们的运行成本很高。
在因果推理(Causal Inference)文献的启发下,反事实评估技术(Counterfactual evaluation)提供了一种使用生产日志估算在线指标(如点击率,收入等)的方法。这是很好的中间步骤,有助于筛选离线模型并为A / B测试选择合适的测试对象,从而使我们可以在离线环境中探索更多的模型。
二、广告行业案例研究
让我们以广告行业为例来更好地理解这一点。考虑以下情形的两方:
用户方:用户访问网站并收到广告;如果用户喜欢该广告,则进行点击,反之不会点击;
业务方:机器学习系统接收挑选广告的请求,这个请求包含当前用户的上下文信息,而后选择匹配的广告进行展示。
可以使用以下变量定义该系统:
用户意图(u):用户出于某种意图访问网站(例如,用户访问amazon.com购买鞋子);
用户上下文(x):用户开始在网站上浏览,其浏览行为被打包为上下文内容向量;
广告库存(v):可用于展示的广告位库存量;
出价(b):一种针对广告位每次点击出价的系统;
被选广告(a):根据出价和点击估算值选择的最终广告;
用户操作(y):二进制。如果用户点击了显示的广告则为1,否则为0;
收入(r):用户进行互动后产生的一定形式的收入($$)。
注意:此处使用的示例和以下数学公式是[1]中使用的示例的略微简化版本(见本文底部链接)。这不是原本研究,而是在尝试通过直观的示例来总结该研究的思想,以及应用在模拟数据上。
三、设计并搭建因果图
首先,是什么因果图?以下是来自维基百科的定义:
“因果图(也称为路径图,因果贝叶斯网络或DAGs)是用于对数据生成过程的假设进行编码的一种概率图模型。”
上述具有以上变量的系统就可以绘制因果图如下:
从这张图中,我们可以看到不同变量之间的依赖关系或关联关系:
u, v 是自变量,也叫作“外生变量”
x = f(u)
b = f(x, v)
a = f(x, b)
y = f(a, u)
r = f(y, b)