Mengantongi, meningkatkan dan menumpuk dalam pembelajaran mesin

245

Apa persamaan dan perbedaan antara 3 metode ini:

  • Mengantongi,
  • Meningkatkan,
  • Susun?

Mana yang terbaik? Dan mengapa?

Bisakah Anda memberi saya contoh untuk masing-masing?

Bucsa Lucian
sumber
3
untuk referensi buku teks, saya sarankan: "Metode ensemble: fondasi dan algoritma" oleh Zhou, Zhi-Hua
Vadim Smolyakov
1
Lihat di sini pertanyaan terkait .
Ricardo Cruz

Jawaban:

252

Ketiganya disebut "meta-algoritme": pendekatan untuk menggabungkan beberapa teknik pembelajaran mesin menjadi satu model prediktif untuk mengurangi varians ( mengantongi ), bias ( meningkatkan ), atau meningkatkan kekuatan prediktif ( susun alias ensemble ).

Setiap algoritma terdiri dari dua langkah:

  1. Memproduksi distribusi model ML sederhana pada himpunan bagian dari data asli.

  2. Menggabungkan distribusi menjadi satu model "teragregasi".

Berikut ini deskripsi singkat dari ketiga metode ini:

  1. Mengantongi (singkatan dari B ootstrap Agg Regat ing ) adalah cara untuk mengurangi varians dari prediksi Anda dengan menghasilkan data tambahan untuk pelatihan dari dataset asli Anda menggunakan kombinasi dengan pengulangan untuk menghasilkan multisets dari kardinalitas yang sama / ukuran sebagai data asli Anda. Dengan meningkatkan ukuran set pelatihan Anda, Anda tidak dapat meningkatkan kekuatan prediktif model, tetapi cukup kurangi variannya, sesuaikan prediksi dengan hasil yang diharapkan.

  2. Boosting adalah pendekatan dua langkah, di mana yang pertama menggunakan himpunan bagian dari data asli untuk menghasilkan serangkaian model yang berperforma rata-rata dan kemudian "meningkatkan" kinerja mereka dengan menggabungkannya bersama-sama menggunakan fungsi biaya tertentu (= suara terbanyak). Tidak seperti bagging, dalam meningkatkan klasik pembuatan subset tidak acak dan tergantung pada kinerja model sebelumnya: setiap himpunan bagian baru berisi elemen yang (kemungkinan) salah diklasifikasi oleh model sebelumnya.

  3. Penumpukan mirip dengan meningkatkan: Anda juga menerapkan beberapa model pada data asli Anda. Perbedaannya di sini adalah, bagaimanapun, bahwa Anda tidak hanya memiliki rumus empiris untuk fungsi berat badan Anda, melainkan Anda memperkenalkan tingkat meta dan menggunakan model / pendekatan lain untuk memperkirakan input bersama dengan output dari setiap model untuk memperkirakan bobot atau , dengan kata lain, untuk menentukan model apa yang berkinerja baik dan apa yang diberikan data input ini dengan buruk.

Ini adalah tabel perbandingan:

Tabel komparatif

Seperti yang Anda lihat, semua ini adalah pendekatan yang berbeda untuk menggabungkan beberapa model menjadi yang lebih baik, dan tidak ada pemenang tunggal di sini: semuanya tergantung pada domain Anda dan apa yang akan Anda lakukan. Anda masih dapat memperlakukan penumpukan sebagai semacam peningkatan lebih lanjut , namun, kesulitan menemukan pendekatan yang baik untuk tingkat meta Anda membuatnya sulit untuk menerapkan pendekatan ini dalam praktik.

Contoh singkat masing-masing:

  1. Bagging : Data ozon .
  2. Boosting : digunakan untuk meningkatkan akurasi pengenalan karakter optik (OCR).
  3. Stacking : digunakan dalam klasifikasi microarrays kanker dalam pengobatan.
