IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING

EMAIL FILTERING

oleh AHMAD FADHIL JATMIKA M0103015

SKRIPSI

Ditulis dan diajukan untuk memenuhi sebagian persyaratan Memperoleh Gelar Sarjana Sains Matematika

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET

SURAKARTA 2010

SKRIPSI

IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING yang disampaikan dan disusun oleh AHMAD FADHIL JATMIKA

M0103015

Dibimbing oleh

Pembimbing I, Pembimbing II,

Irwan Susanto, DEA Winita Sulandari, M.Si NIP. 19710511 199512 1 001

NIP. 19780814 200501 2 002

telah dipertahankan di depan dewan penguji pada hari selasa, tanggal 25 Januari 2010 dan dinyatakan telah memenuhi syarat.

Anggota Tim Penguji Tanda Tangan

1. .......................................... NIP. 19571012 199103 1 001

1. Drs. Pangadi, M.Si

2. .......................................... NIP. 19611224 199203 1 003

2. Drs. Sugiyanto, M.Si

3. .......................................... NIP. 19810430 200812 1 001

3. Bowo Winarno, S.Si, M.Kom

Disahkan oleh Fakultas Matematika dan Ilmu Pengetahuan Alam

Dekan, Ketua Jurusan Matematika,

Prof. Drs. Sutarno, M.Sc, Ph.D Drs. Sutrima, M.Si NIP. 19600809 198612 1 001

NIP. 19661007 199302 1 001

ABSTRAK

Ahmad Fadhil Jatmika, 2010. IMPLEMENTASI METODE BAYES PADA PROSES EMAIL FILTERING. Fakultas Matematika Dan Ilmu Pengetahuan Alam Universitas Sebelas Maret Surakarta.

Spam adalah unsolicited email (email yang tidak diminta) yang berisi promosi produk, pornografi, virus dan content-content yang tidak penting, yang dikirim ke banyak orang. Masalah spam dapat diatasi dengan adanya aplikasi email filtering , yaitu aplikasi yang secara otomatis mendeteksi sebuah email, apakah email tersebut spam atau bukan. Bayesian filtering merupakan metode email filtering terbaru. Metode ini memanfaatkan teorema probabilitas yaitu teorema Bayes, dengan memprediksi probabilitas di masa depan berdasarkan informasi di masa sebelumnya.

Tujuan dalam penulisan skripsi ini adalah mengkaji penerapan metode Bayes pada proses email filtering yang mengacu pada pendekatan yang dilakukan oleh Paul Graham (Graham, 2002) dan menganalisis tingkat keakuratan dari Bayesian filtering dalam memfilter email. Hasil pengujian aplikasi terhadap 50 email yang terdiri dari 30 email spam dan 20 legitimate email, didapatkan akurasi tertinggi yang dicapai adalah 94 % dengan mengambil data training yang terdiri dari 500 email spam dan 500 legitimate email.

Kata kunci : spam, email filtering, metode Bayes.

ABSTRACT

Ahmad Fadhil Jatmika, 2010. IMPLEMENTATION OF BAYESIAN METHOD IN EMAIL FILTERING PROCESS. The Faculty of Mathematics and Natural Sciences, Sebelas Maret University.

Spam is unsolicited email (unwanted email) which contains promotional products, pornography, viruses and content-content that is not important that sent to many people. Spam problem can be overcome by email filtering applications, ie applications that automatically detect an email, whether an email is spam or not. Bayesian filtering is the latest method of email filtering. This methods use probability theorem that is Bayesian theorem, to predict the probability in the future based on the information in the past.

The purpose of this thesis is to examine the implementation of Bayesian method which refers to the approach taken by Paul Graham (Graham, 2002) and analyze the accuracy of Bayesian filtering in the process of email filtering. From the results of application testing against 50 email consisting of 30 spam email and

20 legitimate email, obtained the highest accuracy achieved is 94% by taking the training data that consist of 500 spam email and 500 legitimate email.

Key word : spam, email filtering, Bayesian method.

MOTTO

Hanya mereka yang berani gagal dapat meraih keberhasilan (Robert F. Kenedy) Selesaikan apa yang telah kamu mulai (Penulis) Sesungguhnya Allah beserta orang-orang yang sabar (QS. Al-Anfaal, 46)

PERSEMBAHAN

Kupersembahkan karya sederhana ini untuk :

· Bapak dan ibu yang sudah begitu banyak melimpahkan kasih sayang, do’a, pengorbanan serta motivasi dan dorongan kepada penulis pengorbanan

yang tidak akan pernah terbayar sampai kapan pun. · Kakak-kakak dan teman-teman yang selalu setia memberi motivasi.

KATA PENGANTAR

Segala puji bagi Allah Ta’ala. Penulis memuji, memohon pertolongan dan ampunan-Nya, serta penulis berlindung kepada Allah Ta’ala dari kejahatan diri dan keburukan amal. Rasa syukur Penulis kepada Allah Ta’ala yang telah memberikan kesempatan kepada Penulis untuk bisa menyelesaikan skripsi ini.

Maksud dari penulisan dan pengajuan skripsi ini adalah dalam rangka memenuhi sebagian persyaratan memperoleh gelar Sarjana Sains Matematika. Penulis sadar akan keterbatasan yang dimiliki dalam penulisan skripsi ini, terutama keterbatasan kemampuan dan pengetahuan, sehingga hasil skripsi ini masih jauh dari sempurna. Penulis mengucapkan terima kasih kepada pribadi- pribadi berikut yang telah membantu dalam proses penyelesaian skripsi ini.

1. Bapak Irwan Susanto, DEA selaku dosen pembimbing I dan Ibu Winita Sulandari, M.Si selaku dosen pembimbing II , yang telah dengan sabar mem- bimbing dan memberi motivasi kepada penulis dalam penulisan skripsi ini.

2. Bapak Drs. Santoso Budi W, M.Si selaku pembimbing akademik.

3. Teman-teman Gundhu Community yang selalu mengingatkan dan memberi motivasi kepada penulis.

