Я пытаюсь построить составные ансамблевые модели с использованием API-интерфейсов H2O Java.
Для этого я обучил 2 модели
- Модель GBM
- Модель DRF
Я экспортировал эти модели как в формате Mojo, так и в двоичном формате. Для экспорта моделей я использовал следующий фрагмент кода:
Для экспорта в формат Mojo:
water.api.ModelsHandler modelsHandler = new ModelsHandler();
water.api.StreamingSchema streamingSchema = modelsHandler.fetchMojo(3, modelsV3); //water.api.schemas3.ModelsV3
Для экспорта в двоичном формате:
water.api.ModelsHandler modelsHandler = new ModelsHandler();
modelsHandler.exportModel(3, modelExport); //water.api.schemas3.ModelExportV3
Я также экспортировал данные удержания перекрестной проверки, поскольку они потребуются позже для обучения составных моделей ансамбля.
Предположим, что имена моих экспортированных моделей и имена их удерживаемых данных выглядят следующим образом:
Имя модели: StackGBMReg1 Имя CVData: cv_holdout_prediction_StackGBMReg1
Имя модели: StackDRFReg1 Имя CVData: cv_holdout_prediction_StackDRFReg1
Обучение составным ансамблевым моделям
Затем я импортирую эти модели и их данные CV позже на сервер H2O для обучения составных моделей Ensemble. Вот фрагмент кода для этой операции:
Чтобы импортировать данные удержания:
ImportFilesV3 importFile = h2o.importFiles(workingDir + fileName); //fileName: cv_holdout_prediction_StackGBMReg1 or DRFReg1 one.
Чтобы импортировать модель:
ModelsHandler modelsHandler = new ModelsHandler();
water.api.schemas3.ModelsV3 importedModel = modelsHandler.importModel(3, modelImport); //water.api.schemas3.ModelImportV3
Я получаю следующую ошибку при попытке импортировать модели Mojo.
H2OException: Error while importing model : StackGBMReg1.zip
at ImportAndScore.importModel(ImportAndScore.java:306)
at ImportAndScore.main(ImportAndScore.java:61)
Caused by: java.lang.IllegalArgumentException: Missing magic number 0x1CED at stream start
at water.AutoBuffer.<init>(AutoBuffer.java:287)
at hex.Model.importBinaryModel(Model.java:2380)
at water.api.ModelsHandler.importModel(ModelsHandler.java:209)
at ImportAndScore.importModel(ImportAndScore.java:302)
... 1 more
Согласно ответу, который я получил на форуме h2o, импорт моделей Mojo не поддерживается. Я нахожу это действительно странным.
Чтобы решить эту проблему, я импортировал бинарные модели, которые оказались успешными. Затем обучил составных ансамблевых моделей, которые у меня отлично сработали.
Мои вопросы:
1. Since, mojo Model import is not working using ModelsHandler.importModel(), is there another API available or work around which can help me to import Mojo Model in H2O?
2. Can we convert, POJO or MOJO models into binary Model for import purpose?
3. As per last reply for h2o, binary models are not backward compatible. So, if I upgrade H2O later, my older trained models will not work for training new stacked ensemble models. Actually, it will fail at import step itself.
a. So, is there a way to use the binary models without having the backward compatibility issue?
b. If binary models are the only way to go, then is my approach right for training stacked Ensemble models(using previously exported/saved models)?
c. Am I likely to face any other issue with binary models in future which I dont for see now?
Моя главная забота - избавиться от проблемы обратной совместимости. Если есть какой-то способ справиться с этим, это действительно поможет моей работе. Поскольку я использую Java-код, я бы не отказался использовать любой внутренний h2o api, который напрямую не отображается.
Обратите внимание, что я не говорю о загрузке моделей MOJO для целей оценки. Я понимаю, что мы можем легко использовать модели Mojo для оценки по этой ссылке: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/productionizing.html