Demi kesederhanaan, katakanlah saya sedang mengerjakan contoh klasik dari email spam / bukan-spam.
Saya memiliki 20000 email. Dari jumlah tersebut, saya tahu bahwa 2000 adalah spam tetapi saya tidak memiliki contoh email bukan-spam. Saya ingin memprediksi apakah 18.000 sisanya adalah spam atau tidak. Idealnya, hasil yang saya cari adalah probabilitas (atau nilai-p) bahwa email tersebut adalah spam.
Algoritma apa yang dapat saya gunakan untuk membuat prediksi yang masuk akal dalam situasi ini?
Saat ini, saya sedang memikirkan metode berbasis jarak yang akan memberi tahu saya seberapa mirip email saya dengan email spam yang dikenal. Opsi apa yang saya miliki?
Secara lebih umum, dapatkah saya menggunakan metode pembelajaran yang diawasi, atau apakah saya perlu memiliki kasus-kasus negatif dalam pelatihan saya untuk melakukannya? Apakah saya terbatas pada pendekatan pembelajaran tanpa pengawasan? Bagaimana dengan metode semi-diawasi?
sumber
Jawaban:
Ini disebut belajar dari data positif dan tidak berlabel, atau PU learning, atau ceruk aktif pembelajaran semi-diawasi.
Secara singkat, penting untuk menggunakan data yang tidak berlabel dalam proses pembelajaran karena menghasilkan model yang meningkat secara signifikan di atas apa yang disebut pengklasifikasi kelas tunggal yang dilatih secara eksklusif pada hal-hal positif yang diketahui. Data yang tidak berlabel dapat digabungkan dalam beberapa cara, pendekatan utama adalah sebagai berikut:
Saya aktif di bidang ini, dan daripada meringkasnya di sini untuk Anda, saya sarankan membaca dua makalah saya dan referensi di dalamnya untuk mendapatkan gambaran umum domain:
sumber
kernlab
ataue1071
. Perhatikan bahwa baik bagging SVM dan RESVM memiliki sejumlah hiperparameter yang harus Anda optimalkan, untuk itu saya merekomendasikan perpustakaan Optunity (memiliki antarmuka R).Saya berasumsi tidak ada banyak kasus spam dalam 18.000 kasus Anda. Untuk menggunakan pendekatan pembelajaran terawasi untuk ini, Anda harus memiliki lebih dari 1 kategori / kelas dalam data Anda. Karena Anda tahu 2.000 kasus adalah spam, Anda dapat memberi label 18.000 kasus lainnya sebagai 'kategori tidak dikenal' dan melatih setiap model pembelajaran yang diawasi untuk memprediksi jika suatu kasus ada dalam spam atau kategori tidak dikenal. Kemudian periksa ketepatan model sampel Anda untuk melihat seberapa baik kinerja model untuk membedakan antara 2 kategori. Jika berkinerja baik, maka asumsi saya tentang beberapa kasus spam dalam kategori 'tidak dikenal' dijamin. Jika itu tidak berkinerja baik, maka Anda harus menggunakan pelajar tanpa pengawasan (seperti kmeans, dll) untuk mengelompokkan dan mengidentifikasi kelompok-kelompok homogen yang terpisah dalam data Anda. Kemudian mengidentifikasi cluster mana yang paling banyak berisi 2000 spam email, dan mana yang tidak, dan beri label masing-masing sebagai spam dan bukan spam. Selanjutnya, Anda dapat melanjutkan dengan pemodelan menggunakan pelajar yang dilindungi seperti yang saya jelaskan sebelumnya.
sumber
Apa yang OP berbicara tentang adalah klasifikasi tugas satu kelas, yang merupakan salah satu yang sangat menantang.
Ada banyak makalah tentang tugas ini di bidang penelitian yang berbeda. Saya juga menulis satu Sebuah Efisien intrinsik Karangan Verifikasi Skema Berdasarkan Ensemble Learning . Hal ini sangat mudah untuk beradaptasi itu dalam rangka untuk spam yang mengklasifikasikan / bukan spam, bukan penulis. Mencobanya dan beritahu saya jika Anda membutuhkan informasi lebih lanjut ...
sumber