Xgboost: Pendekatan (dokumentasi) ambiguitas

Dibuat pada 25 Nov 2015  ·  3Komentar  ·  Sumber: dmlc/xgboost

Hai, Saya mencoba memahami pendekatan xgboost untuk pelatihan model. Maksud saya berikut ini. Saya bisa menggunakan Booster dan memanggil xgb.train atau saya bisa menggunakan sklearn API untuk menggunakan Classifier/Regressor. Masalah yang dalam pendekatan sebelumnya (menurut dokumentasi xgboost) saya perlu menentukan jumlah iterasi peningkatan dan tidak menentukan jumlah pohon apa pun, sementara di kemudian hari saya menentukan jumlah pohon yang ditingkatkan agar sesuai, tetapi saya tidak punya opsi apa pun untuk menentukan jumlah iterasi yang ditingkatkan. Apakah jumlah iterasi boosting adalah jumlah estimator? Bisakah seseorang mengklarifikasi ini?

Jika saya membaca kode dengan benar, API sklearn menggunakan booster internal, jadi saya dapat menetapkan clf._Booster ke xgb.train saya di mana n_estimators sama dengan jumlah putaran yang ditingkatkan. Dan, saya tidak perlu menelepon clf.fit jika tugas tersebut telah dibuat. Apakah saya benar? Jika demikian, dapatkah dokumentasi disesuaikan untuk mengatakan secara eksplisit bahwa n_estimators adalah apa yang digunakan num_rounds untuk xgb.train.

Akan menyenangkan untuk memiliki dokumentasi yang menjelaskan dengan tepat hubungan antara pendekatan booster tingkat rendah dan API sklearn, saya mengerti bahwa nanti akan memanggil yang pertama, tetapi alangkah baiknya untuk memahami bagaimana hal itu dilakukan dan mengklarifikasi ini dalam dokumentasi untuk menghindari kebingungan untuk akhir -pengguna.

Komentar yang paling membantu

Hai Vladimir,

Boosting, secara umum, adalah meta-algoritma yang secara iteratif (atau dalam "putaran") melatih urutan pembelajar yang sederhana/lemah (atau penaksir) sedemikian rupa sehingga seluruh kombinasi berkinerja lebih baik. Mungkin ada berbagai jenis pembelajar yang lemah, tidak hanya pohon. Misalnya, xgboost memiliki pohon dan (digeneralisasi) opsi model linier. Anehnya, pelajar yang lemah di xgboost ini disebut sebagai "penguat", dan seluruh model kombinasi disebut sebagai "peserta didik". Itu sedikit membingungkan saya ketika saya awalnya membaca dokumen dan kode xgboost, karena agak terbalik dengan jejak mental saya sendiri tentang terminologi tersebut.

Meskipun akan menyenangkan untuk memiliki nomenklatur yang konsisten antara proyek berbeda yang terkait dengan materi pelajaran yang sama dan memiliki dokumentasi tautan silang berkualitas tinggi yang konsisten, itu tidak selalu layak atau mudah dipelihara, terutama dalam proyek sumber terbuka. Pengguna pemula cenderung kebanyakan menggunakan satu antarmuka. Pengguna yang akrab dengan materi pelajaran akan dengan mudah dapat memetakan kesamaan. Dan siapa pun yang peduli dengan detail tingkat rendah, mereka biasanya cukup peduli untuk membaca kodenya.

Adapun pertanyaan spesifik Anda, Anda membaca dengan benar bahwa parameter n_estimators dalam kode pembungkus sklearn [1] memetakan ke num_boost_round di dalam kereta [2]. Namun, mengapa sebagai pengguna akhir Anda ingin meretas objek pembungkus sklearn seperti itu? Untuk melakukannya dengan cara yang terkendali, Anda harus mengenal kode pembungkus dengan cukup baik.

[1] https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2] https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12

Semua 3 komentar

Hai Vladimir,

