如何将R中的随机森林模型导出为Excel VBA使用,且无需API调用

问题:

我在R中训练了一个随机森林模型。我需要将这个模型部署在一个独立的Excel工具中,该工具将被销售网络中的350人使用,用于根据用户在电子表格中输入的数据进行实时预测。

我该如何做到这一点?

限制条件:

  • 不能要求用户在本地计算机上安装R。

  • 不能使用服务器(物理或云端)提供评分API。

我已经做了什么?

1. PMML

我可以将模型导出为PMML格式(XML结构)。通过研究,我发现Python和Java中有用于加载和执行PMML输入的库。然而,我没有找到在VBA/VB中实现的任何东西。

2. Zementis

我调查了一种名为Zementis的解决方案,它提供了一个Excel插件来部署PMML模型。然而据我了解,这需要对云服务器(例如AWS)进行Web服务调用,实际的模型执行发生在那里。我的IT安全部门不会允许这样做。

3. 其他

最常见的建议似乎是调用R来加载模型并运行预测函数。如上所述,这不是一个可行的选项。

详细背景:

随机森林模型在R中训练,包含约30个变量。该模型用于在销售过程中推荐“个性化”的产品价格。

模型需要分发给销售网络,约有350名用户。业务的偏好是将模型集成到销售团队当前用于计算交易盈利能力的现有电子表格工具中。

这意味着我需要以一种可以实现到Excel VBA中的方式导出模型。

鉴于时间限制,实施需要是自包含的,不需要IT基础设施或额外的应用程序安装。我们正在与组织的IT团队合作开发基于服务器的解决方案,但他们的部署时间表是12个月以上,这意味着我们短期内需要一个战术解决方案。


回答:

这里是一种获取树“规则”的方法(使用mtcars数据集的示例)

install.packages("randomForest")library(randomForest)head(mtcars)set.seed(1)fit <- randomForest(mpg ~ ., data=mtcars, importance=TRUE, proximity=TRUE)print(fit)## 查看变量重要性:importance(fit)# 打印森林中每棵树的规则install.packages("rattle")library(rattle)printRandomForests(fit)

使用500棵树的规则可能不现实,但也许你可以在VBA中实现100棵树,然后对结果取平均值(对于连续响应)或预测在所有树中得票最多的类别(对于分类响应)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注