Mengklasifikasikan Email dalam R

8

Saya sedang mengerjakan proyek di R di mana saya memiliki sekitar 1200 email dari sebuah perusahaan, yang sebagian besar diberi label kelas atau kelas , yang merupakan jenis permintaan. Sekitar 1000 email diberi label kelas , dan 200 email berlabel Tujuan saya adalah menggunakan pembelajaran terawasi untuk membangun model yang akan mengklasifikasikan email baru.1212

Tetapi, setelah banyak pra-pemrosesan (parsing, menghapus stopwords, dll.), Dan mencoba algoritma yang khas (SVM, pohon keputusan, dll.) Pada matriks istilah dokumen, matriks kebingungan saya mengandung banyak positif palsu dan negatif palsu, tetapi hanya beberapa negatif palsu dengan SVM.

Saya bertanya-tanya bagaimana saya bisa meningkatkan hasil saya? Apakah saya perlu menggunakan representasi fitur oversampling, atau bi-gram? Saya kira masalahnya adalah bahwa topik kedua kategori sangat dekat.

MarcelRitos
sumber
Bisakah Anda memberikan informasi lebih lanjut? Jenis SVM apa yang Anda gunakan — seperti pada, fungsi kernel apa, dan bagaimana Anda mengoptimalkan parameter? Bisakah Anda memberi kami informasi lebih lanjut tentang metode pra-pemrosesan yang Anda gunakan? Juga, saya perhatikan Anda mengatakan sebagian besar ada dua kelas ... bagaimana Anda menangani kelas lain?
Kyle.
"dua kategori sangat dekat" - dapatkah Anda menamainya (atau yang serupa)?
Lukas
Bisakah Anda memberikan label kelas aktual dan teks ilustrasi untuk masing-masing kelas? Sains adalah detailnya ...
Brandon Loudermilk

Jawaban:

2

(Semua email dalam bahasa Prancis atau Perancis)

Metode pra-pemrosesan:

  • Gabungkan "Ringkasan" dan "Konten" yang merupakan kepala email dan konten
  • Hapus semua alamat email
  • Hapus semua "Dari: Seseorang Ke: seseorang ... subjek: sesuatu"
  • Hapus semua gambar yang termasuk dalam email
  • Pesan email sesuai dengan kelas mereka
  • Ganti semua aksen perancis dengan aksen seperti é -> e; ê -> e ...
  • Masukkan teks ke bawah
  • hapus tanda baca
  • hapus angka
  • strip ruang putih
  • hapus beberapa nama depan dari daftar dan beberapa kata tertentu
  • hapus kata-kata berhenti dalam bahasa Prancis dan Inggris
  • dokumen batang dalam bahasa Prancis dan Inggris
  • Hapus istilah

-> Kemudian Dokumen istilah matriks, dengan TF-IDF

Dua kelas berasal dari dukungan teknis, dua kategori "kompleks" dan "mudah", "kompleks" adalah topik seputar keuangan (dalam teori), "sederhana" masalah dengan perangkat lunak (dalam teori) tetapi dalam praktiknya mereka memiliki banyak kata bersama. Dan kelas-kelas lain yang tidak saya perhitungkan, saya hanya fokus pada keduanya untuk saat ini

Sebenarnya jenis algoritma klasifikasi yang saya gunakan tidak begitu relevan karena saya mencoba dengan 5 algo dan tidak ada yang memberikan hasil yang baik

Contoh (matriks kebingungan) Pohon keputusan:

  Decision tree:           

pred:

335 | 10
59 | 12

SVM:

331 | 1
83 | 1

Knn (n=10):

330 | 2

83 | 1

Naive Bayes:

1 | 83

12 | 320

bouritosse
sumber
Anda mungkin punya alasan bagus untuk ini, tetapi mengapa Anda menghapus bidang seperti lampiran dan pengirim? Ini mungkin menyimpan informasi. Saya telah menemukan dalam pengaturan yang agak mirip, bahwa orang-orang tertentu lebih rentan terhadap dokumen penulis dari jenis tertentu.
S van Balen
Apakah matriks kebingungan untuk NB benar? (Saya berasumsi kiri atas adalah kelas 1 aktual dan prediksi)
S van Balen
0

Karena Anda hanya berurusan dengan 2 kelas, Anda dapat membuat commonality.cloud()dari kedua kelas (saya menggunakan fungsi ini pada R, saya tidak tahu tentang bahasa lain).

Ini akan menunjukkan kata-kata yang memiliki kesamaan dalam class1dan class2. Kata-kata ini mungkin tidak membantu algoritma untuk membedakan kelas sehingga Anda dapat menghapus kata-kata ini dan melakukan beberapa tes.

TheBiro
sumber
0

Anda mungkin ingin mencoba pengklasifikasi Bayesian daripada SVM atau Decision Trees. Masalah Anda adalah generalisasi dari masalah filter spam, yaitu mengklasifikasikan email menjadi 'Spam' (kelas 1) atau 'Bukan Spam' (kelas 2). Sebagian besar filter Spam menggunakan klasifikasi Bayesian alih-alih metode pembelajaran yang diawasi lebih umum.

Alex S Kinman
sumber
0

Anda dapat mempelajari fitur-fiturnya: Saya perhatikan Anda telah menghapus jumlahnya. Bisa jadi Anda melakukan itu karena mereka tidak mungkin bertabrakan, tetapi Anda juga bisa menyelesaikannya dengan memperkenalkan kelas kata (@ number @ atau @ big_number @, dll).

Anda dapat mencoba menggunakan kelas kata pada grup kata lain juga. Jika berhasil, ini mungkin menunjukkan bahwa set Anda menderita sparsity (yang tidak akan mengejutkan saya). Anda dapat menggunakan pemilih fitur untuk tujuan itu, misalnya dengan memberi peringkat dimensi Anda pada perolehan informasi.

Cara yang lebih maju untuk memerangi sparsity meliputi: Algoritma Rocchio atau word2vec.

S van Balen
sumber