Есть ли способ обновить обученную модель машинного обучения в Weka, делая прогнозы для новых данных (Java)?

Я реализовал алгоритмы классификации, используя машинное обучение, используя Weka Java. Я хотел бы развернуть обученную модель на RasberryPi для тестирования. Я хочу, чтобы обученная модель обновлялась каждый раз, когда она получает новые данные и делает прогнозы?? Есть ли способ сделать это с помощью weka Java?? Не могли бы вы поделиться своими мыслями, как поступить??

Заранее спасибо

2 ответа

Ознакомьтесь с пакетом MOA (Massive Online Analysis) от разработчиков Weka. Он делает в основном то, что вы хотите - постепенное обновление модели обучения (= "онлайн").

Насколько я помню, MOA (свободно) доступен как отдельный продукт или как дополнение к Weka.

Что ж, мне скучно, поэтому я постараюсь помочь, поскольку это сложная и распространенная проблема, так как все больше и больше людей интегрируют машинное обучение в свои обычные процессы разработки... даже если это немного для SO.

Я хотел бы задать себе несколько вопросов:

  1. Как часто необходимо обновлять эту конкретную модель, чтобы сохранить соответствие задаче, которую она выполняет для вас?

Как правило, переподготовка модели классификации, когда каждая новая строка данных записывается в место, откуда вы получаете данные обучения, была бы безумной. Так что я бы подумал об этом.

  1. Сколько времени потребуется, чтобы построить модель, и сколько времени потребуется, чтобы построить ее, когда все больше и больше обучающих данных накапливаются?

  2. Где вы храните свои тренировочные данные и как вы их так быстро маркируете, чтобы иметь возможность переучивать модель каждый раз, когда получаете новые данные? Или это не типичная контролируемая классификационная модель?

Я спрашиваю об этом, потому что из того, что я сделал, данные, с которыми вы тренируетесь, попадут в какую-то базу данных, или в файловую систему, или что-то еще, и если код Java, который вы используете для построения модели, читает из стандартного расположения на диске или БД, перестроить модель не так уж и сложно... это может быть задание CRON, задание Дженкинса или что угодно, чтобы перестроить модель (чтение данных, сборка модели, запись модели на диск, развертывание модели). Вы захотите, чтобы процесс, использующий модель, мог читать ее из конфигурации, и вы захотите, чтобы код, который строит модель, мог конфигурировать местоположение корпуса обучающих данных. для этой части может быть достаточно простого файла свойств Java.

  1. Вам нужно будет повторно обрабатывать все ваши данные каждый раз, когда вы строите новую модель? Это также распространенная проблема, иногда решаемая путем пометки каждого классифицированного элемента версией модели, которую вы использовали для ее классификации. В этом случае вы можете настроить "конвейер повторной обработки", который ищет старые результаты классификации и прокачивает их через новую модель. Это открывает банку червей в зависимости от того, как вы собираете данные (дедупликация, хранение истории и т. Д.), Так что подумайте об этом.

Я вообще ничего не знаю о Raspberry pi, но эта часть кажется неактуальной, поскольку это действительно проблема архитектуры программного обеспечения. Один из способов автоматизированного развертывания - использовать Jenkins и что-то вроде PUPPET для переноса / извлечения модели на машину, на которой она будет использоваться. В прошлом я помещал модели NLP в кластер Hadoop и Storm с puppet, а java-код собирает их со статического монтирования NFS, которое находится на всех узлах. так далее.....

НТН

Другие вопросы по тегам