【问题标题】:Use/productionize trained machine learning model in client-side javascript?在客户端 javascript 中使用/生产训练有素的机器学习模型?
【发布时间】:2017-07-15 21:38:10
【问题描述】:

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

但我很便宜,我不想运行服务器来接收来自 chrome 扩展的数据、生成预测并将其发送回用户。我突然想到:为什么不找到一些方法来序列化训练好的模型或其他东西,并在客户端完成这一切。

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

可悲的是,似乎没有 PMML 库或类似的 javascript 库。

所以,我求助于互联网的智慧。是否有任何其他方法可以生产可在客户端 javascript 上使用的 ML 模型?或者这些选项真的只是(1)运行服务器,(2)为 JS 编写一个 PMML 库,(3)没有第三个选项?

谢谢!

【问题讨论】:

    标签: javascript google-chrome-extension machine-learning pmml dev-to-production


    【解决方案1】:

    您的模型是否已经以 PMML 数据格式提供?

    如果是,那么:

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

    因此,您将拥有一个独立的 JavaScript 模型对象,该对象公开模型模式查询和评分 API,类似于 JPMML-Evaluator 库。

    【讨论】:

    • 哦,这很聪明。谢谢你。在我训练它们之后,我当然可以让我的模型使用 PMML,我很确定 R/sklearn,无论我最终使用哪种格式,都可以很好地适应这种格式。
    • 这是一个非常有趣/鼓舞人心的话题。在第 1 步中,翻译后的 Java 源代码将依赖 JPMML-Evaluator API 来完成繁重的工作(例如,矢量点积、各种内置函数和规范化)。这在第 2 步中没有问题,因为 JPMML-Model 和 JPMML-Evaluator 库都基于标准 JDK API(即没有花哨的 3rd 方依赖项),这对 GWT 非常友好。
    猜你喜欢
    • 2020-05-06
    • 2017-09-21
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多