Metode Ensemble: Juara Pembelajaran Mesin Kaggle
Diterbitkan: 2022-03-11Pepatah “Dua kepala lebih baik dari satu” memiliki makna baru dalam hal ansambel pembelajaran mesin. Metode ensemble adalah beberapa keluarga ML yang paling terkenal di kompetisi Kaggle, di mana mereka sering memenangkan kontes dengan hasil yang mengesankan.
Tapi itu satu abad sebelum Kaggle ketika ahli statistik Sir Francis Galton memperhatikan potensi kecerdasan agregat. Dia kebetulan mengikuti kompetisi di pameran ternak di mana peserta harus menebak berat seekor lembu. Delapan ratus orang mengajukan tebakan, tetapi tingkat keahlian mereka bervariasi: Petani dan tukang daging menebak bersama penduduk kota yang belum pernah melihat sapi dari dekat, jadi Galton mengira tebakan rata-rata akan sangat salah.
Ternyata rata-rata tebakan orang banyak meleset kurang dari satu pon (<0,1%). Namun, bahkan prediksi individu terbaik pun meleset.
Bagaimana bisa? Apa yang memungkinkan hasil yang tidak terduga seperti itu?
Apa yang Membuat Mesin Ensemble begitu Efektif
Peristiwa yang memaksa Galton untuk mempertanyakan keyakinannya juga menggambarkan apa yang membuat ansambel begitu kuat: Jika Anda memiliki model yang berbeda dan independen , dilatih menggunakan bagian data yang berbeda untuk masalah yang sama, mereka akan bekerja lebih baik bersama-sama daripada secara individual. Alasannya? Setiap model akan mempelajari bagian konsep yang berbeda. Oleh karena itu, setiap model akan menghasilkan hasil dan kesalahan yang valid berdasarkan “pengetahuan”-nya.
Tetapi hal yang paling menarik adalah bahwa setiap bagian yang benar akan melengkapi yang lain sementara kesalahannya saling meniadakan:
Anda perlu melatih model dengan varians tinggi (seperti pohon keputusan) pada subset data yang berbeda. Varians tambahan ini berarti bahwa setiap model melengkapi data yang berbeda, tetapi ketika digabungkan, varians menghilang, seolah-olah dengan sihir. Ini menciptakan model baru yang lebih kuat.
Sama seperti dalam kasus Galton, ketika semua data dari semua sumber digabungkan, hasilnya "lebih pintar" daripada titik data yang terisolasi.
Melihat Lebih Dekat Pembelajaran Ensemble di Kompetisi Kaggle
Pada Otto Group Product Classification Challenge, peserta harus membangun model prediktif yang mampu membedakan kategori produk utama.
Di sini Anda dapat melihat bagaimana model pemenang dibangun. Itu adalah tumpukan tiga lapisan: Yang pertama memiliki 33 model, yang kedua menambahkan tiga lagi (XGBoost, jaringan saraf, dan AdaBoost), dan yang ketiga adalah rata-rata tertimbang dari keluaran lapisan sebelumnya. Itu adalah model dan ansambel yang sangat kompleks.
Keberhasilan Kaggle lainnya adalah model yang dibuat oleh Chenglong Chen di kompetisi Relevansi Hasil Pencarian Crowdflower. Tantangannya adalah membuat prediktor yang dapat digunakan untuk mengukur relevansi hasil pencarian. Anda dapat membaca penjelasan lengkap tentang metodenya, tetapi karena titik perhatian kami adalah ansambel, bagian penting dari cerita ini adalah bahwa solusi pemenang menggunakan ansambel dari 35 model, banyak di antaranya juga ansambel — ansambel meta, jadi berbicara.
Metode Ensemble
Ada banyak cara untuk mengimplementasikan metode ensemble dalam machine learning. Kami akan menjelajahi beberapa metode yang paling populer:
- mengantongi
- Hutan Acak
- meningkatkan
- AdaBoost
- Peningkatan Gradien dan XGBoost
- Metode Ensemble Hibrida
- Pemungutan suara
- Penumpukan
- mengalir
mengantongi
Seperti yang disebutkan, Anda perlu melatih banyak model pada subset data yang berbeda. Dalam praktiknya, ini tidak mudah karena Anda akan membutuhkan lebih banyak data untuk banyak model daripada untuk satu model, dan terkadang tidak mudah untuk mendapatkan kumpulan data berkualitas tinggi. Inilah saatnya bagging (agregasi bootstrap) berguna, karena membagi data melalui bootstrap: sampel acak dengan pengganti, menghasilkan subset berbeda yang tumpang tindih.
Setelah Anda melatih model ensemble, Anda menyusun prediksi akhir dengan menggabungkan setiap prediksi model melalui metrik apa pun yang Anda inginkan: mean, median, mode, dan seterusnya. Anda juga dapat menggunakan probabilitas prediksi model untuk membuat metrik berbobot:
Jika kita ingin menggunakan pohon keputusan sebagai model tetapi kita memiliki beberapa atribut prediktif yang kuat dalam data kita, semua pohon akan serupa. Ini karena atribut yang sama akan cenderung berada di simpul akar, menghasilkan hasil yang sama di setiap cabang pohon.
Hutan Acak
Salah satu teknik untuk mengatasi masalah ini adalah random forest . Itu membuat ansambel bagging menggunakan pohon tetapi setiap node membatasi atributnya yang mungkin ke subset acak. Ini memaksa model menjadi berbeda, menyelesaikan masalah sebelumnya. Itu juga membuat hutan acak menjadi model yang sangat baik untuk pemilihan fitur.
Random forest adalah salah satu model ML yang paling populer karena memberikan kinerja yang baik dengan varians dan waktu pelatihan yang rendah.
meningkatkan
Boosting juga menggunakan bootstrap untuk melatih model, dengan perbedaan utama adalah penambahan bobot pada setiap instance berdasarkan kesalahan prediksi model. Sementara bagging adalah proses paralel, boosting adalah proses berurutan, di mana setiap model memiliki lebih banyak probabilitas. Ini memungkinkannya mengakses beberapa contoh prediksi model sebelumnya.
Dengan modifikasi ini, boosting mencoba meningkatkan fokus pada instans yang salah diklasifikasikan untuk mencapai kinerja global yang lebih baik:
Ini menambah bobot model juga. Prediktor dengan kinerja yang lebih baik pada waktu latihan akan memiliki bobot yang lebih tinggi pada tahap prediksi.
Mari kita lihat lebih dekat beberapa model booster paling populer:
AdaBoost
AdaBoost adalah salah satu implementasi pertama dari boosting. Itu hampir persis seperti yang kami uraikan tentang peningkatan secara umum dan menggunakan pohon keputusan sebagai model. Mari kita jelaskan fase pelatihan dengan beberapa pseudo coding:
For each instance i Assign w[i] (weight, same for all) For each iteration t Generate a subset s[t] by weighted boosting (using the w[i] weights) Train model m[t] using s[t] Store m[t] Calculate e[t] (error rate of m[t]) Assign error rate e[t] to stored m[t] model If (e[t] <= a_threshold) Exit for Update weights using m[t] errors Pada waktu prediksi, bobot setiap prediksi berdasarkan tingkat kesalahan e[t] yang dihitung untuk masing-masing prediksi. Hasil dengan tingkat kesalahan yang tinggi akan memiliki bobot yang lebih kecil daripada hasil lainnya dengan akurasi yang lebih baik.
Peningkatan Gradien dan XGBoost
Salah satu masalah utama ketika melatih begitu banyak model dan membuatnya bekerja sama adalah menemukan konfigurasi hyperparameter terbaik. Sulit untuk menemukan konfigurasi terbaik untuk satu model; menemukan konfigurasi terbaik untuk n model meningkatkan kompleksitas secara eksponensial. Konfigurasi ideal untuk model yang terisolasi kemungkinan tidak sama dengan konfigurasi untuk model yang harus bekerja dengan yang lain. Karena itu, Anda harus mencari konfigurasi semua model secara bersamaan, tetapi bagaimana caranya?
Peningkatan gradien menghadirkan solusi elegan untuk masalah ini. Ini menciptakan fungsi kerugian yang memiliki, sebagai input, semua nilai hyperparameter dari semua model dan, sebagai output, kesalahan dari keseluruhan ensemble. Melalui penurunan gradien, ia menemukan nilai minimum fungsi (yaitu, kesalahan terendah) dan dengan demikian konfigurasi hyperparameter terbaik untuk setiap model.

Pendekatan ini memperkenalkan masalah penskalaan. Masuki raja pembelajaran mesin untuk data terstruktur: peningkatan gradien ekstrem, singkatnya XGBoost. Ini adalah implementasi peningkatan gradien yang sangat efisien, berkat berbagai teknik, seperti komputasi paralel, kemampuan validasi silang bawaan, regularisasi untuk menghindari overfitting, dan pengoptimalan perangkat keras. XGBoost memberikan kinerja yang luar biasa.
XGBoost menjadi populer ketika penciptanya menggunakannya untuk tantangan Kaggle dan dimenangkan dengan selisih yang lebar. Dia menerbitkan hasilnya dan membuat pembungkus Python untuk memungkinkan lebih banyak orang menggunakannya. Ketika banyak orang mengenali potensinya, XGBoost dengan cepat menjadi juara ML.
Metode Ensemble Hibrida
Tapi cerita tidak berakhir di situ. Kita telah melihat banyak jenis ansambel yang semuanya menggunakan jenis model yang sama—mengapa tidak mencoba kombinasi model yang berbeda? Jika Anda melakukannya dengan baik, Anda dapat membuat metode ML yang lebih hebat: ansambel hybrid .
Pemungutan suara
Voting adalah salah satu pendekatan paling sederhana untuk menciptakan ansambel hybrid. Ini melatih banyak algoritma model yang berbeda dan membuat mereka "memilih" pada fase prediksi:
Anda dapat menambahkan bobot ke setiap model berdasarkan kinerjanya atau memprediksi probabilitas dan menghasilkan suara berbobot.
Penumpukan
Penumpukan memajukan gagasan pemungutan suara dengan menambahkan lapisan baru di atas model dasar untuk membuat prediksi akhir alih-alih hanya menghitung rata-rata atau mayoritas. Ini menambahkan konsep meta-learning, karena lapisan baru belajar bukan dari data tetapi dari prediksi model:
Anda dapat menumpuk semua lapisan meta yang Anda suka, menghasilkan model dengan banyak level. Untuk model bertumpuk, saya sarankan menggunakan pohon keputusan, SVM, atau perceptron. Untuk model dasar, Anda dapat menggunakan metode apa pun yang Anda inginkan, bahkan ansambel lain, membuat ansambel ensembel. Penumpukan bekerja lebih baik dengan model dasar seperti pohon keputusan yang menghasilkan tidak hanya prediksi nilai, tetapi juga kemungkinan itu benar.
Penumpukan kurang populer daripada mengantongi atau meningkatkan karena lebih sulit untuk menafsirkan apa yang dipelajari model bertumpuk dan karena ada lebih banyak varian: Anda dapat bermain dengan banyak kombinasi algoritme model, konfigurasi hyperparameter, dan lapisan susun. Namun, dengan kombinasi model yang tepat, penumpukan bisa lebih kuat daripada boosting dan bagging.
mengalir
Cascading digunakan ketika Anda ingin memiliki tingkat kepastian yang tinggi dalam prediksi. Ini menggunakan pendekatan susun tetapi hanya memiliki satu model di setiap lapisan. Pada setiap level, model membuang instance yang mereka anggap bukan dari kelas yang diinginkan.
Dengan cascading, model sederhana mengevaluasi data sebelum model kompleks melakukannya. Pada langkah prediksi, model pertama menerima data. Jika kepastian tidak lebih besar dari x (nilainya harus tinggi, sesuatu yang lebih besar dari 0,9), ia meneruskan instance ke model berikutnya. Jika tidak, kaskade mengembalikan output yang diprediksi dari model itu. Jika tidak ada lapisan yang dapat memprediksi kelas yang diinginkan dengan tingkat kepastian yang tinggi, ansambel mengembalikan kelas negatif.
Kasus penggunaan klasik untuk model ini memprediksi kapan suatu transaksi cenderung curang. Mari kita asumsikan sebuah sistem menghitung jutaan transaksi per hari dan tidak mungkin untuk mengontrol setiap transaksi secara manual. Menggunakan ansambel cascading dapat membuang transaksi yang tidak curang dengan probabilitas yang sangat tinggi, hanya menyisakan sebagian kecil transaksi untuk diperiksa secara manual:
Model-model ini adalah pilihan yang baik ketika Anda membutuhkan metrik ingatan yang sangat baik.
Tidak seperti voting dan stacking, cascading ensemble menggunakan pendekatan multistate daripada pendekatan multiexpert. Sangat penting untuk berhati-hati tentang cascading yang sangat dalam karena dapat menghasilkan overfitting.
Nilai Metode Ensemble
Menggabungkan banyak model memungkinkan kita untuk membuat prediktor yang lebih baik dan lebih kuat, seperti yang terjadi ketika manusia bekerja sama. Kami menguraikan tiga keluarga ansambel—mengantongi, meningkatkan, dan hibrida—dan melihat bagaimana mereka berlatih dan memprediksi.
Pohon keputusan bisa menjadi model yang sangat lemah dan tidak stabil (dengan varians yang tinggi), tetapi kumpulan pohon yang berbeda (hutan acak) bisa menjadi prediktor yang sangat akurat dan stabil. Salah satu keuntungan utama dari ansambel adalah mereka membangun model dengan varians rendah dan bias rendah, salah satu trade-off terbesar dalam pembelajaran mesin. Dalam kebanyakan kasus, mereka mengungguli metode lain, dan terkadang mereka bahkan lebih baik daripada pembelajaran mendalam. Mereka cenderung lebih lemah daripada jaringan saraf dalam hanya ketika beroperasi pada data yang tidak terstruktur.
Jika kita melanjutkan perbandingan ke jaringan saraf yang dalam, kita juga dapat mengatakan bahwa ansambel cenderung lebih ringan dan lebih cepat pada fase pelatihan dan pengujian. Selain itu, mereka tidak memerlukan perangkat keras yang mahal untuk dijalankan, seperti GPU diskrit yang kuat.
Memang benar bahwa ansambel tidak memiliki kemungkinan untuk dipahami secara intuitif oleh manusia karena memiliki puluhan atau ratusan model yang bekerja pada saat yang sama menciptakan alat yang besar dan kompleks. Untungnya, beberapa teknik memungkinkan kita untuk memahami bagaimana metode ini membuat keputusan. Salah satu yang paling populer adalah LIME, sebuah metode yang menciptakan penjelasan yang dapat ditafsirkan untuk contoh tertentu atas model pembelajaran mesin apa pun.
Kompetisi Kaggle tidak ada semata-mata agar pengembang dapat bersenang-senang, mempelajari keterampilan baru, atau memenangkan hadiah. Tujuan utamanya adalah untuk menciptakan model yang kuat dan melepaskannya ke alam liar, untuk membiarkan mereka melakukan keajaiban mereka dalam skenario dunia nyata. Model semacam ini digunakan oleh organisasi yang menangani masalah kritis. Misalnya, deteksi penipuan adalah kasus penggunaan umum di industri seperti perbankan dan perjalanan, yang menangani sejumlah besar uang yang dipindahkan dalam satu transaksi.
Ansambel menghasilkan prediksi yang lebih baik dengan varians dan bias yang lebih rendah daripada model lainnya. Namun, sulit untuk menafsirkan apa yang mereka pelajari, dan itu bisa menjadi sangat penting dalam beberapa aplikasi sensitif. Salah satu contohnya adalah industri pinjaman pribadi: Model ML dapat menentukan apakah seseorang memenuhi syarat untuk mendapatkan pinjaman atau tidak. Namun, jika klien bertanya mengapa lembaga keuangan menolak pinjaman, harus ada penjelasan rinci, bukan hanya “Karena model ML kami mengatakan demikian.”
Pada akhirnya, apakah Anda ingin membuat model ML yang kuat untuk aplikasi perusahaan, bank besar atau bisnis kecil, atau hanya mengikuti kontes untuk meningkatkan reputasi profesional Anda, ansambel harus menjadi alat pilihan Anda.