4. Semua pihak yang telah membantu kelancaran penyusunan skripsi Penulis menyerahkan semuanya hanya kepada Allah Ta’ala dan Penulis berharap skripsi ini dapat bermanfaat bagi semua pihak yang berkepentingan.

Surakarta, 11 Januari 2009

Penulis

BAB I PENDAHULUAN

1.1 Latar Belakang Masalah

Penggunaan internet telah menjadi kebutuhan yang penting dalam kehidupan berkomunikasi. Dari sekian banyak fasilitas di internet, salah satunya adalah surat elektronik atau yang lebih dikenal sebagai email. Electronic mail (email) merupakan media komunikasi di internet seperti untuk berdiskusi (maillist), transfer informasi berupa file (mail attachment) bahkan dapat digunakan untuk media iklan suatu perusahaan. Mengingat fasilitas email yang murah dan kemudahan untuk mengirimkan ke berapapun jumlah penerimanya maka beberapa pihak tertentu memanfaatkannya dengan mengirimkan email berisi promosi produk atau jasa, pornografi, virus, dan content-content yang tidak penting ke ribuan pengguna email. Email-email inilah yang biasanya disebut dengan spam.

Dewasa ini, spam telah menjadi masalah besar di internet. Dalam jumlah sedikit, spam sebenarnya bukan masalah yang terlalu serius bagi pengguna email. Tetapi sebaliknya, spam tersebut akan menjadi masalah yang merepotkan bagi pengguna email apabila masuk ke inbox dalam jumlah yang banyak dan setiap hari. Hal ini akan mengakibatkan banyaknya waktu yang terbuang hanya untuk menghapus sekian banyak spam tersebut secara manual.

Masalah tersebut dapat diatasi dengan adanya aplikasi email filtering. Tetapi meskipun berbagai perangkat lunak email filtering banyak tersedia, masalah spam juga semakin berkembang, sehingga melahirkan beberapa metode email filtering . Salah satu metode email filtering yang paling populer yaitu metode Bayes (Bayesian filtering). Metode ini memanfaatkan teorema probabilitas yaitu teorema Bayes, dengan memprediksi probabilitas di masa depan berdasarkan informasi di masa sebelumnya.

Metode email filtering dengan metode Bayes ini pertama kali diajukan oleh M. Sahami, dkk pada 1998 (Sahami, 1998). Namun metode ini baru mendapat perhatian pada 2002 ketika diulas oleh Paul Graham dalam sebuah Metode email filtering dengan metode Bayes ini pertama kali diajukan oleh M. Sahami, dkk pada 1998 (Sahami, 1998). Namun metode ini baru mendapat perhatian pada 2002 ketika diulas oleh Paul Graham dalam sebuah

Bayesian filtering ini mengenali spam berdasarkan kata-kata (token) yang terkandung pada sebuah email. Metode ini pertama kali perlu dilatih menggunakan dua koleksi email, satu koleksi merupakan spam, dan koleksi yang lain merupakan legitimate email. Dengan cara seperti ini, pada setiap email baru yang diterima, Bayesian filtering dapat memperkirakan probabilitas spam berdasarkan kata-kata yang sering muncul pada koleksi spam atau pada koleksi legitimate email . Bayesian filtering efektif untuk memblok spam karena metode ini dapat secara otomatis mengkategorikan spam atau legitimate email.

Pada skripsi ini, penulis mencoba mengkaji penerapan metode Bayes pada proses email filtering dan kemudian menganalisis tingkat akurasi dari Bayesian filtering tersebut.

1.2 Perumusan Masalah

Berdasarkan latar belakang masalah, dibuat perumusan masalah yaitu, bagaimana cara kerja dan tingkat keakuratan Bayesian filtering dalam memfilter email, jika jumlah data training untuk melatih metode tersebut dibuat berbeda.

1.3 Batasan Masalah

Batasan masalah yang digunakan dalam penulisan skripsi ini adalah.

1. Proses email filtering pada skripsi ini mengacu pada pendekatan yang dilakukan oleh Paul Graham.

2. Bayesian filtering pada skripsi ini dibangun menggunakan bahasa pemrograman Java dengan bantuan Netbeans 6.

3. Aplikasi yang dibangun hanya bersifat simulasi (tanpa email client) yang menjelaskan tentang proses email filtering dengan menggunakan metode Bayes.

4. Email yang akan digunakan dibatasi pada email yang berupa teks saja dan berbahasa inggris, sesuai dengan ketersediaan data.

1.4 Tujuan Penelitian

Tujuan dari penulisan skripsi ini adalah.

1. Untuk mengetahui cara kerja email filtering dengan metode Bayes.

2. Menganalisis tingkat keakuratan dari Bayesian filtering dalam memfilter email, jika jumlah data training untuk melatih metode tersebut dibuat berbeda.

1.5 Manfaat Penelitian

Manfaat penelitian dari skripsi ini adalah.

1. Dapat mengetahui kelebihan dan kekurangan dari metode Bayes dalam memfilter email dan dapat mengetahui cara kerja dan kinerja dari Bayesian filtering .

2. Dapat menambah wawasan bagi pembaca khususnya software developer sehingga dalam pengembangannya dapat dibangun aplikasi yang lebih efektif dalam memerangi spam.

BAB II LANDASAN TEORI

2.1 Tinjauan Pustaka

2.1.1 Surat Elektronik (e-mail)

Surat elektronik (disingkat ratel atau surel atau surat-e) atau pos elektronik (disingkat pos-el) atau nama umumnya dalam bahasa Inggris adalah "e-mail atau email " (ejaan Indonesia: imel) adalah sarana kirim mengirim surat melalui jalur Internet. Email merupakan salah satu layanan internet yang paling banyak digu- nakan serta media komunikasi yang murah, cepat dan mudah penggunaannya.

2.1.2 Spam

Spam atau junk mail adalah penyalahgunaan dalam pengiriman berita elektronik untuk menampilkan berita iklan dan keperluan lainnya yang meng- akibatkan ketidaknyamanan bagi para pengguna web. Menurut Rahardjo (2006), spam adalah unsolicited email (email yang tidak diminta) yang dikirim ke banyak orang.

