在客户端JavaScript中使用/部署训练好的机器学习模型?

这是一个我一直在考虑的有点疯狂的想法。我在考虑为某些网络内容(一个专门的子集)构建一个分类器,然后以Chrome扩展的形式提供给用户。(所以:用户访问网页,点击Chrome扩展上的按钮,扩展程序应用预训练模型生成预测,并将结果呈现给用户。)

但我很节俭,不想运行一个服务器来接收来自Chrome扩展的数据,生成预测,并将其发送回给用户。我突然想到:为什么不找到某种方法来序列化训练好的模型或其他什么,直接在客户端完成所有操作呢?

所以,如果我最终拟合了一个非常简单的模型,比如逻辑回归或类似的东西,那么将其转移到客户端就很容易了。最终,训练好的逻辑回归模型只不过是将特征映射到预测的普通数学函数,就像一行代码一样。我猜这对一些更复杂的模型也是成立的(如线性SVM)。在这种情况下,Chrome扩展可以完成所有数据清理等工作,然后生成预测只是计算一个点积的问题。但如果我使用的是随机森林或类似的东西,情况就不是这样了。

遗憾的是,似乎没有针对JavaScript的PMML库或类似的东西。

所以,我求助于互联网的智慧。是否有其他方法可以在客户端JavaScript上部署机器学习模型?还是选项真的只有(1)运行服务器,(2)为JS编写PMML库,(3)没有第三种选择?

谢谢!


回答:

您的模型是否已经以PMML数据格式可用?

如果是,那么:

  1. 将PMML转换为Java源代码。这使用JPMML库很容易实现。
  2. 将Java源代码转换为JavaScript源代码。这使用Google Web Toolkit更加容易实现。

结果,您将拥有一个自包含的JavaScript模型对象,该对象暴露类似于JPMML-Evaluator库的模型模式查询和评分API。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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