Bagaimana cara belajar deteksi email spam?

8

Saya ingin belajar bagaimana pendeteksi email spam dilakukan. Saya tidak mencoba membangun produk komersial, itu akan menjadi latihan pembelajaran yang serius bagi saya. Karena itu, saya mencari sumber daya, seperti proyek yang ada, kode sumber, artikel, makalah dll yang dapat saya ikuti. Saya ingin belajar dengan contoh, saya pikir saya tidak cukup baik untuk melakukannya dari awal. Idealnya, saya ingin tangan saya kotor di Bayesian.

Apakah ada yang seperti itu? Bahasa pemrograman bukan masalah bagi saya.

Halo Dunia
sumber

Jawaban:

6

Pertama-tama periksa ini dengan seksama. Anda akan menemukan dataset sederhana dan beberapa makalah untuk ditinjau.

TETAPI Anda ingin memulai proyek pembelajaran sederhana, saya sarankan untuk tidak membaca makalah (yang jelas tidak mendasar ) tetapi cobalah untuk membangun pelajar bayesian Anda sendiri yang tidak terlalu sulit.

Saya pribadi menyarankan slide ceramah Andrew Moore tentang Model Grafis Probabilistik yang tersedia secara bebas dan Anda dapat belajar darinya secara sederhana dan langkah demi langkah.

Jika Anda membutuhkan bantuan lebih detail, komentari saja jawaban ini dan saya akan dengan senang hati membantu :)

Nikmati pembelajaran baysian!

Kasra Manshaei
sumber
2

Ada pengantar dasar metode Bayesian untuk deteksi spam dalam buku "Doing Data Science - Straight Talk from the Frontline" oleh Cathy O'Neil, Rachel Schutt.

Bab ini baik, karena menjelaskan mengapa model ilmu data umum lainnya tidak berfungsi untuk pengklasifikasi spam. Seluruh buku menggunakan R keseluruhan, jadi ambil saja jika Anda tertarik bekerja dengan R.

Ia menggunakan set email Enron sebagai data pelatihan, karena email itu sudah dibagi menjadi spam / bukan spam.

sheldonkreger
sumber
2

Ini sebenarnya adalah masalah yang sangat mendalam yang banyak orang dan perusahaan telah kerjakan. Berikut ini beberapa dasar:

Pertama, kita perlu merepresentasikan data dengan baik. Ini melibatkan entah bagaimana mewakili setiap dokumen sebagai vektor dalam ruang dimensi. Idealnya, di ruang ini, kami ingin sampel yang memiliki label yang sama berada di dekatnya dalam jarak euclidean, dan sampel yang merupakan label berbeda berada jauh di jarak euclidean. Langkah ini bisa sangat sulit, tetapi satu representasi coba-dan-benar disebut Term Frequency-Inverse Document Frequency (tf-idf). Di sini, setiap dimensi dalam ruang mewakili kata tertentu, dan nilai dalam dimensi itu untuk sampel tertentu pada dasarnya mewakili berapa kali jumlah kata itu muncul dalam dokumen. Anda dapat membaca lebih lanjut tentang itu di sini . Ada implementasi scikit-belajar yang cukup bagus dari representasi ini jika Anda ingin mencobanya.d

Sekarang data berada dalam ruang yang bermanfaat, tetapi ruang yang benar-benar berdimensi tinggi. Saya akan merekomendasikan mengurangi dimensi ini entah bagaimana, tapi itu subjek keseluruhan untuk utas lainnya.

Akhirnya Anda bisa melatih beberapa algoritma untuk mengklasifikasikan sampel (yang merupakan jawaban dari yang lain). Ada banyak pilihan bagus - jaringan saraf, adaboost, SVM, Naive Bayes, dan model klasifikasi grafis semuanya akan memberikan Anda hasil yang baik. Banyak dari ini juga memiliki implementasi di scikit-belajar.

Tetapi algoritma terbaik memanfaatkan fakta bahwa masalah ini sebenarnya merupakan pembelajaran transfer. Yaitu, distribusi dari mana data pelatihan dan pengujian datang mungkin tidak persis sama - karena hal-hal yang dianggap orang sebagai spam mungkin berbeda dari hal-hal yang orang lain anggap sebagai spam.

Jordan A
sumber
Bisakah Anda menguraikan paragraf terakhir Anda ("transfer belajar")? Bisakah Anda memberikan tautan atau nama?
Valentas
1
Dalam pembelajaran mesin konvensional, kami memiliki beberapa data yang berasal dari distribusi probabilitas tertentu. Kemudian kita belajar semacam model pada data itu, berharap bahwa model tersebut akan digeneralisasi ke contoh-contoh yang tidak terlihat selama pelatihan. Ini hanya akan berfungsi jika sampel yang tidak terlihat ini berasal dari distribusi probabilitas yang sama, jadi kami menganggap ini masalahnya. Dalam pembelajaran transfer, kami tidak membuat asumsi itu. Berikut makalah survei di lapangan.
Jordan A
Dan bagaimana Anda membuat dvariabel? Apakah itu nomor tetap yang dipilih oleh seorang ilmuwan?
Martin Vseticka
Pendekatan umum adalah memiliki kata , dan masing-masing elemen dalam vektor mewakili frekuensi kata tersebut muncul dalam teks. Hanya ada begitu banyak kata unik yang digunakan dalam semua sampel yang Anda pertimbangkan, jadi ada batas atas yang pasti pada . Para peneliti biasanya juga menghapus beberapa jenis kata yang menurut mereka tidak akan berguna untuk klasifikasi, seperti "the," "dan," "it," dll.ddd
Jordan A