Berikut ini definisi dari spam menurut Lambert (2003).

1. Isi atau konten dari email tidak relevan dengan minat penerima.

2. Penerima tidak dapat menolak datangnya email yang tidak diminta tersebut dengan cara-cara lazim.

3. Dari sisi penerima, pengiriman dan penerimaan pesan tersebut memberikan keuntungan bagi pengirimnya. Bentuk berita spam yang umum dikenal meliputi: spam pos-el, spam pesan

instan, spam usenet news-group, spam mesin pencari informasi web (web search engine spam ), spam blog, spam berita pada telepon genggam, spam forum internet, dan lain lain. Spam ini biasanya datang bertubi-tubi tanpa diminta dan sering kali tidak dikehendaki oleh penerimanya.

Menurut Rahardjo (2006), spam terjadi akibat murahnya biaya untuk mengirimkan spam. Biaya untuk mengirimkan satu email sama dengan seribu email, atau bahkan satu juta email.

Spam dapat dikategorikan sebagai berikut.

1. Junk mail yaitu email yang dikirimkan secara besar-besaran dari suatu perusahaan bisnis, yang sebenarnya tidak kita inginkan.

2. Non-commercial spam , misalnya surat berantai atau cerita humor yang dikirimkan secara masal tanpa tujuan komersial tertentu.

3. Pornographic spam yaitu email yang dikirimkan secara masal untuk mengirimkan gambar-gambar pornografi.

4. Virus spam yaitu email yang dikirimkan secara massal, dan mengandung virus atau Trojans.

2.1.3 Email Filtering

Email filtering adalah suatu proses yang otomatis akan mendeteksi sebuah email, apakah email tersebut sebuah spam atau bukan (legitimate email). Beberapa metode yang dapat digunakan untuk email filtering antara lain Keyword filtering , Black listing dan White listing, Signature-Based filtering, Naive Bayesian (statistical) filtering.

Beberapa karakteristik email filtering yaitu.

1. Binary class email filtering hanya mengklasifikasikan email ke dalam kelas spam dan legitimate email .

2. Prediksi email filtering mampu melakukan prediksi kelas dari suatu email.

3. Komputasi mudah mengingat sifat data email yang memiliki dimensi tinggi maka dibutuhkan sebuah email filter yang mampu melakukan komputasi dengan mudah.

4. Learning mampu melakukan learning dari email-email yang sudah ada sebelumnya.

5. Kinerja yang bagus memiliki akurasi yang tinggi, meminimalkan nilai false positive dan mentolerir nilai false negative yang cukup tinggi.

2.1.4 Klasifikasi (classification)

Klasifikasi adalah proses pencarian sekumpulan model atau fungsi yang menggambarkan dan membedakan kelas data dengan tujuan agar model tersebut dapat digunakan untuk memprediksi kelas dari suatu obyek yang belum diketahui kelasnya.

Klasifikasi memiliki dua proses yaitu membangun model klasifikasi dari sekumpulan kelas data yang sudah didefinisikan sebelumnya (training data) dan menggunakan model tersebut untuk klasifikasi data uji serta mengukur akurasi dari model. Model klasifikasi dapat disajikan dalam berbagai macam model klasifikasi seperti decision trees , bayesian classification , k-nearest- neighbourhood classifier , neural network, classification (IF-THEN) rule, dll. Klasifikasi dapat dimanfaatkan dalam berbagai aplikasi seperti diagnosa medis, selective marketing , pengajuan kredit perbankan dan email.

Menurut Zdziarski (2005), klasifikasi teks adalah sebuah proses pengidentifikasian kategori dari sebuah teks yang dimasukkan. Klasifikasi teks mempunyai dua unsur penting yaitu pembelajaran dan pengambilan keputusan.

Klasifikasi terdiri dari tiga komponen penting, yaitu sebagai berikut.

1. Data training merupakan database yang berisi email yang digunakan sebagai proses pembelajaran dari filter.

2. Tokenizer tokenizer bertanggung jawab pada terjadinya proses tokenizing yaitu proses pembacaan email dan memecah-mecahnya menjadi beberapa elemen yang lebih kecil (token).

3. Analysis engine analysis engine bertanggung jawab pada terjadinya proses analisis terhadap token yang telah dihasilkan pada proses tokenizing, selanjutnya akan diambil keputusan apakah email tersebut spam atau bukan.

2.1.5 Bayesian (Statistical) Filtering

Bayesian filtering merupakan metode filter anti spam yang terbaru. Metode memanfaatkan teori probabilitas yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi probabilitas di masa depan berdasarkan pengalaman di masa sebelumnya.

Bayesian filtering mendeteksi spam dengan cara menghitung probabilitas dari suatu pesan (email) berdasarkan isinya. Probabilitas ini dapat dihitung dengan terlebih dahulu membuat suatu database spam dan database non spam. Kemudian dengan proses training, Bayesian filtering dapat dilatih untuk melihat kata-kata yang sering digunakan pada spam, sehingga pada akhirnya dihasilkan filter anti spam yang akurat dengan sesedikit mungkin false positives. False positives adalah email legal yang ditujukan kepada penerima, tetapi karena kesalahan dari filter anti spam, dikategorikan menjadi spam .

Pada dasarnya, metode Bayesian filtering merupakan merupakan pengembangan dari metode penilaian pesan (scoring content-based filter, hampir sama dengan keywords filtering) yaitu filter mencari karakteristik kata-kata yang banyak digunakan pada spam, kata-kata ini diberi nilai individual, dan nilai spam secara keseluruhan dihitung dari nilai individual tersebut (Satterfield, 2005). Tetapi metode ini memiliki kelemahan yaitu karakteristik kata-kata pada spam dan legitimate email akan berbeda-beda untuk setiap individu. Kata “business” misalnya yang untuk sebagian orang akan termasuk pada karakteristik kata-kata pada spam, tetapi untuk perusahaan tertentu yang bergerak di bidang itu, kata “business” tersebut akan termasuk pada legitimate email. Dapat dikatakan bahwa algoritma scoring content-based filter ini tidak kompatibel.