Alexander Galkin
sumber
8
Sepertinya definisi boosting Anda berbeda dari yang ada di wiki (yang Anda tautkan) atau di makalah ini . Keduanya mengatakan bahwa dalam meningkatkan classifier berikutnya menggunakan hasil dari yang sebelumnya dilatih, tetapi Anda tidak menyebutkan itu. Metode yang Anda gambarkan di sisi lain menyerupai beberapa teknik pemungutan suara / model.
Alexander Rodin
2
@ a-rodin: Terima kasih telah menunjukkan aspek penting ini, saya sepenuhnya menulis ulang bagian ini untuk mencerminkan hal ini dengan lebih baik. Mengenai komentar kedua Anda, pemahaman saya adalah bahwa meningkatkan juga merupakan jenis pemungutan suara / rata-rata, atau apakah saya salah mengerti Anda?
Alexander Galkin
@AlexanderGalkin yang ada dalam pikiran saya Gradient meningkatkan pada saat berkomentar: itu tidak terlihat seperti pemungutan suara tetapi lebih sebagai teknik perkiraan fungsi iteratif. Namun mis. AdaBoost lebih mirip voting, jadi saya tidak akan membantahnya.
Alexander Rodin
3
Dalam kalimat pertama Anda, Anda mengatakan Meningkatkan menurunkan bias, tetapi dalam tabel perbandingan Anda mengatakan itu meningkatkan kekuatan prediksi. Apakah keduanya benar?
Ben Lindsay
68

Mengantongi :

  1. ansambel paralel : setiap model dibangun secara independen

  2. bertujuan untuk mengurangi varians , bukan bias

  3. cocok untuk varians rendah model bias rendah (model kompleks)

  4. contoh dari metode berbasis pohon adalah hutan acak , yang mengembangkan pohon yang tumbuh penuh (perhatikan bahwa RF memodifikasi prosedur penanaman untuk mengurangi korelasi antar pohon)

Meningkatkan :

  1. ensemble berurutan : coba tambahkan model baru yang berfungsi dengan baik di mana kekurangan model sebelumnya

  2. bertujuan untuk mengurangi bias , bukan varians

  3. cocok untuk varians rendah model bias tinggi

  4. contoh metode berbasis pohon adalah peningkatan gradien

Yuqian
sumber
5
Mengomentari setiap poin untuk menjawab mengapa demikian dan bagaimana hal itu dicapai akan menjadi peningkatan besar dalam jawaban Anda.
Tim
2
Bisakah Anda membagikan dokumen / tautan apa pun yang menjelaskan bahwa meningkatkan mengurangi varian dan bagaimana melakukannya? Hanya ingin memahami secara lebih mendalam
GeorgeOfTheRF
1
Terima kasih Tim, saya akan menambahkan beberapa komentar nanti. @ ML_Pro, dari prosedur peningkatan (misalnya halaman 23 dari cs.cornell.edu/courses/cs578/2005fa/... ), dapat dipahami bahwa meningkatkan dapat mengurangi bias.
yuqian
43

Hanya untuk menguraikan jawaban Yuqian sedikit. Gagasan di balik mengantongi adalah bahwa ketika Anda BERLAKU dengan metode regresi nonparametrik (biasanya pohon regresi atau klasifikasi, tetapi dapat berupa metode nonparametrik apa pun), Anda cenderung memilih varian yang tinggi, tidak ada (atau rendah) bias yang bias. pengorbanan varians. Ini karena model overfitting sangat fleksibel (bias sangat rendah pada banyak sampel dari populasi yang sama, jika tersedia) tetapi memiliki variabilitas tinggi (jika saya mengumpulkan sampel dan mengenakannya, dan Anda mengumpulkan sampel dan mengenakannya, kami hasilnya akan berbeda karena regresi non-parametrik melacak kebisingan dalam data). Apa yang bisa kita lakukan? Kita dapat mengambil banyak contoh (dari bootstrap), masing-masing overfitting, dan rata-rata bersama-sama. Ini harus mengarah pada bias yang sama (rendah) tetapi membatalkan beberapa varians,

Peningkatan gradien pada intinya bekerja dengan UNDERFIT regresi nonparametrik, yang terlalu sederhana dan dengan demikian tidak cukup fleksibel untuk menggambarkan hubungan nyata dalam data (yaitu bias) tetapi, karena mereka di bawah pas, memiliki varian rendah (Anda akan cenderung untuk mendapatkan hasil yang sama jika Anda mengumpulkan set data baru). Bagaimana Anda mengoreksi hal ini? Pada dasarnya, jika Anda tidak cocok, RESIDUAL model Anda masih mengandung struktur yang berguna (informasi tentang populasi), jadi Anda menambah pohon yang Anda miliki (atau prediktor nonparametrik apa pun) dengan pohon yang dibangun di atas residu. Ini harus lebih fleksibel daripada pohon asli. Anda berulang kali menghasilkan lebih banyak pohon, masing-masing pada langkah k ditambah oleh pohon tertimbang berdasarkan pohon yang sesuai dengan residu dari langkah k-1. Salah satu pohon ini harus optimal, jadi Anda berakhir dengan menimbang semua pohon ini bersama-sama atau memilih yang tampaknya paling cocok. Jadi meningkatkan gradien adalah cara untuk membangun sekelompok pohon kandidat yang lebih fleksibel.

