使用 R 进行数据库内分析:第 I 部分

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

...这是我们 R 博客系列中的第一篇文章。

为什么 R 如此受欢迎?

在过去的几年里,用于统计数据处理的开源脚本语言“R”在市场上获得了广泛关注。即使是该领域的老牌供应商也感受到了“R”的逆风。与 CRAN 档案一起,通过下载所谓的“包”来使用最新的分析算法扩展“R”。今天 CRAN 服务器上列出了 5000 多个包。并非所有人都具有相同的质量水平,但为什么不试一试 - 它是免费的!

R 包涵盖了广泛的领域。从经典统计学、生命科学、信号处理、机器学习到 Open Street Map 的实时链接 - 仅举几例。它还具有强大的可视化功能。

因此,许多学生在大学期间学习 R,并希望在开始数据分析职业生涯时坚持自己最擅长的知识。 R 可被视为统计数据分析的“一站式服务”——但在大规模数据处理方面存在问题!

R的局限性

主要缺点是当数据集越来越大时,R 很快就会达到内存限制。此外,R 代码的执行是单线程的,以并行方式处理大型数据集并不是 R 的最佳用例。

有一些包可以让 R 并行执行计算。然而,这给编写和维护 R 代码的人带来了巨大的负担——他们通常是应该展示结果而不是开发技术上复杂的代码的人。

R 与 MPP 系统的结合

为了克服前面提到的一些限制,将 R 代码执行嵌入到大规模并行处理引擎 (MPP-Engines) 中是一件直截了当的事情。分析 几十年来,关系型数据库一直遵循 MPP 原则,结合这两种技术是在许多领域取得成功的关键,例如:

  • 数据存储和访问——这些领域是数据库的基础。
  • 大规模并行处理——在 ParStream 等数据库产品中完美实现。
  • 与现有工具集成——R 执行由 SQL 命令触发。因此,许多前端工具将能够触发在 R 中实现的分析算法,并使用现有工具显示/可视化结果。

R 在分析过程的哪个阶段最有益?

许多数据分析师或数据科学家遵循 CRISP 过程中定义的步骤。它包括从业务理解到将分析解决方案部署到生产环境的步骤。 “跨行业数据挖掘标准流程”(CRISP) 流程的一个关键观察是迭代 - 不断重复步骤以获得更好的结果,甚至导致不再考虑任何想法,因为结果并不乐观。为了通过数据分析获得竞争优势,这一切都是关于“Fail Forward”或“Fail Fast”。

在处理大型数据集时,这有两个主要含义。首先,技术堆栈应该由一套集成的工具组成。其次,使用此工具堆栈的分析师应该熟悉所有工具,以便为未来的任务选择正确的工具。

在更详细地查看 CRISP 过程时,R 可以在构建预测模型和模型部署(又名“评分”)的步骤中增加巨大的优势。可以使用 R 来理解新数据集和准备用于估计模型参数的数据集,但是在构建分析数据库时考虑了这个用例:例如,摄取大量数据并允许快速访问数据用于数据分析(不同值的计数、总和、空值等)。

准备数据集以用作分析过程的输入——这仍然会消耗分析师的大量时间——通常非常适合 SQL 集处理方法。数据准备还意味着过滤器的使用——这也是分析数据库可以轻松地大规模完成的事情。创建多个数据集——例如,在同一个基表上定义多个视图——非常好地支持预测模型的演变(k 折交叉验证等)。所有这些都可以大规模完成,而无需在不同系统之间移动大量数据。使处理大数据集成为一项简单的任务。

让我们进一步考虑一下。与其将数据移动到分析(将数据提取到文件中以便稍后在 R 中提取),不如将分析移动到数据(使用 R 在数据库中创建用户定义的函数)。能够在同一系统上将 SQL 执行与 R 处理并行执行联系起来,这对分析团队来说意义重大。

通过消除数据科学团队的数据处理负担并利用分析数据库的并行处理能力,每个数据科学家每天都可以通过分析过程进行更多的迭代。这也转化为要同时评估的更多分析性想法。这也意味着分析师可以专注于改进模型或更好地验证模型,因为当使用 SQL 的强大功能来定义要处理的分析数据集时,这将成为一项简单的任务。此外,将分析结果存储在同一个系统中,使得当今业务流程中使用的工具可以轻松访问结果。