Lain halnya dengan scoring content-based filter, Bayesian filtering akan membuat daftar karakteristik kata-kata spam dan legitimate email secara otomatis. Tentunya terlebih dahulu, kita harus mengklasifikasikan email-email mana saja yang termasuk spam dan mana yang termasuk legitimate email. Bayesian filtering akan menghitung probabilitas dari kata-kata yang umum digunakan pada spam berdasarkan klasifikasi ini. Karakteristik dari spam yang dapat diidentifikasi Lain halnya dengan scoring content-based filter, Bayesian filtering akan membuat daftar karakteristik kata-kata spam dan legitimate email secara otomatis. Tentunya terlebih dahulu, kita harus mengklasifikasikan email-email mana saja yang termasuk spam dan mana yang termasuk legitimate email. Bayesian filtering akan menghitung probabilitas dari kata-kata yang umum digunakan pada spam berdasarkan klasifikasi ini. Karakteristik dari spam yang dapat diidentifikasi

2.1.6 Perhitungan Probabilitas Berdasarkan Bayesian Filtering

Pada awalnya, Bayesian filtering ini harus di-training terlebih dahulu menggunakan sejumlah spam dan sejumlah legitimate email. Bayesian filtering akan menghitung probabilitas dari suatu token, misalnya kata “adult”, untuk muncul di kelompok spam. Probabilitas ini dapat dirumuskan sebagai berikut

dimana Pr 莠|

adalah probabilitas suatu email adalah spam dengan diketahui terdapat suatu kata misal “w”, Pr 莠 | adalah probabilitas munculnya kata misal “w” dalam email spam, Pr 莠 | adalah probabilitas munculnya kata misal “w” dalam legitimate email, Pr 莠 adalah probabilitas suatu email adalah spam, Pr 莠 adalah probabilitas suatu email adalah legitimate email,

Data statistik terbaru menunjukkan bahwa probabilitas suatu email merupakan spam adalah 80%, sehingga Pr 莠

0.2. Bayesian filtering dalam penulisan ini menggunakan asumsi bahwa peluang suatu email yang masuk untuk dikategorikan sebagai spam adalah sama dengan peluang email tersebut dikategorikan sebagai legitimate email yaitu 0.5 (Wikipedia, 2009), maka persamaan (1) diatas dapat disederhanakan menjadi

Rumus (2) oleh Graham (2002) dimodifikasi dengan menggandakan probabilitas kata yang muncul dalam legitimate email. Tujuan dari penggandaan probabilitas kata yang muncul dalam legitimate email ini adalah untuk mengurangi false positive. Sehingga rumus (2) diatas menjadi

Pr 莠|

Pr 莠|

Pr 莠|

2 · Pr莠 |

Bayesian filtering menggunakan asumsi bahwa masing-masing kata dalam email adalah independen satu sama lain (Wikipedia, 2009). Probabilitas dari masing-masing kata tersebut kemudian menggunakan aturan rantai (chain rule) Bayes untuk menentukan probabilitas dari suatu email adalah spam berdasarkan kata-kata (token) yang terkandung didalamnya. Bayesian chain rule dirumuskan sebagai berikut

a adalah probabilitas suatu email dikategorikan sebagai spam dengan adanya token misal “w1”,

b adalah probabilitas suatu email dikategorikan sebagai spam dengan adanya token misal “w2”. Pada pendekatan yang dilakukan oleh Graham (2002), diambil 15 kata (token) yang mempunyai nilai probabilitas spam tertinggi. Sehingga rumus (4) diatas dapat dituliskan menjadi

1 · 2 · 3 · … · 15 莠1 1 · 莠1 2 · 莠1 3 · … · 莠1 15 dimana adalah probabilitas bahwa email yang masuk adalah spam,

1 adalah probabilitas suatu email adalah spam dengan diketahui terdapat suatu kata “w1” didalamnya,

2 adalah probabilitas suatu email adalah spam dengan diketahui terdapat suatu kata “w2” didalamnya,

dan seterusnya, sampai dengan 15.

Hasil perhitungan akan dibandingkan dengan suatu nilai threshold tertentu yaitu 0.9 (Graham, 2002), jika kurang dari atau sama dengan threshold maka email tersebut akan dianggap legitimate email. Sebaliknya jika lebih besar dari threshold maka email akan dianggap sebagai spam.

2.2 Kerangka Pemikiran

Berdasarkan pendahuluan dan mengacu pada tinjauan pustaka, dapat disusun suatu kerangka pemikiran sebagai tuntunan dalam penulisan skripsi ini. Spam telah menjadi masalah yang serius dalam era internet saat ini. Solusi untuk melawan spam yaitu dengan menggunakan email filtering. Metode email filtering paling efektif saat ini adalah dengan Bayesian filtering, yaitu menggunakan pendekatan statistik dalam hal ini yaitu probabilitas, dengan memanfaatkan teorema Bayes. Bayesian filtering ini membutuhkan tahapan awal (learning) untuk dapat mengambil keputusan (decision making). Dengan tahapan awal yang berbeda, akan dibandingkan tingkat akurasi dari Bayesian filtering dalam memfilter email.

BAB III METODE PENELITIAN

Penulisan skripsi ini menggunakan metode studi literatur, yaitu metode penulisan dengan semua bahan diambil dari buku referensi, jurnal, dan artikel. Definisi dan teorema yang terdapat di dalam jurnal dan buku referensi digunakan dalam pembahasan. Semua email yang digunakan dalam penulisan skripsi ini didapat dari TREC 2007 Spam Track Public Corpora.

Langkah-langkah yang dilakukan untuk mencapai tujuan skripsi ini adalah sebagai berikut.

1. Melakukan studi literatur tentang email, terutama spam dan metode yang digunakan untuk mengatasi spam, terutama metode Bayesian.

2. Mempelajari tentang cara kerja metode Bayesian yang digunakan untuk proses klasifikasi email.

3. Mengumpulkan data-data yaitu berupa email, yang akan digunakan sebagai training database dan sebagai email yang akan diujikan.

