Bagaimana klasifikasi digabungkan dalam klasifikasi ensemble?

8

Bagaimana penggolong ensemble menggabungkan prediksi penggolong konstituennya? Saya mengalami kesulitan menemukan deskripsi yang jelas. Dalam beberapa contoh kode yang saya temukan, ansambel hanya memperkirakan rata-rata, tetapi saya tidak melihat bagaimana ini bisa membuat akurasi keseluruhan yang "lebih baik".

Pertimbangkan kasus berikut. Penggolong ensemble terdiri dari 10 pengklasifikasi. Satu classifier memiliki akurasi 100% dari waktu dalam subset data X, dan 0% semua waktu lainnya. Semua pengklasifikasi lain memiliki akurasi 0% dalam subset data X, dan 100% semua waktu lainnya.

Menggunakan rumus rata-rata, di mana akurasi classifier diabaikan, classifier ensemble akan memiliki, paling baik, akurasi 50%. Apakah ini benar, atau saya kehilangan sesuatu? Bagaimana mengambil prediksi rata-rata dari N pengklasifikasi yang mungkin tidak mengerti mungkin dapat membuat prediksi yang lebih baik daripada pengklasifikasi tunggal yang ahli dalam domain tertentu?

Cerin
sumber

Jawaban:

5

Saya membaca contoh yang jelas dari Pengantar Penambangan Data oleh Tan et al.

Contoh tersebut mengklaim bahwa jika Anda menggabungkan pengklasifikasi Anda dengan sistem pemungutan suara, yaitu mengklasifikasikan catatan dengan kelas yang paling banyak memberikan suara, Anda memperoleh kinerja yang lebih baik. Namun, contoh ini menggunakan langsung label keluaran dari pengklasifikasi, dan bukan prediksi (saya pikir Anda maksudkan probabilitas).

Mari kita memiliki 25 pengklasifikasi independen yang memiliki kesalahan generalisasi e=1accuracy=0.35. Untuk membuat kesalahan klasifikasi catatan, setidaknya setengah dari mereka harus melakukan kesalahan klasifikasi.

Semuanya dapat dimodelkan dengan variabel acak, tetapi Anda hanya harus menghitung probabilitas bahwa setidaknya 13 dari mereka salah mengklasifikasikan catatan mana setiap istilah penjumlahan berarti bahwa classifier mendapatkan kelas catatan dengan benar dan salah.

i=1325(25i)ei(1e)(25i)=0.06
i25i

Menggunakan prediksi langsung dan menggunakan sebagai metode kombinasi rata-rata, saya pikir itu bisa sedikit lebih sulit untuk menunjukkan peningkatan dalam kinerja ensemble. Namun, hanya berfokus pada prediksi dan tanpa memperhatikan label output dari ansambel, rata-rata lebih banyak prediksi dapat dilihat sebagai penaksir probabilitas sebenarnya. Oleh karena itu, menambahkan pengklasifikasi harus meningkatkan prediksi teknik ensemble.

Simone
sumber
1
Ini adalah cara yang bagus untuk memahami mengapa ensemble bekerja. Namun kasus spesifik cenderung terlalu optimis dalam hal peningkatan kinerja. Ini adalah dasar setiap classifier dilatih (biasanya) pada data yang sama - membuat independensi dari classifier dipertanyakan.
probabilityislogic
Tentu saja, independensi adalah hipotesis yang terlalu kuat.
Simone
5

Anda melewatkan fakta bahwa penggolong "buruk" tidak memiliki keakuratan 0%, tetapi itu tidak jauh lebih baik daripada menebak secara acak.

Dengan cara ini, prediksi yang baik selalu sama dan terakumulasi (karena kebenarannya hanya satu) sedangkan prediksi yang buruk adalah noise acak yang rata-rata keluar.


sumber
Bukannya ada penggolong yang secara keseluruhan "buruk" atau "baik". Saya sedang berbicara tentang akurasi masing-masing classifier di domain tertentu. Jika satu classifier sempurna dalam domain tertentu, maka memasukkannya ke dalam ansambel berpotensi mengaburkan kegunaannya, karena semua classifier lain dapat membuat klasifikasi buruk.
Cerin
1
Kecuali jika Anda memiliki kontradiksi yang sempurna (yang hampir tidak ada dalam data nyata yang dapat digunakan), domain tidak mengubah apa-apa karena classifier juga harus menghasilkan noise, bukan hanya kelas yang buruk untuk objek di luar domainnya - dengan cara ini hanya beberapa pengklasifikasi parsial akan " bagus "di setiap domain. Bagaimanapun, jelas bahwa sinyal yang tajam dan sempurna akan dibungkam oleh suara (semoga tidak sepenuhnya), tetapi ini adalah kompromi karena tidak memiliki informasi tentang apa yang digunakan pengelompokan parsial untuk objek apa.
Maksud saya adalah jika Anda mengambil pengklasifikasi hebat dan rata-rata prediksi dengan pengklasifikasi buruk, Anda tidak mungkin mendapatkan prediksi yang lebih baik. Anda menipiskan prediksi baik Anda.
Cerin
@chriss - biasanya ketika Anda rata-rata, Anda menimbang setiap classifier sesuai dengan kinerjanya. dalam skema ini penggolong besar hanya akan terdilusi oleh penggolong hebat lainnya. Klasifikasi crap mendapatkan bobot rendah (biasanya eksponensial rendah) dan jadi jangan encer.
probabilityislogic
@ChisS Anda benar sekali - inti dari ansambel adalah Anda tidak dapat memilih classifier terbaik untuk setiap objek, sehingga Anda dapat memperdagangkan solusi yang masuk akal untuk beberapa pelemahan sinyal dengan noise dan risiko bencana pengklasifikasi basis-berkorelasi.
0

Dalam hal klasifikasi pada umumnya ada dua cara untuk menetapkan prediksi. Katakanlah ini adalah masalah klasifikasi kelas biner dan Anda memiliki 3 model untuk ensemble yang disebut m1, m2 dan m3 dan dataset pelatihan disebut train dan dataset pengujian disebut test. Model sudah dibangun di atas kereta. Kemudian kode python akan seperti berikut.

Metode pertama adalah mengambil putaran rata-rata

pred=round([m1.predict(test)+m2.predict(test)+m3.predict(test)]/3) 

Jadi output akan menjadi vektor dengan nilai 0 dan 1

Metode kedua adalah ensemble probabilitas prediksi masing-masing kelas dari model-model ini dan ensemble itu dan kemudian memutuskan kelas baik berdasarkan ambang keras atau logika.

pred_proba=[m1.predict(test).predict_proba++ m2.predict(test).predict_proba 
+m3.predict(test).predict_proba]/3 
# Simple average ensemble,however you can try weighted average as well

iterate melalui seluruh vektor pred_proba untuk menemukan mana dalam 0 dan yang 1 adalah 1 mendasarkan pada ambang keras 0,5

pred=[] # Initialize a blank list for prediction

for x in pred_proba:
 if x>0.5:
   pred.append[1]
 else:
   pred.append[0]

Jadi pred adalah prediksi ensembel terakhir.

0xF
sumber