0

我已经使用 Weka Java 使用机器学习实现了分类算法。我想在 RasberryPi 上部署经过训练的模型进行测试。我希望经过训练的模型每次收到新数据并进行预测时都会更新?有没有办法用 weka Java 做到这一点?你能分享你的想法如何进行吗?

提前致谢

4

2 回答 2

0

好吧,我很无聊,所以我会尽力提供帮助,因为这是一个棘手且常见的问题,因为越来越多的人将机器学习集成到他们的正常开发流程中......尽管这对于 SO 来说有点宽泛。

我会问自己几个问题:

  1. 为了保持与它为您执行的任务的相关性,该特定模型需要多久更新一次?

通常,在将每行新数据写入您从中获取训练数据的地方时重新训练分类模型将是疯狂的。所以我会考虑一下。

  1. 构建模型需要多长时间,随着越来越多的训练数据堆积,构建模型需要多长时间?

  2. 您将训练数据保存在哪里,如何快速标记它,以便每次获得新数据时都能够重新训练模型?或者它不是典型的监督分类模型?

我问这个是因为,根据我所做的,你训练的数据将进入某种数据库、文件系统或其他任何东西,如果你用来构建模型的 Java 代码从磁盘上的标准位置读取,或者一个数据库,重建模型并不是那么难......它可以是 CRON 作业或 jenkins 作业或重建模型的任何东西(读取数据,构建模型,将模型写入磁盘,部署模型)。您希望使用模型的进程能够从配置中读取它,并且您希望构建模型的代码能够配置训练数据语料库的位置。一个简单的 Java 属性文件可能就足够了。

  1. 每次构建新模型时都需要重新处理所有数据吗?这也是一个常见问题,有时通过使用您用于分类的模型版本标记每个分类项目来解决。在这种情况下,您可以设置一个“重新处理管道”来查找旧的分类结果并将它们泵入新模型。这会根据您的数据处理方式(重复数据删除策略、历史记录等)打开一罐蠕虫,因此请考虑一下。

我对 Raspberry pi 一无所知,但这部分似乎无关紧要,因为这确实是一个软件架构问题。我完成自动部署部分的一种方法是使用 Jenkins 和 PUPPET 之类的东西来推动/拉动模型以将其用于机器上。在我过去,我将 NLP 模型放在带有 puppet 的 Hadoop 和 Storm 集群上,Java 代码从所有节点上的静态 NFS 挂载中获取它们。ETC.....

高温高压

于 2017-11-15T01:18:04.843 回答
0

查看 Weka 开发人员提供的MOA(大规模在线分析)包。它基本上可以满足您的需求-增量更新训练模型(=“在线”)。

据我所知,MOA (免费)作为独立产品或 Weka 的扩展提供。

于 2017-11-16T09:40:48.447 回答