Xgboost: Есть ли способ перевести модели XGBoost в модели Weka, чтобы повысить производительность при выводе?

Созданный на 1 июл. 2016  ·  3Комментарии  ·  Источник: dmlc/xgboost

Привет,
Есть ли способ перевести модели XGBoost в модели Weka?

У меня странная проблема с эффективностью моделей xgboost во время вывода.

Я установил количество раундов / деревьев на 1, глубину деревьев на 108, и я использую jvm-package для задачи классификации нескольких классов.

Прогнозирование 6000 экземпляров с помощью деревьев XGBoost, когда я создаю экземпляры один за другим, включая создание DMatrix и вывод / прогнозирование, занимает 380 мс.
(без создания DMatrix требуется 180 мс).

// creating a DMatrix with one row and the numberOfFeatures
// columns
double startTime = System.nanoTime();
DMatrix testInstance = new DMatrix(testingInstance, 1, numberOfFeatures, 9999F);
// predict just one instance
float[][] predicts = booster.predict(testInstance);
predictionTime += (System.nanoTime() - startTime) / 1e6;

Однако, когда я предсказываю / делаю вывод с помощью случайных лесов Weka, это занимает всего 30 мс.

Для числа раундов (деревьев) = 50 случайные леса WEKA предсказывают 6000 экземпляров за 922 мс, а деревья XGBoost предсказывают их за 3429 мс.

Проблема в том, что точность деревьев XGBoost намного лучше, чем случайных лесов. Однако время вывода также очень важно в моем случае.

Итак, есть ли способ конвертировать модели XGBoost в модели WEKA ?!
Или ты хоть представляешь, как я могу делать прогнозы быстрее ?! Проблема эффективности из-за вызова собственных библиотек из исходного кода Java?

Спасибо.

Самый полезный комментарий

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

Все 3 Комментарий

Из таблицы тестов на https://github.com/komiya-atsushi/xgboost-predictor-java : чистое предсказание Java на 4 порядка быстрее! Где-то в Java-интерфейсе xgboost должно быть что-то ужасно неэффективное ... В какой-то момент я подумываю об использовании оценки на основе Java, но я бы предпочел не зависеть в этом от другого побочного проекта.

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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги