数据科学

NVIDIA RAPIDS 加速大型数据集的因果关系推理

随着消费者应用生成的数据比以前更多,企业开始采用观察数据的因果关系推理方法,以帮助阐明应用的各个组件的更改如何影响关键业务指标。

在过去十年中,计量经济学家开发了一种称为 双机器学习 的技术,该技术将机器学习模型的强大功能用于解决因果关系推理问题。它涉及在独立的数据集样本中训练两个预测模型,并将它们结合起来以构建目标变量的无偏估计。

借助 DoubleML 等开源 Python 库,数据科学家可以轻松利用这项新技术,但却难以处理企业需要在 CPU 上处理的数据量。

RAPIDS 是开源 GPU 加速数据科学和 AI 库的集合。 cuML 是一个适用于 Python 的 GPU 加速机器学习库,具有 scikit-learn 兼容的 API。

在这篇博文中,我们展示了如何将 RAPIDS cuML 与 DoubleML 库结合使用,以加快因果关系推理速度,从而更有效地处理大型数据集。

为什么要进行因果关系推理?

许多数据科学和机器学习的用例更关注预测的质量,而不是单个特征对结果变量的确切影响大小。因此,像随机森林(可在 scikit-learn 中获取)和 XGBoost 这样的非参数模型已成为许多数据科学家的首选。

对于某些问题,我们需要测量一个变量(特征)对目标结果变量的因果关系。有效地做到这一点的黄金标准是运行随机对照试验或 A/B 测试,并测量各组的平均治疗效果。

遗憾的是,由于更改可能会对企业业务产生影响,因此这对企业来说并不总是可行的。理想情况下,我们能够找出应用内体验的一个组成部分对用户流失的重要性,而不会增加流失的风险。因果推断技术能够根据用户行为的真实数据集估算这种关系,并就我们应在何处投入资源以改进产品提供关键指导。

过去,使用随机森林和 XGBoost 等灵活的非参数模型进行因果关系推理极具挑战性。双重机器学习使我们能够轻松利用这些进步。

将加速计算应用于机器学习

使用最先进的机器学习算法进行因果关系推理会增加工作流程的计算需求。对于小型数据集,这不是问题。但是,随着数据集的不断增长,在 CPU 上实际使用 DoubleML 可能是一项挑战。

在下面的基准测试中,我们根据 DoubleML 文档略微调整了这个示例,并使用 scikit-learn 和 cuML 在各种数据集大小上运行,以了解性能变化。

import doubleml as dml
from doubleml.datasets import make_plr_CCDDHNR2018
from sklearn.ensemble import RandomForestRegressor
from sklearn.base import clone
import cuml

NROWS = [10000, 100000, 1000000, 10000000]
USE_GPU = True

for N in NROWS:
    data = make_plr_CCDDHNR2018(alpha=0.5, n_obs=N, dim_x=100, return_type="DataFrame").astype("float32")
    obj_dml_data = dml.DoubleMLData(data, "y", "d")

    if USE_GPU == "cuml":
  learner = cuml.ensemble.RandomForestRegressor(n_estimators=200, max_features=100, max_depth=10, min_samples_leaf=2)
    else: # standard scikit-learn
  learner = RandomForestRegressor(n_estimators=200, max_features=100, max_depth=10, min_samples_leaf=2, n_jobs=-1)

    ml_l = clone(learner)
    ml_m = clone(learner)
    dml_plr_obj = dml.DoubleMLPLR(obj_dml_data, ml_l, ml_m).fit()

由于底层机器学习模型成为瓶颈,基于 CPU 的 DoubleML 工作流会产生数十万甚至数百万条记录,因此速度会迅速放缓。在 1000 万行 x100 列数据集上,拟合 DoubleMLPLR 工作流需要超过 6.5 小时。为基础模型切换到 GPU 加速的 RAPIDS cuML 后,只需 51 分钟即可完成,速度提高了 7.7 倍。

A bar chart showing the time required to train the DoubleML PLR using Random Forest Regression from Scikit-learn (CPU) vs. RAPIDS cuML (GPU) as the underlying learner. As datasets grow, GPU-accelerated machine learning can provide significant performance improvements (up to 12x).
图 1、使用 Scikit-learn(CPU)中的随机森林回归与 RAPIDS cuML(GPU)作为基础学习者来拟合 DoubleML PLR 的时间。

根据结果,与使用 scikit-learn 基于 CPU 的 RandomForestRegressor 作为后端模型相比,cuML 等加速机器学习库的速度提升高达 12 倍,且所需的代码更改最少。

结束语 

因果推理可以帮助企业更好地了解其产品的关键组件,但传统上,利用专注于预测的机器学习创新成果具有挑战性。

双机器学习等新技术正在弥合这一差距,使企业能够使用计算密集型机器学习算法来解决因果关系推理问题。随着数据集的增长,基于 CPU 的基础设施难以满足生产力需求。

使用加速计算库 RAPIDS cuML 与 DoubleML,可以将几小时的等待时间缩短为几分钟,并尽可能减少代码更改。

 

要了解有关加速机器学习的更多信息,请访问 cuML 文档

 

 

标签