Evalml: AutoML: gunakan pemisahan CV terpisah untuk ansambel

Dibuat pada 26 Jan 2021  ·  4Komentar  ·  Sumber: alteryx/evalml

#1732 memperbarui pipa ensembling bertumpuk kami untuk menggunakan pembagi data yang sama yang digunakan di AutoML . Kami melanjutkan dengan #1732 karena kami percaya bahwa itu masih merupakan peningkatan dari pendekatan kami saat ini (scikit-learn default).

Masalah ini melacak pembaruan jangka panjang yang mungkin ingin kami lakukan pada pembagi data kami untuk ditumpuk di AutoML.


Pembaruan: sambil terus memperbarui #1732, kami mengalami teka-teki dengan interaksi antara susun dan AutoML yang membuat kami meninjau kembali apakah benar-benar merupakan ide yang baik untuk menggunakan pemisahan data yang sama untuk ansambel susun seperti yang kami gunakan di AutoML. Kami memutuskan tidak, dan seperti yang ditunjukkan Raymond, kami mungkin ingin menggunakan CV terpisah untuk ansambel kami. ( @dsherry juga menyebutkan bongkahan info yang bagus bahwa menggunakan ansambel memungkinkan model untuk tidak terlalu mementingkan model yang lebih kompleks, jadi CV mungkin membantu dengan itu--tolong perbaiki saya jika saya salah memparafrasekan 😂).

Daripada melanjutkan pekerjaan itu, kita harus menggunakan masalah ini untuk membahas pembaruan AutoML untuk penumpukan: Secara khusus, kita harus membuat pemisahan terpisah untuk CV untuk kumpulan bertumpuk. Ini akan mirip dengan apa yang kita miliki saat ini untuk penyetelan ambang biner.

enhancement performance

Komentar yang paling membantu

Rencana: jika susun diaktifkan, kami akan membuat pemisahan terpisah yang dapat diteruskan ke ansambel bertumpuk untuk CV

Akan lebih baik untuk melihat dukungan menggunakan prediksi di luar sampel (pemisahan validasi dari CV asli) saat data diteruskan ke penumpukan. Namun saya sarankan kita mulai dengan pendekatan yang lebih sederhana dengan membuat pemisahan terpisah jika penumpukan diaktifkan.

RE diskusi kita, beberapa bukti pendukung mengapa kita harus menahan split terpisah yang dapat digunakan dalam stacked ensembling untuk melakukan CV:

  • "Dengan menggunakan [prediksi,] yang divalidasi silang, menghindari pemberian bobot tinggi yang tidak adil pada model dengan kompleksitas yang lebih tinggi." alias overfitting
  • "Pendekatan paling umum untuk menyiapkan dataset pelatihan untuk model meta adalah melalui validasi silang k-fold dari model dasar, di mana prediksi out-of-fold digunakan sebagai dasar untuk dataset pelatihan untuk model meta. Data pelatihan untuk model meta juga dapat mencakup input ke model dasar, misalnya elemen input dari data pelatihan. Ini dapat memberikan konteks tambahan ke model meta tentang cara terbaik untuk menggabungkan prediksi dari meta-model. model. Setelah dataset pelatihan disiapkan untuk meta-model, meta-model dapat dilatih secara terpisah pada dataset ini, dan model-dasar dapat dilatih pada seluruh dataset pelatihan asli." -- posting blog
  • "Penting bahwa meta-pelajar dilatih pada dataset terpisah dengan contoh yang digunakan untuk melatih model level 0 untuk menghindari overfitting." -- posting blog lain
  • Abstrak makalah asli yang membahas bagaimana stacked ensembling dapat dilihat sebagai generalisasi dari validasi silang
  • Saya juga menemukan ini sebagai bacaan yang bagus.

@rpeck FYI, setelah berputar, kami mengikuti saran Anda

Semua 4 komentar

Rencana: jika susun diaktifkan, kami akan membuat pemisahan terpisah yang dapat diteruskan ke ansambel bertumpuk untuk CV

Akan lebih baik untuk melihat dukungan menggunakan prediksi di luar sampel (pemisahan validasi dari CV asli) saat data diteruskan ke penumpukan. Namun saya sarankan kita mulai dengan pendekatan yang lebih sederhana dengan membuat pemisahan terpisah jika penumpukan diaktifkan.

RE diskusi kita, beberapa bukti pendukung mengapa kita harus menahan split terpisah yang dapat digunakan dalam stacked ensembling untuk melakukan CV:

  • "Dengan menggunakan [prediksi,] yang divalidasi silang, menghindari pemberian bobot tinggi yang tidak adil pada model dengan kompleksitas yang lebih tinggi." alias overfitting
  • "Pendekatan paling umum untuk menyiapkan dataset pelatihan untuk model meta adalah melalui validasi silang k-fold dari model dasar, di mana prediksi out-of-fold digunakan sebagai dasar untuk dataset pelatihan untuk model meta. Data pelatihan untuk model meta juga dapat mencakup input ke model dasar, misalnya elemen input dari data pelatihan. Ini dapat memberikan konteks tambahan ke model meta tentang cara terbaik untuk menggabungkan prediksi dari meta-model. model. Setelah dataset pelatihan disiapkan untuk meta-model, meta-model dapat dilatih secara terpisah pada dataset ini, dan model-dasar dapat dilatih pada seluruh dataset pelatihan asli." -- posting blog
  • "Penting bahwa meta-pelajar dilatih pada dataset terpisah dengan contoh yang digunakan untuk melatih model level 0 untuk menghindari overfitting." -- posting blog lain
  • Abstrak makalah asli yang membahas bagaimana stacked ensembling dapat dilihat sebagai generalisasi dari validasi silang
  • Saya juga menemukan ini sebagai bacaan yang bagus.

@rpeck FYI, setelah berputar, kami mengikuti saran Anda

@dsherry @rpeck @angela97lin Saya mulai melihat masalah ini, tetapi sepertinya kelas StackedClassifier dan StackedRegressor sklearn menggunakan validasi silang internal selama pelatihan model untuk mencegah overfitting. Ini sepertinya masalah yang sama yang kami coba selesaikan dengan masalah ini, jadi sepertinya itu harus diselesaikan. Saya rasa kita tidak perlu melakukan lipatan CV terpisah untuk melatih/memvalidasi metode Stacked Ensembling, tapi bagaimana menurut Anda semua?

image

Setelah berdiskusi dengan @dsherry , inilah ide yang ingin kami lanjutkan

Rencana didiskusikan dengan @ bchen1116 : masalah ini melacak:

  • Buat pemisahan terpisah untuk melatih metalearning untuk pipeline ensemble
  • Lanjutkan menggunakan sklearn impl untuk ensambling bertumpuk

Peningkatan kinerja terpisah: dukungan yang lebih baik untuk data kecil. Jangan membuat pemisahan terpisah untuk ansamling. Gunakan pred pipa out-of-sample dari CV normal (dari seluruh lipatan CV) untuk melatih ensembler. #1898

Peningkatan kinerja terpisah lainnya: latih pipeline dan metalearner pada data yang berbeda. #1897

Apakah halaman ini membantu?
0 / 5 - 0 peringkat