Seperti semua pendekatan regresi atau klasifikasi nonparametrik, kadang-kadang mengantongi atau meningkatkan bekerja sangat baik, kadang-kadang satu atau pendekatan lain biasa-biasa saja, dan kadang-kadang satu atau pendekatan lain (atau keduanya) akan hancur dan terbakar.

Juga, kedua teknik ini dapat diterapkan untuk pendekatan regresi selain pohon, tetapi mereka paling sering dikaitkan dengan pohon, mungkin karena sulit untuk menetapkan parameter sehingga untuk menghindari kurang pas atau overfitting.

AlaskaRon
sumber
3
+1 untuk overfit = varians, underfit = argumen bias! Salah satu alasan untuk menggunakan pohon keputusan adalah bahwa mereka secara struktural tidak stabil sehingga mendapat manfaat lebih dari sedikit perubahan kondisi. ( abbottanalytics.com/assets/pdf/… )
Mark Horvath
3

Singkatnya, Bagging dan Boosting biasanya digunakan di dalam satu algoritma, sedangkan Stacking biasanya digunakan untuk merangkum beberapa hasil dari algoritma yang berbeda.

  • Bagging : Bootstrap subset fitur dan sampel untuk mendapatkan beberapa prediksi dan rata-rata (atau cara lain) hasilnya, misalnya Random Forest, yang menghilangkan varians dan tidak memiliki masalah overfitting.
  • Meningkatkan : Perbedaan dari Bagging adalah bahwa model kemudian mencoba mempelajari kesalahan yang dibuat oleh yang sebelumnya, misalnya GBMdan XGBoost, yang menghilangkan varians tetapi memiliki masalah overfitting.
  • Stacking : Biasanya digunakan dalam kompetisi, ketika seseorang menggunakan beberapa algoritma untuk melatih pada kumpulan data dan rata-rata yang sama (maks, min atau kombinasi lainnya) hasilnya untuk mendapatkan akurasi prediksi yang lebih tinggi.
MJeremy
sumber
2

baik mengantongi dan meningkatkan menggunakan algoritma pembelajaran tunggal untuk semua langkah; tetapi mereka menggunakan metode berbeda dalam menangani sampel pelatihan. keduanya adalah metode pembelajaran ensemble yang menggabungkan keputusan dari beberapa model
Bagging :
1. memberi contoh data pelatihan untuk mendapatkan subset M (bootstrap);
2. melatih pengklasifikasi M (algoritma yang sama) berdasarkan pada dataset M (sampel yang berbeda);
3. final classifier menggabungkan output M dengan pemungutan suara;
berat sampel sama;
bobot pengklasifikasi sama;
mengurangi kesalahan dengan mengurangi varians
Boosting : di sini fokus pada algoritma adaboost
1. mulai dengan bobot yang sama untuk semua sampel di babak pertama;
2. pada putaran M-1 berikut, menambah bobot sampel yang salah diklasifikasikan dalam putaran terakhir, mengurangi bobot sampel dengan benar diklasifikasikan dalam putaran terakhir
3. menggunakan pemungutan suara tertimbang, penggolong akhir menggabungkan beberapa penggolong dari putaran sebelumnya, dan memberikan bobot lebih besar untuk pengklasifikasi dengan kesalahan klasifikasi yang lebih sedikit.
sampel reweights langkah-bijaksana; bobot untuk setiap putaran berdasarkan hasil
sampel putaran ulang berat terakhir (boosting) alih-alih resampling (bagging).

Shrek
sumber
0

Mengantongi dan meningkatkan cenderung menggunakan banyak model yang homogen.

Stacking menggabungkan hasil dari tipe model yang heterogen.

Karena tidak ada tipe model tunggal yang paling cocok di seluruh distribusi, Anda dapat melihat mengapa ini dapat meningkatkan daya prediksi.

Brad
sumber