4. Untuk email yang akan digunakan sebagai training database, terlebih dahulu harus diklasifikasikan menjadi 2 kategori, yaitu spam dan legitimate email.

5. Pembuatan program dengan menggunakan bahasa pemrograman Java untuk menggambarkan proses filtering dengan metode Bayesian.

6. Dilakukan ujicoba dan analisis program yang telah dibuat disertai dengan pengambilan kesimpulan.

Dalam proses pembuatan aplikasi Bayesian filtering ini, penulis menggunakan perangkat keras dan perangkat lunak berikut ini :

1. Perangkat keras perangkat keras yang penulis gunakan berupa seperangkat komputer personal (PC) yang memiliki spesifikasi seperti pada Tabel 3.1.

Tabel 3.1. spesifikasi perangkat keras Jenis perangkat

Spesifikasi

Prosesor Intel Pentium 4 CPU 3.40GHz Memori

1 Gb RAM

Harddisk

Seagate Barracuda 40Gb

Kartu vga

Nvidia gforce 7100 GS

Monitor Samsung SyncMaster 551v

2. Perangkat lunak perangkat lunak yang penulis gunakan diberikan pada Tabel 4.2. Tabel 3.2. spesifikasi perangkat lunak

Jenis perangkat

Spesifikasi

System operasi Windows XP Professional Edition Service Pack 3 Teks editor

TextPad

Java GUI builder

NetBeans IDE 6.1

BAB IV PEMBAHASAN

Pada bab ini akan dijelaskan tahap-tahap pembuatan aplikasi Bayesian filtering yang terdiri dari.

1. Pembuatan database email yang terdiri dari data training dan data testing.

2. Perancangan Bayesian filtering dengan netbeans IDE. dan selanjutnya akan dilakukan pengujian dari aplikasi Bayesian filtering yang telah dibuat.

4.1. Pembuatan Database Email

Untuk pembuatan database email ini, penulis menggunakan kumpulan email (corpus) dari TREC 2007 Spam Track Public Corpora. Dalam email corpus ini terdapat 37.822 email yang terdiri dari 12.910 email yang merupakan legitimate email dan 24.912 email yang merupakan spam, tetapi tidak digunakan semua dikhawatirkan akan memboroskan memori pada saat digunakan dalam aplikasi.

Dari email corpus ini, kemudian akan dipisahkan menjadi dua, yaitu corpus untuk data training dan corpus untuk data testing. Pada training corpus terlebih akan dipisahkan menjadi dua corpus, yaitu spam dan legitimate email. Langkah selanjutnya adalah membuat file teks untuk masing-masing corpus dengan TextPad, yaitu spam.txt dan ham.txt, yang selanjutnya file ini akan digunakan pada proses training dari aplikasi Bayesian filtering.

4.2. Perancangan Bayesian Filtering Dengan Netbeans IDE

Sebelum masuk pada tahap pembuatan form aplikasi Bayesian filtering, terlebih dulu akan dijelaskan secara singkat mengenai proses-proses yang ada pada aplikasi Bayesian filtering, proses-proses tersebut adalah sebagai berikut.

1. Proses tokenizing.

2. Proses pemberian nilai pada token.

3. Proses combining.

Diagram alir sistem secara keseluruhan dapat dilihat pada Gambar 4.1 sebagai berikut

START

input training corpus

PROSES TRAINING

tokenizing

scoring

input testing email

0.9 email adalah spam

tidak

email adalah legitimate email

END

Gambar 4.1. Diagram alir sistem

4.2.1. Proses Tokenizing

Pada proses tokenizing, training email dan testing email akan dibaca dan dipecah-pecah menjadi beberapa komponen yang lebih kecil (token). Proses tokenizing akan membaca seluruh teks pada email, termasuk header message, body message , kode-kode html dan javascript (Graham, 2002).

Berikut akan diberikan contoh bagaimana proses tokenizing pada suatu email. Seperti contoh email dibawah ini

From: "Julie Ellison" <gcgbswamlgqy@sbcglobal.net> Subject: Dont Pay For Name Brand Drugs Date: Sun, 11 Apr 2045 10:21:05 +0600

CANADIAN GENERICS NOW HAS VALIUM Order Some HERE

akan dihasilkan beberapa token sebagai berikut

from julie ellison gcgbswamlgqy sbcglobal net subject dont pay for name brand drugs date sun 11 apr 2045 10 21

05 0600 canadian generics now has valium order some here 05 0600 canadian generics now has valium order some here

4.2.2. Proses Pemberian Nilai Pada Token (Scoring)

Setelah email yang diterima dipisahkan menjadi beberapa token, maka setiap token akan diberi nilai atau disebut juga dengan metode scoring. Metode ini memberikan nilai (score) pada setiap token yang telah diproses dengan metode tokenizing . Langkah-langkah pada proses scoring adalah sebagai berikut.

1. Untuk tiap-tiap token yang dihasilkan, akan dilihat dalam tabel hash untuk mengetahui jumlah kemunculan dari token.

2. Dihitung nilai probabilitas token dengan rumus (3).

3. Jika perhitungan nilai probabilitas token menghasilkan nilai lebih besar dari

0.99, maka probabilitas token diset menjadi 0.99.

4. Jika perhitungan nilai probabilitas token menghasilkan nilai lebih kecil dari

0.01, maka probabilitas token diset menjadi 0.01.

5. Untuk token yang tidak terdapat dalam tabel atau belum pernah muncul sebelumnya, nilai probabilitas token diset menjadi 0.4.

Diagram alir untuk proses scoring dapat dilihat seperti pada Gambar 4.2 berikut ini

Scoring

Token ada dalam nilai token di-set tabel tidak menjadi 0.4

Gambar 4.2. Diagram alir proses scoring.

Sebagai contoh, misalkan token “the” muncul 96 kali pada spam corpus dan muncul 48 kali pada legitimate corpus. Dengan jumlah total token, 224 pada email spam dan 112 pada legitimate email, akan didapatkan nilai probabilitas spam dari token “the” tersebut sebagai berikut

