Xgboost: Apakah ada cara untuk menerjemahkan model XGBoost ke model Weka untuk mendapatkan kinerja yang lebih baik dalam inferensi?

Dibuat pada 1 Jul 2016  ·  3Komentar  ·  Sumber: dmlc/xgboost

Hai,
Apakah ada cara untuk menerjemahkan model XGBoost ke model Weka?

Saya memiliki masalah aneh dengan efisiensi model xgboost pada waktu inferensi.

Saya mengatur jumlah putaran/pohon menjadi 1, kedalaman pohon menjadi 108 dan saya menggunakan paket jvm untuk masalah klasifikasi multi-kelas.

Memprediksi 6000 instans dengan pohon XGBoost ketika saya membuat instans satu per satu termasuk pembuatan DMatrix dan inferensi/prediksi membutuhkan waktu 380 md.
(tidak termasuk pembuatan DMatrix, dibutuhkan 180 ms).

// 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;

Namun, ketika saya memprediksi/menyimpulkannya menggunakan hutan acak Weka, dibutuhkan hanya 30 ms.

Untuk jumlah putaran(pohon) = 50, hutan acak WEKA memprediksi 6000 kejadian dalam 922 md dan pohon XGBoost memprediksinya dalam 3429 md.

Masalahnya adalah akurasi pohon XGBoost jauh lebih baik daripada hutan acak. Namun, waktu inferensi juga sangat penting dalam kasus saya.

Jadi, apakah ada cara untuk mengonversi model XGBoost ke model WEKA?!
Atau apakah Anda tahu bagaimana saya bisa membuat prediksi lebih cepat?! Apakah masalah efisiensi karena memanggil perpustakaan asli dari kode sumber Java?

Terima kasih.

Komentar yang paling membantu

Itu terutama karena antarmuka saat ini tidak dirancang untuk penilaian online (per instance) melainkan untuk penilaian batch. Overhead pembuatan DMatrix akan mengambil alih untuk penilaian online. Kami membutuhkan antarmuka penilaian online khusus untuk kasus itu.

Semua 3 komentar

Dari tabel benchmark di https://github.com/komiya-atsushi/xgboost-predictor-java : prediksi Java murni hingga 4 kali lipat lebih cepat! Pasti ada sesuatu yang sangat tidak efisien di suatu tempat di antarmuka xgboost Java ... Saya sedang mempertimbangkan penggunaan penilaian berbasis Java di beberapa titik, tetapi saya lebih suka untuk tidak bergantung pada proyek turunan lain untuk itu.

Itu terutama karena antarmuka saat ini tidak dirancang untuk penilaian online (per instance) melainkan untuk penilaian batch. Overhead pembuatan DMatrix akan mengambil alih untuk penilaian online. Kami membutuhkan antarmuka penilaian online khusus untuk kasus itu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat