Saya baru dalam penambangan data dan saya mencoba untuk melatih pohon keputusan terhadap kumpulan data yang sangat tidak seimbang. Namun, saya mengalami masalah dengan akurasi prediksi yang buruk.
Data terdiri dari siswa yang belajar kursus, dan variabel kelas adalah status kursus yang memiliki dua nilai - Ditarik atau Lancar.
- Usia
- Etnisitas
- Jenis kelamin
- Tentu saja
... - Status Kursus
Dalam kumpulan data ada lebih banyak contoh yang Lancar daripada ditarik. Instance yang ditarik hanya menyumbang 2% dari total instance.
Saya ingin dapat membangun model yang dapat memprediksi probabilitas bahwa seseorang akan menarik diri di masa depan. Namun ketika menguji model terhadap data pelatihan, akurasi model tersebut mengerikan.
Saya memiliki masalah serupa dengan pohon keputusan di mana data didominasi oleh satu atau dua kelas.
Pendekatan apa yang bisa saya gunakan untuk mengatasi masalah ini dan membangun classifier yang lebih akurat?
Jawaban:
Ini adalah masalah yang menarik dan sangat sering terjadi dalam klasifikasi - tidak hanya di pohon keputusan tetapi di hampir semua algoritma klasifikasi.
Seperti yang Anda temukan secara empiris, satu set pelatihan yang terdiri dari jumlah perwakilan yang berbeda dari kedua kelas dapat menghasilkan classifier yang bias terhadap kelas mayoritas. Ketika diterapkan pada set tes yang juga tidak seimbang, pengklasifikasi ini menghasilkan estimasi akurasi optimis. Dalam kasus ekstrim, pengklasifikasi dapat menetapkan setiap kasus uji tunggal untuk kelas mayoritas, sehingga mencapai akurasi yang sama dengan proporsi kasus uji milik kelas mayoritas. Ini adalah fenomena yang terkenal dalam klasifikasi biner (dan meluas secara alami ke pengaturan multi-kelas).
Ini adalah masalah penting, karena dataset yang tidak seimbang dapat menyebabkan perkiraan kinerja yang meningkat. Ini pada gilirannya dapat mengarah pada kesimpulan yang salah tentang signifikansi yang dilakukan algoritma lebih baik daripada kebetulan.
Literatur pembelajaran mesin pada topik ini pada dasarnya telah mengembangkan tiga strategi solusi.
Anda dapat mengembalikan keseimbangan pada set latihan dengan undersampling kelas besar atau dengan oversampling kelas kecil, untuk mencegah bias muncul di tempat pertama.
Sebagai alternatif, Anda dapat memodifikasi biaya kesalahan klasifikasi, seperti dicatat dalam respons sebelumnya, sekali lagi untuk mencegah bias.
Perlindungan tambahan adalah untuk mengganti keakuratan dengan ketepatan yang disebut seimbang . Ini didefinisikan sebagai rata-rata aritmatika dari akurasi khusus kelas, mana dan mewakili akurasi yang diperoleh pada contoh positif dan negatif, masing-masing. Jika classifier berkinerja sama baiknya di kedua kelas, istilah ini mengurangi ke akurasi konvensional (yaitu, jumlah prediksi yang benar dibagi dengan jumlah total prediksi). Sebaliknya, jika akurasi konvensional di atas kebetulan hanya karena penggolong mengambil keuntungan dari set tes yang tidak seimbang, maka keakuratan yang seimbang, jika sesuai, akan jatuh ke peluang (lihat sketsa di bawah).π+π-ϕ:=12(π++π−), π+ π−
Saya akan merekomendasikan untuk mempertimbangkan setidaknya dua pendekatan di atas bersamaan. Sebagai contoh, Anda dapat melakukan oversample kelas minoritas Anda untuk mencegah classifier Anda dari mendapatkan bias mendukung kelas mayoritas. Setelah ini, ketika mengevaluasi kinerja classifier Anda, Anda dapat mengganti keakuratan dengan keakuratan yang seimbang. Kedua pendekatan tersebut saling melengkapi. Ketika diterapkan bersama-sama, mereka akan membantu Anda berdua mencegah masalah asli Anda dan menghindari kesimpulan salah yang mengikutinya.
Saya akan dengan senang hati mengirimkan beberapa referensi tambahan ke literatur jika Anda ingin menindaklanjuti hal ini.
sumber
Empat ide berikut dapat membantu Anda mengatasi masalah ini.
Pilih ukuran kinerja yang sesuai dan kemudian sempurnakan hyperparameters model Anda --eg regularisasi - untuk mendapatkan hasil yang memuaskan pada dataset Validasi Silang dan setelah puas, uji model Anda pada dataset pengujian. Untuk tujuan ini, tetapkan 15% dari data Anda untuk digunakan untuk validasi silang dan 15% untuk digunakan untuk pengujian akhir. Ukuran yang ditetapkan dalam Pembelajaran Mesin, yang dianjurkan oleh Andrews Ng adalah statistik F1 yang didefinisikan sebagai . Cobalah untuk memaksimalkan angka ini pada dataset Validasi Silang dan pastikan kinerjanya stabil pada dataset pengujian juga.2∗Precision∗RecallPrecision+Recall
Gunakan parameter 'sebelum' dalam Pohon Keputusan untuk menginformasikan algoritma frekuensi sebelumnya dari kelas dalam dataset, yaitu jika ada 1.000 positif dalam set dataset 1.000.0000
prior = c(0.001, 0.999)
(dalam R).Gunakan argumen 'bobot' dalam fungsi klasifikasi yang Anda gunakan untuk menghukum berat algoritma untuk kesalahan klasifikasi kasus positif yang jarang terjadi
Gunakan argumen 'biaya' dalam beberapa algoritma klasifikasi - misalnya
rpart
dalam R-- untuk menentukan biaya relatif untuk kesalahan klasifikasi positif sejati dan negatif sebenarnya. Anda tentu harus menetapkan biaya tinggi untuk kesalahan klasifikasi kelas langka.Saya tidak mendukung oversampling, karena memperkenalkan pengamatan dependen dalam dataset dan ini melanggar asumsi independensi yang dibuat dalam Statistik dan Pembelajaran Mesin.
sumber
Saya memberi jawaban dalam topik terakhir :
Tidak hanya memberikan pendekatan yang lebih stabil, tetapi model umumnya lebih baik, sejauh menyangkut langkah-langkah yang diangkat.
sumber
Menambah jawaban @Kay Strategi solusi pertama: Sintetis Minoritas Berlebihan ( SMOTE ) biasanya lebih baik daripada kurang atau lebih pengambilan sampel dari pengalaman saya karena saya pikir itu semacam menciptakan kompromi antara keduanya. Ini menciptakan sampel sintetik dari kelas minoritas menggunakan titik data yang diplot pada ruang prediktor multivarian dan lebih atau kurang membutuhkan titik tengah antara titik yang berdekatan pada ruang tersebut untuk membuat titik sintetis baru dan karenanya menyeimbangkan kedua ukuran kelas. (tidak yakin dengan titik tengah, detail algoritma di sini
sumber