这是一个我一直在考虑的有点疯狂的想法。我在考虑为某些网络内容(一个专门的子集)构建一个分类器,然后以Chrome扩展的形式提供给用户。(所以:用户访问网页,点击Chrome扩展上的按钮,扩展程序应用预训练模型生成预测,并将结果呈现给用户。)
但我很节俭,不想运行一个服务器来接收来自Chrome扩展的数据,生成预测,并将其发送回给用户。我突然想到:为什么不找到某种方法来序列化训练好的模型或其他什么,直接在客户端完成所有操作呢?
所以,如果我最终拟合了一个非常简单的模型,比如逻辑回归或类似的东西,那么将其转移到客户端就很容易了。最终,训练好的逻辑回归模型只不过是将特征映射到预测的普通数学函数,就像一行代码一样。我猜这对一些更复杂的模型也是成立的(如线性SVM)。在这种情况下,Chrome扩展可以完成所有数据清理等工作,然后生成预测只是计算一个点积的问题。但如果我使用的是随机森林或类似的东西,情况就不是这样了。
遗憾的是,似乎没有针对JavaScript的PMML库或类似的东西。
所以,我求助于互联网的智慧。是否有其他方法可以在客户端JavaScript上部署机器学习模型?还是选项真的只有(1)运行服务器,(2)为JS编写PMML库,(3)没有第三种选择?
谢谢!
回答:
您的模型是否已经以PMML数据格式可用?
如果是,那么:
- 将PMML转换为Java源代码。这使用JPMML库很容易实现。
- 将Java源代码转换为JavaScript源代码。这使用Google Web Toolkit更加容易实现。
结果,您将拥有一个自包含的JavaScript模型对象,该对象暴露类似于JPMML-Evaluator库的模型模式查询和评分API。