Boosting, secara umum, adalah meta-algoritma yang secara iteratif (atau dalam "putaran") melatih urutan pembelajar yang sederhana/lemah (atau penaksir) sedemikian rupa sehingga seluruh kombinasi berkinerja lebih baik. Mungkin ada berbagai jenis pembelajar yang lemah, tidak hanya pohon. Misalnya, xgboost memiliki pohon dan (digeneralisasi) opsi model linier. Anehnya, pelajar yang lemah di xgboost ini disebut sebagai "penguat", dan seluruh model kombinasi disebut sebagai "peserta didik". Itu sedikit membingungkan saya ketika saya awalnya membaca dokumen dan kode xgboost, karena agak terbalik dengan jejak mental saya sendiri tentang terminologi tersebut.

Meskipun akan menyenangkan untuk memiliki nomenklatur yang konsisten antara proyek berbeda yang terkait dengan materi pelajaran yang sama dan memiliki dokumentasi tautan silang berkualitas tinggi yang konsisten, itu tidak selalu layak atau mudah dipelihara, terutama dalam proyek sumber terbuka. Pengguna pemula cenderung kebanyakan menggunakan satu antarmuka. Pengguna yang akrab dengan materi pelajaran akan dengan mudah dapat memetakan kesamaan. Dan siapa pun yang peduli dengan detail tingkat rendah, mereka biasanya cukup peduli untuk membaca kodenya.

Adapun pertanyaan spesifik Anda, Anda membaca dengan benar bahwa parameter n_estimators dalam kode pembungkus sklearn [1] memetakan ke num_boost_round di dalam kereta [2]. Namun, mengapa sebagai pengguna akhir Anda ingin meretas objek pembungkus sklearn seperti itu? Untuk melakukannya dengan cara yang terkendali, Anda harus mengenal kode pembungkus dengan cukup baik.

[1] https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2] https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12

apakah ada masalah yang sama untuk R?

Pada Kam, 26 Nov 2015 pukul 11:39, Vadim Khotilovich <
[email protected]> menulis:

Hai Vladimir,

Boosting, secara umum, adalah meta-algoritma yang secara iteratif (atau di)
"putaran") melatih urutan pelajar sederhana/lemah (atau penaksir) sedemikian rupa
cara agar seluruh kombinasi berkinerja lebih baik. Mungkin ada berbagai
jenis pembelajar yang lemah, tidak hanya pohon. Misalnya, xgboost memiliki pohon dan
(umum) pilihan model linier. Anehnya, pelajar yang lemah ini dalam
xgboost disebut sebagai "penguat", dan seluruh model kombinasi adalah
disebut sebagai "pelajar". Itu sedikit membingungkan saya ketika saya awalnya
membaca dokumen dan kode xgboost, karena agak terbalik dengan mental saya sendiri
jejak terminologi.

Meskipun alangkah baiknya untuk memiliki nomenklatur yang konsisten antara yang berbeda
proyek yang terkait dengan materi pelajaran yang sama dan memiliki nilai tinggi yang konsisten
dokumentasi cross-link berkualitas, tidak selalu layak atau mudah
dipelihara, terutama dalam proyek-proyek open source. Pengguna pemula cenderung
kebanyakan menggunakan satu antarmuka. Pengguna yang sangat akrab dengan subjek
materi akan dengan mudah dapat memetakan kesamaan. Dan siapa pun yang peduli
tentang detail tingkat rendah, mereka biasanya cukup peduli untuk membaca kode.

Adapun pertanyaan spesifik Anda, Anda membaca dengan benar bahwa n_estimator
parameter dalam kode pembungkus sklearn [1] memetakan ke num_boost_round di dalam
kereta api [2]. Namun, mengapa sebagai pengguna akhir Anda ingin meretas sklearn
pembungkus objek seperti itu? Untuk melakukannya dengan cara yang terkendali, Anda harus
untuk mengenal kode pembungkus dengan lebih baik.

[1]
https://github.com/dmlc/xgboost/blob/2859c190cd0d168df25e2a7ea2b1fd5211ce94f0/python-package/xgboost/sklearn.py#L185
[2]
https://github.com/dmlc/xgboost/blob/83e61bf99ec7d01607867b4e281da283230883b1/python-package/xgboost/training.py#L12


Balas email ini secara langsung atau lihat di GitHub
https://github.com/dmlc/xgboost/issues/651#issuecomment -159956213.

@khotilov , terima kasih atas penjelasannya. Itu cukup untuk kebutuhan saya dan saya akan menutup tiketnya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat