Mengapa kita membutuhkan XGBoost dan Random Forest?

25

Saya tidak jelas tentang beberapa konsep:

  1. XGBoost mengkonversi pembelajar yang lemah menjadi pembelajar yang kuat. Apa keuntungan melakukan ini? Menggabungkan banyak siswa yang lemah dan bukannya hanya menggunakan satu pohon?

  2. Hutan Acak menggunakan berbagai sampel dari pohon untuk membuat pohon. Apa keuntungan dari metode ini daripada hanya menggunakan pohon tunggal?

John Constantine
sumber

Jawaban:

35

Lebih mudah untuk memulai dengan pertanyaan kedua Anda dan kemudian pergi ke yang pertama.

Mengantongi

Random Forest adalah algoritma pengemasan. Ini mengurangi varians.

Katakan bahwa Anda memiliki model yang sangat tidak dapat diandalkan, seperti Pohon Keputusan. (Mengapa tidak bisa diandalkan? Karena jika Anda mengubah sedikit data Anda, pohon keputusan yang dibuat bisa sangat berbeda.) Dalam kasus seperti itu, Anda dapat membangun model yang kuat (mengurangi varians) melalui bagging - bagging adalah ketika Anda membuat model yang berbeda. dengan resampling data Anda untuk membuat model yang dihasilkan lebih kuat.

Hutan acak adalah apa yang kita sebut bagging yang diterapkan pada pohon keputusan, tetapi tidak berbeda dari algoritma bagging lainnya.

Mengapa Anda ingin melakukan ini? Itu tergantung masalah. Tetapi biasanya, sangat diinginkan agar model menjadi stabil.

Meningkatkan

Meningkatkan mengurangi varians, dan juga mengurangi bias. Ini mengurangi varians karena Anda menggunakan banyak model (mengantongi). Ini mengurangi bias dengan melatih model selanjutnya dengan mengatakan kepadanya kesalahan apa yang dibuat model sebelumnya (bagian pendongkrak).

Ada dua algoritma utama:

  • Adaboost: ini adalah algoritma asli; Anda memberi tahu model-model selanjutnya untuk menghukum lebih banyak pengamatan yang keliru oleh model-model sebelumnya
  • Peningkatan Gradien: Anda melatih setiap model berikutnya menggunakan residual (perbedaan antara nilai yang diprediksi dan nilai sebenarnya)

Dalam ansambel ini, pembelajar dasar Anda harus lemah. Jika cocok dengan data, tidak akan ada residu atau kesalahan untuk model selanjutnya untuk membangun. Mengapa model yang bagus ini? Yah, sebagian besar kompetisi di situs web seperti Kaggle telah dimenangkan menggunakan pohon meningkatkan gradien. Ilmu data adalah ilmu empiris, "karena berfungsi" cukup baik. Bagaimanapun, perhatikan bahwa meningkatkan model bisa cocok (meskipun secara empiris itu tidak terlalu umum).

Alasan lain mengapa peningkatan gradien, khususnya, juga cukup keren: karena membuatnya sangat mudah untuk menggunakan fungsi kerugian yang berbeda, bahkan ketika turunannya tidak cembung. Misalnya, ketika menggunakan perkiraan probabilistik, Anda dapat menggunakan hal-hal seperti fungsi pinball sebagai fungsi kerugian Anda; sesuatu yang jauh lebih sulit dengan jaringan saraf (karena turunannya selalu konstan).

[Catatan sejarah yang menarik: Meningkatkan pada awalnya merupakan penemuan teoretis yang dimotivasi oleh pertanyaan " bisakah kita membangun model yang lebih kuat menggunakan model yang lebih lemah "]


Catatan: Orang-orang kadang-kadang membingungkan hutan acak dan gradien meningkatkan pohon, hanya karena keduanya menggunakan pohon keputusan, tetapi mereka adalah dua keluarga ansambel yang sangat berbeda.

Ricardo Cruz
sumber
1
Meningkatkan mengurangi bias dengan memodelkan residual dan varians secara iteratif dengan mengambil rata-rata tertimbang; lih. § 5.5 Bias, Varian, dan Stabilitas , hlm. 118, Meningkatkan: Yayasan dan Algoritma , Robert E. Schapire, Yoav Freund.
Emre
@Emre, Anda tentu saja benar. Seseorang mengedit pos saya dan mengubah pengurangan demi peningkatan . Saya telah mengembalikannya.
Ricardo Cruz
8

Ketika Anda membangun pohon, Anda perlu mendefinisikan beberapa kriteria untuk membelah node. Ini termasuk metrik seperti Penguatan Informasi dan Indeks Gini. Itu adalah pendekatan heuristik , mereka tidak dijamin untuk memberikan pemecahan terbaik .

Bobot pada kenyataannya beberapa atribut kurang relevan dan / atau lebih berisik, dan banyak masalah lain yang terjadi pada data nyata. Singkatnya, Anda tidak dapat membangun pohon yang sempurna dalam waktu komputasi yang layak (tentu saja Anda bisa membuat semua pohon yang mungkin dan menguji yang terbaik, tetapi kemudian Anda harus menunggu beberapa tahun untuk pelatihan bahkan dalam dataset berukuran sedang).

Karena kami tidak dapat memiliki pohon terbaik , kami memiliki perkiraan. Satu perkiraan adalah membangun banyak pohon (menggunakan partisi data yang berbeda atau partisi atribut), karena kami berharap sebagian besar pohon menjadi agak benar, dan mempertimbangkan klasifikasi mereka dalam sistem pemungutan suara; ini harus berurusan dengan sebagian besar kebisingan, partisi vertikal dapat menangani atribut yang tidak relevan, heuristik kurang penting, dan mungkin kelebihan lainnya.

Mephy
sumber
1

Saya akan menambahkan sedikit tambahan pada jawaban yang bagus. Masalah utamanya adalah overfitting. Segera setelah Anda memiliki lebih dari satu parameter dan juga menambahkan fungsi-fungsi non-linear, semua algoritma mulai overfit. Mereka melihat sesuatu dalam data yang tidak ada. Seperti saat gelap atau kabutnya kuat orang cenderung melihat hal-hal dalam kegelapan / kabut yang tidak ada. Hampir semua algoritma komputasi melakukan overfitting lebih banyak daripada manusia. Bahkan regresi linier mulai menunjukkan koefisien aneh ketika variabel sangat berkorelasi. Jika tidak ada overfitting maka pohon keputusan biasa, yang menjadi dasar algoritma tersebut, akan lebih baik daripada Random Forest atau XGBoost.

Dan tidak ada ilmu pasti mengapa overfitting terjadi dan mengapa beberapa algoritma lebih baik daripada yang lain. Secara teori model ARIMA sangat baik, tetapi praktik menunjukkan bahwa menggunakan teknik pemulusan eksponensial lebih baik dan ARIMA bahkan tidak dapat membedakan variabel yang berperilaku sesuai dengan ARIMA tetapi dengan parameter yang berbeda.

Beberapa jaringan saraf dan terutama jaringan saraf convolutional tampaknya memiliki overfitting yang rendah. Pada saat yang sama ide orisinal jaringan saraf yang terhubung penuh gagal dengan jumlah neuron yang tinggi karena overfitting.

Kemungkinan utama untuk melawan overfitting adalah:

  1. pengambilan sampel acak
  2. rata-rata di berbagai model
  3. mengacak model (menjatuhkan neuron secara acak sambil melatih jaringan saraf)

Jika saya memahami algoritma dengan benar, baik Random Forest dan XGBoost melakukan sampling acak dan rata-rata di beberapa model dan dengan demikian berhasil mengurangi overfitting.

Dalam kompetisi pengenalan gambar ImageNet model terbaik untuk 2016 (Shao et al) adalah kombinasi dari beberapa model yang sangat baik. Beberapa dari mereka memenangkan kompetisi di tahun-tahun sebelumnya. Model ini memiliki kesalahan 20% lebih sedikit daripada model yang didasarkan pada itu. Ini adalah bagaimana rata-rata di beberapa model bisa kuat dalam bertarung dengan overfitting.

keiv.fly
sumber