Hasil dari perhitungan ini adalah nilai probabilitas antara 0.0 dan 1.0, dengan 0.5 adalah nilai netral. Nilai netral disini berarti bahwa token tersebut tidak akan dipakai oleh filter untuk proses combining, karena bukan merupakan interesting token .

Interesting token adalah token yang mempunyai suatu nilai yang dianggap dapat mempengaruhi filter dalam proses pengambilan keputusan apakah email yang diujikan merupakan spam atau tidak.

Semakin dekat nilai probabilitas suatu token dengan 1.0, semakin tinggi tingkat spam token tersebut. Setelah proses tokenizing dan pemberian nilai token, selanjutnya dapat dibuat suatu database token, dimana dalam aplikasi Bayesian filtering ini berupa dua buah tabel hash masing-masing untuk spam corpus dan legitimate corpus . Tabel hash ini memetakan token ke dalam nilai probabilitasnya (Graham, 2002).

4.2.3. Proses Combining

Proses combining terjadi pada saat filter melakukan analisis terhadap email yang diuji (testing email) untuk menentukan apakah email, yang diuji merupakan spam atau legitimate email. Proses ini mengambil 15 token yang memiliki nilai terjauh dari nilai netral (0.5). Langkah-langkah yang dilakukan oleh filter adalah sebagai berikut.

1. Dihitung nilai interesting berdasarkan seberapa besar nilai probabilitas token dari nilai netral (0.5), dengan rumus sebagai berikut

2. Nilai tersebut kemudian diurutkan secara descending dan diambil 15 token teratas.

3. Dari 15 interesting token akan dihitung total probabilitas dengan rumus

4. Jika nilai

0.9, maka email tersebut adalah spam, sebaliknya jika 0.9, maka email tersebut adalah legitimate email.

Diagram alir untuk proses combining dapat dilihat seperti pada Gambar 4.3 berikut ini

Combining

Ambil 15 interesting token

Hitung probabilitas email menggunakan rumus combining

return

Gambar 4.3. Diagram alir untuk proses combining.

4.3. Aplikasi Bayesian Filtering

Berdasarkan proses-proses yang telah dijelaskan sebelumnya, dibuat aplikasi Bayesian filtering menggunakan bahasa pemrograman java dengan bantuan Netbeans IDE 6.1. Tahap-tahapnya adalah sebagai berikut.

