生产中的 R

数据挖掘 r 预测建模 计分
2022-01-22 10:40:28

我们中的许多人都非常熟悉在可重现但非常有针对性的临时分析中使用 R。鉴于 R 目前是每个特定领域的世界级专家的尖端科学方法的最佳集合,并且鉴于 R 中存在大量用于数据 io 的库,将其应用程序扩展到实时生产环境似乎很自然决策。

因此我的问题是:

  • 你们中是否有人使用纯 R 投入生产(我知道闪亮、yhat 等,但听到纯 R 会很有趣);
  • 是否有关于将 R 构建到一些严肃的实时决策管道(例如信用评分)的主题的好书/指南/文章;
  • 如果您认为这根本不是一个好主意,我也想听听;
3个回答

R 及其大部分 CRAN 模块均使用 GPL 进行许可。

在许多公司中,如果你提议在生产中使用任何 GPL 的东西,法律部门会发疯……这不合理,但你会看到他们喜欢 Apache,讨厌 GPL。在投入生产之前,请确保与法律部门协商一致。(恕我直言,您可以安全地修改后的代码用于内部产品。将 R 集成到您的商业产品中并将其分发给其他人是非常不同的。但不幸的是,许多法律部门试图禁止所有使用 GPL。)

除此之外,除非调用隐藏在其中的 Fortran 代码,否则 R 通常真的很慢。当您仍在尝试弄清楚该怎么做时,这很好。但对于生产,您可能需要最高性能,并与您的服务完全集成。如果 R 是您的用例的最佳选择,请对自己进行基准测试。

关于 R 的性能问题(我知道 R 的拥护者会因为我这样说而对我投反对票……):

Morandat, F.、Hill, B.、Osvald, L. 和 Vitek, J. (2012)。评估 R 语言的设计。在 ECOOP 2012 中——面向对象编程(第 104-131 页)。施普林格柏林海德堡。

(来自普渡大学的 TraceR/ProfileR/ReactoR 人员,他们现在正在研究 fastR,试图在 JVM 上执行 R 代码?)状态:

在这些基准测试中,R 平均比 C 慢 501 倍,Python 慢 43 倍。

和:

观察。R 显然很慢并且内存效率低下。比其他动态语言要多得多。这主要是由于语言特性(按值调用、极端动态、惰性求值)的组合以及缺乏有效的内置类型。我们相信,通过一些努力,应该可以改善时间和空间的使用,但这可能需要完全重写实现

很抱歉打破这个消息。现在是我的研究,但它与我的观察一致。

代码执行速度很少成为问题。业务中重要的速度几乎总是设计、部署和维护应用程序的速度。有经验的程序员可以在必要时进行优化,以足够快地执行代码。在这些情况下,R 在生产中会很有意义。

在执行速度成为问题的情况下,您已经可以找到优化的 C++ 或一些这样的实时决策引擎。因此,您的选择是集成 R 流程,或者将您需要的位添加到引擎中。后者可能是唯一的选择,不是因为 R 的速度,而是因为您没有时间合并任何外部进程。如果公司一无所有,我无法想象每个人都会说“让我们在 R 中构建我们的时间关键型实时引擎,因为有很棒的统计库”。

我将从我的企业经验中举几个例子,我在生产中使用 R:

  • 交付处理尚未/尚未制度化的数据的闪亮应用程序。我通常会加载已经处理过的数据框并使用 Shiny 来显示不同的图形和图表。计算量很小。
  • 决策分析需要大量使用高级库(mcclust、机器学习),但需要每天或更长时间才能完成。在这种情况下,没有理由使用任何其他语言。我已经在 R 中完成了原型设计,所以我最快和最好的选择是将东西保留在那里。

在与实时 C++ 决策引擎集成时,我没有将 R 用于生产。问题:

  • 产生 R 进程并整合结果的额外复杂层
  • C++ 中提供了一个合适的机器学习库(Waffles)

后一种情况的警告:我仍然使用 R 来生成训练文件。

在处理 R 的性能、内存等问题时,数据科学家已经能够使用一个名为 Saturn Cloud 的免费工具,它内置了 RStudio。你可以启动一台运行 R 的机器,它有超过一百个内核、4TB 的 RAM,或者多个 V100 GPU 或利用 futures R 包来利用 RAM 和处理器。此外,启动 saturn-rstudio-tensorflow 图像以使用 GPU——该图像是修改版的 rocker/ml。有了它,您可以在 GPU 上使用 TensorFlow 和 Keras R 包。

创建资源时,您可以选择工作区将使用的 IDE 和硬件。通过选择 RStudio Server 资源,它默认使用带有最新版本 R 的图像以及 tidyverse 和 data.table 等常用库(您也可以安装更多库)。

土星云