• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    數據科學

    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 文檔

    ?

    ?

    0

    標簽

    人人超碰97caoporen国产