1. Membuat sebuah kelas untuk mendeskripsikan token. Berikut ini adalah kode program dari kelas word. public class Word {

private String word; private int countBad; private int countGood; private float rBad; private float rGood; private float pSpam;

public Word(String s) { public Word(String s) {

public void countBad() { countBad++; }

public void countGood() { countGood++; }

public void calcBadProb(int total) { if (total > 0) rBad = countBad / (float) total; }

public void calcGoodProb(int total) { if (total > 0) rGood = 2*countGood / (float) total; }

public void finalizeProb() { if (rGood + rBad > 0) pSpam = rBad / (rBad + rGood); if (pSpam < 0.01f) pSpam = 0.01f; else if (pSpam > 0.99f) pSpam = 0.99f; }

public float interesting() { return Math.abs(0.5f - pSpam); } public float getPGood() { return rGood; } public float getPBad() { return rBad; } public float getPSpam() { return pSpam; } public void setPSpam(float f) { pSpam = f; } public String getWord() { return word;

Fungsi kelas word diatas adalah untuk mendeskripsikan token yang telah di- tokenizing yaitu berupa string token, total kemunculan pada spam corpus, total kemunculan pada legitimate corpus dan nilai spam dari token. Pada perhitungan nilai spam dari token, jika nilainya kurang dari 0.01, maka nilai spam dari token tersebut akan di-set menjadi 0.01 dan jika nilai lebih besar

0.99, maka akan di-set menjadi 0.99.

2. Membuat tampilan form aplikasi Bayesian filtering.

Form Bayesian filtering ini terdapat empat panel, yaitu panel training, panel analizing , panel interesting word dan panel statistical result. Dalam panel training terdapat tiga tombol, yaitu tombol browse untuk mencari file spam corpus , tombol browse untuk mencari file legitimate corpus dan tombol proses untuk menjalankan proses training. Dalam panel analizing terdapat dua tombol, yaitu tombol open untuk mencari file testing corpus dan tombol analize untuk menjalankan proses analisis dari filter. Dalam panel interesting word terdapat tabel yang akan memperlihatkan interesting token yang dihasilkan dari proses analisis filter, dan terakhir adalah panel statistical result yang akan menampilkan hasil analisis filter berupa nilai probabilitas spam dari email corpus yang diuji. Untuk lebih jelasnya tampilan form dari Bayesian filtering seperti pada Gambar 4.4.

Gambar 4.4. Form tampilan dari aplikasi Bayesian filtering.

3. Menambahkan action listener untuk tiap tombol.

i. Tombol browse untuk spam corpus. Kode action listener-nya adalah sebagai berikut.

if ( evt.getSource ( ) == jButtonBrowse1 ){

JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter TXTFilter = new

FileNameExtensionFilter("TXT File","txt");

fileChooser.addChoosableFileFilter(TXTFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){

File nama = fileChooser.getSelectedFile ( ); jTextFieldSpam.setText(nama.getPath()); } }

ii. Tombol browse untuk legitimate corpus. Kode action listener-nya adalah sebagai berikut.

if ( evt.getSource ( ) == jButtonBrowse2 ){

JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter TXTFilter = new

FileNameExtensionFilter("TXT File","txt");

fileChooser.addChoosableFileFilter(TXTFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){

File nama = fileChooser.getSelectedFile ( ); jTextFieldGood.setText(nama.getPath()); }

Saat memulai proses training, dibutuhkan dua email corpus yaitu spam corpus dan legitimate corpus. Pada saat tombol browse dieksekusi, aplikasi akan mencari masing-masing file tersebut.

iii. Tombol proses untuk memulai proses training. Kode action listener-nya adalah sebagai berikut.

Task task1 = new Task(); task1.execute();

dimana kode ini akan mengeksekusi class task berikut ini.

public class Task extends SwingWorker{ @Override protected Object doInBackground() throws Exception { boolean count = true; int percent = 0; int wordcountSpam = 0; int wordcountGood = 0; String fileSpam = jTextFieldSpam.getText(); String fileGood = jTextFieldGood.getText(); try {

A2ZFileReader frSpam = new A2ZFileReader(fileSpam); String content = frSpam.getContent();

String[] tokensSpam = content.split(splitregex); int spamTotal = 0; for (int i = 0; i < tokensSpam.length; i++) {

String word = tokensSpam[i].toLowerCase(); Matcher m = wordregex.matcher(word); if (m.matches()) {

spamTotal++; if (words.containsKey(word)) {

Word w = (Word) words.get(word); w.countBad();

} else {

Word w = new Word(word); w.countBad(); words.put(word,w); }

} } jLabel4.setText(" "+ spamTotal); Iterator iterator = words.values().iterator(); while (iterator.hasNext()) {

Word word = (Word) iterator.next(); word.calcBadProb(spamTotal); } Word word = (Word) iterator.next(); word.calcBadProb(spamTotal); }

content.split(splitregex); int goodTotal = 0; for (int i = 0; i < tokensGood.length; i++) {

String word = tokensGood[i].toLowerCase(); Matcher m = wordregex.matcher(word); if (m.matches()) {

goodTotal++; if (words.containsKey(word)) {

Word w = (Word) words.get(word); w.countGood(); }

else {

Word w = new Word(word); w.countGood(); words.put(word,w); }

} } jLabel5.setText(" "+ goodTotal); Iterator iterator = words.values().iterator(); while (iterator.hasNext()) {

Word word = (Word) iterator.next(); word.calcGoodProb(goodTotal); }

} catch (IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER E, null, ex); }

Iterator iterator = words.values().iterator(); while (iterator.hasNext()) { Word word = (Word) iterator.next(); word.finalizeProb();

} while (percent <= 100) { if (count) { jProgressBar1.setValue(percent); jProgressBar2.setValue(percent); jLabel9.setText(" " + wordcountSpam ); jLabel10.setText(" " + wordcountGood ); Thread.sleep(100); percent += 1; wordcountSpam += 2143; wordcountGood += 3417; }

} return null; }

@Override protected void done() { String spamcount = jLabel4.getText(); String goodcount = jLabel5.getText(); jProgressBar1.setValue(100); jLabel9.setText(spamcount); jProgressBar2.setValue(100); jLabel10.setText(goodcount); jButtonProses.setEnabled(false);

Setelah file corpus dimasukkan, dilanjutkan dengan menekan tombol proses untuk memulai proses training dari aplikasi Bayesian filtering. Proses training dianimasikan dengan dua progress bar, yaitu jProgressBar1 dan jProgressBar2. Gambar 4.5 adalah tampilan aplikasi pada saat proses training.

Gambar 4.5. Tampilan aplikasi pada saat proses training.

iv. Tombol open untuk menginput email yang akan diuji. Kode action listener-nya adalah sebagai berikut.

if ( evt.getSource ( ) == jButtonOpen ){

JFileChooser fileChooser = new JFileChooser ( ) ; FileNameExtensionFilter JPEGFilter = new

FileNameExtensionFilter("TXT File","txt"); fileChooser.addChoosableFileFilter(JPEGFilter); int ret = fileChooser.showOpenDialog ( this ) ; if ( ret == JFileChooser.APPROVE_OPTION ){

File nama = fileChooser.getSelectedFile ( ); jTextFieldFile.setText(nama.getPath()); try {

FileReader fr = new FileReader(nama.getPath()); BufferedReader reader = new BufferedReader (fr) ; String temp = null ; jTextArea.setText ( "" ) ; while ( ( temp = reader.readLine ( ) ) != null )

jTextArea.append ( temp + "\n" ) ; jTextArea.append ( temp + "\n" ) ;

Saat tombol open dieksekusi aplikasi akan mencari file dari email yang akan dianalisis. Selanjutnya akan ditampilkan seluruh teks dari email tersebut dalam text area. Gambar 4.6 tampilan aplikasi pada saat membaca email yang masuk.

Gambar 4.6 Tampilan aplikasi saat membaca email yang masuk. v. Tombol analize untuk memulai proses analisis. Kode action listener-nya adalah sebagai berikut.

ArrayList interesting = new ArrayList(); try { String file = jTextFieldFile.getText();

A2ZFileReader fr = new A2ZFileReader(file); String stuff = fr.getContent();

String[] tokens = stuff.split(splitregex); for (int i = 0; i < tokens.length; i++) { String s = tokens[i].toLowerCase(); Matcher m = wordregex.matcher(s); if (m.matches()) {

Word w; if (words.containsKey(s)) {

w = (Word) words.get(s); } else { w = new Word(s);

w.setPSpam(0.4f);

} int limit = 15; if (interesting.isEmpty()) {

interesting.add(w); } else {

for (int j = 0; j < interesting.size(); j++) {

Word nw = (Word)

interesting.get(j); if (w.getWord().equals(nw.getWord())) {

break; } else if (w.interesting() >

nw.interesting()) { interesting.add(j,w); break;

} else if (j == interesting.size()-1) { interesting.add(w);

} while (interesting.size() > limit)

interesting.remove(interesting.size()-1); } } float pposproduct = 1.0f; interesting.remove(interesting.size()-1); } } float pposproduct = 1.0f;

Word w = (Word) interesting.get(i); pposproduct *= w.getPSpam(); pnegproduct *= (1.0f - w.getPSpam());

} float pspam = pposproduct / (pposproduct +

pnegproduct);

String titles[] = new String [] {"Word", "Spam Probability"}; Object[][] results = new Object[interesting.size()][titles.length];

for (int i = 0; i < interesting.size(); i++) {

Word w = (Word) interesting.get(i); results[i][0] = w.getWord();

results[i][1] = w.getPSpam(); } jTable1.setModel(new DefaultTableModel(results, titles)); jLabel14.setText(" "+ pspam); if (pspam > 0.9f) jLabel15.setText(" SPAM DETECTED ");

else jLabel15.setText(" NO SPAM DETECTED "); } catch (IOException ex) { Logger.getLogger(SpamBayes.class.getName()).log(Level.SEVER

E, null, ex); } }

Proses analisis filter dimulai dengan menekan tombol analize, yang kemudian akan menghasilkan lima belas interesting token pada tabel yang berada pada panel interesting word, seperti pada Gambar 4.7.

Gambar 4.7. Tampilan pada saat proses analisis filter.

4.4. Uji Coba Aplikasi Bayesian filtering.

Tujuan dari uji coba aplikasi Bayesian filtering ini adalah untuk menguji tingkat akurasi dari aplikasi yang telah dibuat dengan menggunakan data training (training corpus) yang berbeda-beda.

Proses uji coba ini terdiri dari lima tahap. Berikut adalah tahap-tahap pengujian dari aplikasi Bayesian filtering.

1. Tahap pertama. Pengujian dengan perbandingan jumlah data training email spam lebih banyak daripada legitimate email.

2. Tahap kedua. Pengujian dengan perbandingan jumlah data training email spam lebih sedikit daripada legitimate email.

3. Tahap ketiga. Pengujian dengan perbandingan jumlah data training email spam dan legitimate email adalah sama.

Data uji (testing corpus) untuk tiap pengujian adalah sama yaitu 50 email terdiri dari 30 email spam dan 20 legitimate email.

Setelah dilakukan proses uji coba sesuai dengan tahap-tahap diatas, didapatkan hasil sebagai berikut.

1. Tahap pertama. Hasil pengujian tahap pertama diberikan pada tabel 4.3 berikut ini. Tabel 4.3. hasil pengujian tahap pertama.

training testing

benar Salah Benar Salah akurasi spam legitimate (spam) (spam) (legitimate) (legitimate)

2. Tahap kedua. Hasil pengujian tahap kedua diberikan pada tabel 4.4 berikut ini.

Tabel 4.4. hasil pengujian tahap kedua.

training testing

Benar Salah Benar Salah akurasi spam legitimate (spam) (spam) (legitimate) (legitimate)

3. Tahap ketiga. Hasil pengujian tahap ketiga diberikan pada tabel 4.5 berikut ini. Tabel 4.5. hasil pengujian tahap ketiga.

training testing

Benar Salah Benar Salah akurasi spam legitimate (spam) (spam) (legitimate) (legitimate)

300 300 18 12 20 0 76.00% 500 500 27 3 20 0 94.00%

Dari hasil pengujian, diperoleh bahwa aplikasi Bayesian filtering mempunyai nilai akurasi paling tinggi 94% dengan mengambil data training 500 email spam dan 500 legitimate email. Dan pada saat proses pengujian ini, tidak dijumpai false positive yaitu legitimate email yang salah terklasifikasi menjadi spam.

BAB V PENUTUP

5.1. Kesimpulan

Berdasarkan hasil pembahasan, diperoleh kesimpulan bahwa klasifikasi Bayesian filtering pendekatan Paul Graham dapat digunakan dengan baik dalam aplikasi email filtering. Semakin banyak jumlah data training yang digunakan maka semakin tinggi keakuratannya, hal ini terlihat pada saat uji coba aplikasi, nilai akurasi tertinggi yaitu 94% berhasil dicapai dengan data training paling banyak. Aplikasi Bayesian filtering mempunyai false positive yang rendah, meskipun data training untuk legitimate email berjumlah sedikit.

5.2. Saran

Dari hasil pembahasan, saran yang dapat diberikan penulis adalah sebagai berikut.

1. Aplikasi dapat dikembangkan lebih lanjut sehingga mampu melakukan analisis terhadap body email bertipe html atau mime dan attachment yang dianalisa dari contentnya.

2. Aplikasi dapat juga dikembangkan lebih lanjut dengan menambahkan metode whitelist atau blacklist untuk menganalisa header email.

3. Untuk proses tokenizing dapat dikembangkan lebih lanjut agar dapat mengenali token yang berupa nomor IP, sehingga tanda titik (.) dalam nomor IP bukan dianggap sebagai token separator.

DAFTAR PUSTAKA

Graham, P., A Plan for Spam, http://www.paulgraham.com/spam.html , 2002. (diakses 19 Agustus 2008)

Graham, P., Better Bayesian filtering, http://www.paulgraham.com/better.html , 2003. (diakses 21 Agustus 2008)

Hakim, R. dan Sutarto., Mastering Java , PT Elex Media Komputindo, 2009.

Hartati, G. S., Suharto, B. H. dan Wijono, M. S., pemrograman GUI Swing Java dengan Netbeans 5 , ANDI Yogyakarta, 2007.

Lambert, A., Analysis of SPAM, Master's thesis, Department of Computer Science, University of Dublin, Trinity College, 2003.

Sahami, M., Dumais, S., Heckerman, D. dan Horvitz, E., A Bayesian Approach to Filtering Junk E-Mail , Computer Science Department, Stanford University, Stanford, 1998.

Rahardjo, B., Spam! Definisi, bahaya, penanggulangan, http://budi.insan.co.id , 2006. (diakses 7 Juli 2008)

Satterfield, B., Ten Spam-Filtering Methods Explained: Learn how different spam-fighting

http://www.techsoup.org/learningcenter/ page6028.cfm.htm , 2006. (diakses 7 Juli 2008)

techniques

work ,

Shiffman, D., Bayesian Filtering, http://www.shiffman.net/teaching/a2z/bayesian , 2005. (diakses 19 Agustus 2008)

TREC 2007 Spam Track Public Corpora, http://plg.uwaterloo.ca/~gvcormac/ treccorpus07/about.html , 2007. (diakses 25 Agustus 2009)

Wikipedia, Bayesian

http://www.wikipedia.com/ Bayesian_spam_filtering.htm , 2009. (diakses 15 September 2009)

Spam

Filtering,

Wikipedia, Spam, http://www.wikipedia.com/Spam.htm , 2009. (diakses 26 Maret 2009

Zdziarski, J., Ending Spam: Bayesian Content Filtering and the Art of Statistical Language Classification , No Starch Press, 2005.