Pembelajaran inkremental untuk model klasifikasi di R


11

Asumsikan, saya memiliki classifier (Ini bisa berupa pengklasifikasi standar seperti pohon keputusan, hutan acak, regresi logistik, dll.) Untuk deteksi penipuan menggunakan kode di bawah ini

library(randomForest)
rfFit = randomForest(Y ~ ., data = myData, ntree = 400) # A very basic classifier 

Say, Y is a binary outcome - Fraud/Not-Fraud

Sekarang, saya telah memprediksi pada set data yang tidak terlihat .

pred = predict(rfFit, newData)

Kemudian saya mendapatkan umpan balik dari tim investigasi mengenai klasifikasi saya dan menemukan bahwa saya telah membuat kesalahan dengan mengklasifikasikan penipuan sebagai Non-Fraud (yaitu One False Negative ) . Apakah ada yang bisa saya biarkan algoritma saya mengerti bahwa ia telah melakukan kesalahan? mis. Apakah ada cara menambahkan umpan balik ke algoritma sehingga dapat memperbaiki kesalahan?

Salah satu opsi yang dapat saya pikirkan dari atas kepala saya adalah membangun sebuah adaboost classifiersehingga classifier baru mengoreksi kesalahan yang lama. atau saya telah mendengar sesuatu dari Incremental Learningatau Online learning. Apakah ada implementasi (paket) yang ada di R?

Apakah ini pendekatan yang tepat? atau Apakah ada cara lain untuk mengubah model alih-alih membangunnya dari awal?


Apakah Anda menemukan solusinya? Saya memiliki masalah yang sama.
Blu3nx

@ Blu3nx tolong jangan gunakan jawaban untuk pertanyaan komentar. Jawaban dimaksudkan untuk menjawabnya.
Tim

Bukan jawaban, tetapi apa yang menghentikan Anda dari hanya pergi myData $ Fraud [positionofincorrectvariable] = Nilai Benar?
Dale C

Jawaban:


2

Strategi peningkatan dapat meningkatkan kinerja model Anda, sehingga patut dicoba. Sehubungan dengan pembelajaran tambahan / online, saya tidak mengetahui adanya paket dalam R yang mengimplementasikannya (yang lain, tolong perbaiki saya jika saya salah). Di Scikit Learn, ada pengklasifikasi out-of-core yang memungkinkan untuk pembelajaran tambahan. Namun, jika Anda terikat menggunakan R, Anda mungkin tidak punya pilihan selain menulis model incremental Anda sendiri. Dalam kedua kasus tersebut, melihat ke dalam pengklasifikasi Scikit Learn di luar inti mungkin memberi Anda ide untuk memulai.

Detail lain yang perlu diingat adalah sejauh mana memperbarui model pada satu false positive atau false negative akan meningkatkan kinerja model. Dalam domain penipuan, biasanya ada ribuan hingga jutaan kali lebih banyak kasus non-penipuan daripada penipuan. Karena itu, penting untuk mencoba belajar membedakan setiap instance penipuan dengan benar, tetapi memperbarui model pada instance fraud tunggal kemungkinan tidak akan mengubah model secara signifikan. Pertimbangkan strategi lain untuk mendapatkan model agar lebih penting pada kejadian penipuan.

Cara paling mudah untuk meningkatkan model yang Anda awasi, berdasarkan umpan balik dari penyelidik manusia adalah dengan membuat model terpisah dari mesin virtual yang diperbaiki (yaitu mesin virtual yang diprediksi tidak tepat yang setelah diberi label dengan benar). Anda kemudian dapat memiliki dua model Anda "memilih" pada klasifikasi instance masa depan dengan menggabungkan keanggotaan kelas yang diprediksi. Misalnya, ModelA mungkin percaya Instance1 adalah [Penipuan: 0,65, Non-Penipuan: 0,35], sedangkan ModelB percaya Instance1 adalah [Penipuan: 0,47, Non-Penipuan: 0,53]. Prediksi ensemble dengan demikian adalah [Penipuan: (0,65 + 0,47) /2=0,56, Non-Penipuan: (0,35 + 0,53) /2=0,44].

Jika model asli Anda berkinerja lebih baik daripada kebetulan, jumlah instance yang diklasifikasi dengan benar akan lebih besar daripada jumlah yang diklasifikasikan secara salah. Dengan demikian, Anda tidak ingin menghubungkan bobot yang sama dengan model jika mereka dilatih dengan jumlah instance yang tidak proporsional. Ada dua opsi langsung untuk menangani perbedaan ini: 1) menunggu sampai Anda mengumpulkan cukup banyak contoh yang dikoreksi kira-kira sama dengan jumlah model asli yang dilatih, atau 2) menetapkan bobot untuk masing-masing model berdasarkan pada bagaimana kinerja model pada set validasi.


0

Saya melakukan riset di masa lalu tentang pembelajaran online dan tambahan. Ada beberapa ide yang perlu Anda pertimbangkan.

Setiap pengklasifikasi dapat 'melakukan' pembelajaran tambahan, satu-satunya masalah adalah bahwa dengan beberapa lebih sulit untuk melakukannya. Tidak ada algoritma pembelajaran tambahan seperti itu, hanya cara untuk mencapai pembelian ini menggunakan algoritma umum. Biasanya, Anda akan memilih salah satu dari mereka dan menyesuaikan cara Anda melatihnya dan memberi makan data baik dalam batch atau secara online.

Anda dapat melakukan ini dengan dua cara: a) Latih kembali model dari awal setiap kali sampel baru (atau set sampel) tiba. Jelas ini tidak ideal, tetapi jika model Anda tidak terlalu kompleks (artinya Anda dapat melakukan seluruh pelatihan di antara kejadian yang akan datang) dan Anda membatasi ukuran dataset Anda (membuang data lama, data baru atau data acak dan menyimpan jumlah instance pelatihan yang stabil) ), ini dapat bekerja dalam beberapa skenario. Contoh yang bagus dari pembelajaran 'pseudo-incremental' ini dengan mesin-mesin vektor dukungan dapat ditemukan di sini .

b) Temukan cara untuk memperbarui parameter / bobot model Anda dengan hanya memodifikasi 'sedikit' parameter ini ketika prediksi salah. Neural Nets sangat bagus untuk ini karena Anda dapat melatih model, menyimpan bobot dan kemudian berlatih dengan kumpulan data baru saat mereka datang. Selain itu, Anda dapat mengubah tingkat pembelajaran untuk memberikan lebih banyak / kurang relevansi dengan input baru Anda. Jika Anda dapat memilih algoritma apa pun untuk kasus Anda, ini akan menjadi pilihan saya. Namun, ada banyak metode lain: misalnya dalam pendekatan Bayesian Anda dapat memodifikasi distribusi menerapkan kenaikan / penurunan numerik ke parameter tertentu (lihat ini untuk contoh lain.)

Lakukan beberapa bacaan dan cari pendekatan sebelumnya yang cocok dengan apa pun yang Anda inginkan perilaku algoritma pembelajaran Anda. Pada awalnya mungkin tampak menakutkan untuk mengatur semuanya untuk diri Anda sendiri alih-alih menggunakan perpustakaan ini atau itu, tetapi itu menjadi supercool ketika Anda sampai pada titik di mana Anda merasa bertanggung jawab atas semua proses pembelajaran model Anda.

Semoga berhasil!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.