KLASIFIKASI SPAMMER PADA TWITTER BERDASARKAN PERILAKU PENGGUNA MENGGUNAKAN ALGORITME C5.0
TANTRIYANA PUSPA ANGGITASARI
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2015
PERNYATAAN MENGENAI SKRIPSI DAN SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA Dengan ini saya menyatakan bahwa skripsi berjudul Klasifikasi Spammer pada Twitter Berdasarkan Perilaku Pengguna Menggunakan Algoritme C5.0 adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini. Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor. Bogor, Desember 2015 Tantriyana Puspa Anggitasari NIM G64134036
ABSTRAK TANTRIYANA PUSPA ANGGITASARI. Klasifikasi Spammer pada Twitter Berdasarkan Perilaku Pengguna Menggunakan Algoritme C5.0. Dibimbing oleh IMAS SUKAESIH SITANGGANG dan HUSNUL KHOTIMAH. Twitter menjadi salah satu media sosial yang populer di dunia maya. Twitter dapat dijadikan sarana penyebaran informasi dalam status mereka, hal ini membuka peluang bagi beberapa pihak untuk menyebarkan spam. Penelitian ini bertujuan untuk mengidentifikasi karakteristik perilaku spammer di Twitter. Penelitian ini difokuskan terhadap perilaku pengguna bukan pada isi konten tweet pada Twitter. Algoritme klasifikasi yang digunakan adalah algoritme C5.0 yang menghasilkan model klasifikasi pohon keputusan dan berbasis aturan. Klasifikasi dilakukan dengan data Twitter pada periode Januari 2015 – Agustus 2015. Penelitian ini menggunakan 11 atribut yang menunjukan perilaku pengguna Twitter. Klasifikasi spammer menggunakan algoritme C5.0 telah berhasil dilakukan. Untuk model berbasis pohon keputusan menghasilkan 4 aturan dengan akurasi 91%, sedangkan model berbasis aturan menghasilkan 3 buah aturan dengan akurasi 91%. Atribut yang muncul pada aturan pohon keputusan dan berbasis aturan adalah usia akun dan rataan tweet per hari. Kata kunci: C5.0, klasifikasi spammer, perilaku spammer, spammer, Twitter
ABSTRACT TANTRIYANA PUSPA ANGGITASARI. Classification of Spammers on the Twitter Based on User Behaviour using C5.0 Algoritme. Supervised by IMAS SUKAESIH SITANGGANG and HUSNUL KHOTIMAH. The twitter has became one of the populer social media in the virtual world. The Twitter could be used as a facility information on their status. This situation open the chance for the people to spread spam. The purpose of this research is to identify the spammers behaviours on the Twitter. This research focused on user’s behavior rather than on the tweet content of Twitter. The classification algorithm used is C5.0 that results classification model in form of a tree and a rule based model. Classification was performed on the Twitter data in January 2015 – August 2015. This research used 11 attributes that indicase user’s behavior Twitter. Spammer classification that uses the C5.0 algorithm was successfully performed. Decesion tree based models produce 4 classification rules with accuracy 91%, whereas the rule based model produce 3 classification rules with accuracy 91%. The attribute that appeared on the tree and the rule based model are age user’s and average tweet per day. Keywords: behaviour of spammers, C5.0, classification spammers, spammer, Twitter
KLASIFIKASI SPAMMER PADA TWITTER BERDASARKAN PERILAKU PENGGUNA MENGGUNAKAN ALGORITME C5.0
TANTRIYANA PUSPA ANGGITASARI
Skripsi sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2015
Penguji : 1. Muhammad Asyhar Agmalaro, SSi MKom
Judul Skripsi : Klasifikasi Spammer pada Twitter Berdasarkan Perilaku Pengguna Menggunakan Algoritme C5.0 Nama : Tantriyana Puspa Anggitasari NIM : G64134036
Disetujui oleh
Dr Imas Sukaesih Sitanggang, SSi MKom Pembimbing I
Husnul Khotimah, SKomp MKom Pembimbing II
Diketahui oleh
Dr Ir Agus Buono, MSi MKom Ketua Departemen
Tanggal Lulus:
PRAKATA Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas segala karunia-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul “Klasifikasi Spammer pada Twitter Berdasarkan Perilaku Pengguna Menggunakan Algoritme C5.0”. Skripsi ini disusun sebagai syarat mendapatkan gelar Sarjana Komputer (SKomp) pada Program Sarjana Ilmu Komputer di Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor (IPB). Penulis menyadari bahwa selama mengerjakan tugas akhir ini mengalami berbagai kendala. Akan tetapi berkat kerja sama dan bimbingan dari berbagai pihak dan atas berkat rahmat Allah subhanahu wa ta’ala kendala yang dihadapi dapat diselesaikan dengan baik. Untuk itu penulis ucapkan terima kasih kepada mamah, papah, serta seluruh keluarga atas segala dukungan, doa dan kasih sayangnya. Penulis juga ucapkan terima kasih kepada Ibu Dr Imas Sukaesih Sitanggang, SSi MKom dan Ibu Husnul Khotimah, SKomp MKom selaku pembimbing yang telah sabar, tulus, dan ikhlas meluangkan waktu, tenaga, dan pikiran dalam memberikan bimbingan, motivasi, arahan dan saran yang bermanfaat bagi penulis. Penulis juga ucapkan terima kasih kepada Bapak Muhammad Asyhar Agmalaro, SSi MKom selaku penguji atas saran dan masukan yang diberikan. Begitu pula rasa terima kasih penulis kepada rekan-rekan Program Alih Jenis angkatan 8 yang menjadi bagian hidup penulis selama menempuh pendidikan di Program Alih Jenis Ilmu Komputer FMIPA IPB. Semoga karya ilmiah ini bermanfaat.
Bogor, Desember 2015 Tantriyana Puspa Anggitasari
DAFTAR ISI DAFTAR TABEL
ix
DAFTAR GAMBAR
ix
DAFTAR LAMPIRAN
ix
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
2
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
TINJAUAN PUSTAKA
3
Microblogging
3
Twitter
3
Spammer Detection
3
Algoritme C5.0
4
METODE
5
Tahapan Penelitian
5
Pengumpulan Data
6
Praproses Data
6
Pembangunan Model Klasifikasi menggunakan Algoritme C5.0
7
Perhitungan Akurasi
7
Analisis dan Evaluasi Model Klasifikasi
8
Lingkungan Pengembangan
8
HASIL DAN PEMBAHASAN
8
Pengumpulan Data
8
Praproses Data
10
1.
Seleksi Data
10
2.
Transformasi Data
11
Pembuatan Model Klasifikasi menggunakan Algoritme C5.0
14
Karakteristik Spammer
15
Analisis dan Evaluasi Model Klasifikasi
17
SIMPULAN DAN SARAN
17
Simpulan
17
Saran
18
DAFTAR PUSTAKA
18
RIWAYAT HIDUP
26
LAMPIRAN
20
RIWAYAT HIDUP
26
DAFTAR TABEL 1. 2. 3. 4. 5. 6. 7.
Confusion matrix hasil klasifikasi Hasil seleksi pada fungsi getUser Contoh beberapa dataset pada fungsi userTimeline Hasil seleksi pada fungsi userTimeline Hasil penggabungan fungsi getUser dan userTimeline Penggunaan atribut dalam model klasifikasi Confusion matrix untuk model deteksi spammer
7 11 11 11 12 15 17
DAFTAR GAMBAR 1. 2. 3. 4. 5. 6.
Tahapan penelitian Tahapan praproses data Tampilan aplikasi pengelolaan pada Twitter Model pohon keputusan untuk klasifikasi spammer dan nonspammer Sebaran usia akun Sebaran rataan tweet per hari
6 6 9 15 16 16
DAFTAR LAMPIRAN 1. Fungsi pada package twitteR yang digunakan pada penelitian 2. Dataset sebanyak 120 akun Twitter yang digunakan pada penelitian 3. Contoh penggunaan algoritme C5.0
20 21 23
PENDAHULUAN Latar Belakang Twitter merupakan sebuah situs microblogging yang populer (Hu et al. 2013). Twitter menjadi salah satu media sosial yang populer di Indonesia. Kemenkominfo (2013) menyatakan bahwa pengguna Internet di Indonesia mencapai 63 juta orang, 95% di antaranya mengakses media sosial. Indonesia menempati peringkat ke-5 untuk pengguna terbanyak Twitter. Twitter digandrungi oleh semua usia mulai dari remaja hingga dewasa. Twitter dapat mengirimkan pesan pendek dengan jumlah karakter maksimal 140 karakter. Pesan tersebut biasa disebut dengan tweet. Twitter dikategorikan sebagai microblogging service. Microblogging merupakan blog yang memungkinkan penggunanya untuk mengirimkan sebuah pesan teks (status) yang singkat, baik untuk dilihat semua orang atau kelompok terbatas yang dipilih oleh pengguna tersebut. Twitter menyediakan informasi begitu besar. Ada banyak informasi dalam Twitter yang sifatnya up to date dan informasi tersebut sangat bermanfaat untuk sebagian orang. Akan tetapi, meskipun menarik dengan adanya kemudahan dalam penyebaran berita dan memungkinkan pengguna untuk membahas berita tersebut dalam status mereka, layanan ini juga membuka peluang adanya spam (Benevenuto et al. 2010). Penelitian deteksi spammer pada Twitter dapat dilakukan 2 cara yaitu berdasarkan perilaku pengguna dan berdasarkan konten isi dari tweet. Penelitian yang menyajikan deteksi spammer berdasarkan konten terdapat pada penelitian Ghosh et al. (2012) mengenai fungsi search pada Twitter yang memudahkan pencarian trending topic dan berita terkini yang menarik perhatian spammer. Tweet spammer biasanya mendorong pengguna untuk menyebarkan informasi dengan cara mengirim tautan URL dengan tujuan agar pengguna Twitter mengunjungi URL (Song et al. 2011), selain itu spammer juga melakukan banyak mention ke akun non followers. Hasil penelitian Grier et al. (2011) juga menyebutkan bahwa Twitter spam lebih berhasil memaksa pengguna untuk mengklik URL dibanding email spam dengan rasio klik 0.13%. Perkembangan spamming tidak terhenti hanya mengirimkan tweet sampah, tetapi sudah menjurus ke arah penipuan. Spam yang terkirim kepada pengguna dapat menimbulkan masalah, pengguna dapat menghabiskan waktunya untuk menghapus tweet yang berisi spam. Akibatnya banyak pengguna yang merasa terganggu oleh banyaknya tweet sampah tersebut, untuk mengatasi hal ini diperlukan suatu filter yang dapat membedakan spammer atau nonspammer. Benevenuto et al. (2010) telah melakukan deteksi spammer berdasarkan perilaku pengguna dan konten atribut dengan menggunakan algoritme Support Vector Machine. Penelitian fokus terhadap pendeteksian spammer pada tweets yang termasuk spam. Data yang digunakan dalam penelitian ini adalah tweets yang mengemukakan trending topic pada tahun 2009, yaitu Michael Jakcson‟ death, Susan Boyle‟s emergence dan #musicmonday. Atribut yang digunakan dalam penelitian ini meliputi 39 atribut yang berupa konten tweets, dan 23 atribut tentang perilaku user. Pada penelitian ini, berhasil mengenal kelas spammer sebesar 70% dan 96% kelas nonspammer. Oleh karena itu, pada penelitian ini akan fokus
2 terhadap perilaku pengguna bukan pada isi konten tweet pada Twitter, karena dalam melakukan penyeleksian berdasarkan perilaku pengguna lebih mudah dan lebih cepat dilakukan dibandingkan konten atribut. Penyeleksian berdasarkan konten atribut harus melihat satu per satu kata dalam teks yang di posting oleh user, sedangkan berdasarkan perilaku hanya melihat sifat dari user seperti jumlah followers, jumlah following, jumlah tweet, rasio followers per following, usia akun pengguna, rataan tweet per hari, jumlah reply, rataan, median, minimum, dan maksimum selang waktu antara tweet. Model klasifikasi dibangun dengan menggunakan bahasa pemograman R dengan package C50. Algoritme C5.0 adalah salah satu algoritme data untuk melakukan klasifikasi dengan pemodelan pohon keputusan (tree) dan pemodelan berbasis aturan (rule based). Model klasifikasi ini diharapkan dapat memberikan informasi karakteristik perilaku pengguna spammer dan nonspammer. Perumusan Masalah Perumusan masalah dalam penelitian ini adalah : 1. Bagaimana mengklasifikasikan spammer atau nonspammer pada Twitter degan menggunakan algoritme C5.0? 2. Bagaimana karakteristik perilaku spammer pada akun Twitter? Tujuan Penelitian Tujuan penelitian ini adalah : 1. Membuat model klasifikasi perilaku akun spammer atau nonspammer di Twitter menggunakan metode pohon keputusan dan berbasis aturan. 2. Menentukan karakteristik perilaku spammer berdasarkan pemodelan algoritme C5.0. Manfaat Penelitian Penelitian ini bisa menghasilkan pemodelan klasifikasi spammer dan dapat mengetahui karakteristik perilaku pengguna akun spammer atau nonspammer pada Twitter. Ruang Lingkup Penelitian Ruang lingkup pada penelitian ini antara lain: 1. Penelitian ini dilakukan pada media sosial Twitter, dengan jumlah 120 akun Twitter. 2. Penelitian ini fokus terhadap perilaku user, bukan pada isi konten tweet pada Twitter dan menggunakan 11 atribut yaitu jumlah followers, jumlah following, jumlah tweet, rasio followers per following, usia akun pengguna, rataan tweet per hari, jumlah reply, rataan, median, minimum, dan maksimum selang waktu antara tweet. 3. Implementasi algoritme C5.0 yang tersedia pada R.
3
TINJAUAN PUSTAKA Microblogging Microblogging adalah salah satu jenis komunikasi, pengguna dapat menulis dan mempublikasikan status (kurang dari 200 karakter) yang dikirim melalui instant messaging, email atau web (Java et al. 2007). Salah satu microblog yang banyak dipakai oleh pengguna adalah Twitter, selain Twitter situs web jejaringan sosial yang memiliki fitur microblog adalah Facebook dan MySpace. Seperti blog pada umumnya yang melakukan posting sederhana. Beberapa layanan microblogging menawarkan fitur seperti pengaturan privasi untuk mengontrol siapa saja yang dapat membaca microblog mereka. Twitter Twitter merupakan salah satu contoh microblogging yang banyak dipakai. Pada Twitter pengguna tidak hanya bisa membaca tweet tetapi pengguna bisa memberi tautan tweet melalui antarmuka situs web, pesan singkat, atau melalui aplikasi untuk perangkat lunak seluler. Twitter mengalami perkembangan yang sangat pesat, Twitter dapat mengirimkan pesan pendek dengan jumlah karakter maksimal 140 karakter untuk setiap tweet (Benevenuto et al. 2010). Twitter menyediakan API (Aplication Programming Interface) yang sangat baik, sehingga memudahkan setiap orang untuk mengambil data dari Twitter. Twitter API terdiri dari dua komponen yang berbeda, REST dan SEARCH API. REST API memungkinkan developer Twitter untuk mengakses data core Twitter (tweet, timeline, user data). SEARCH API digunakan untuk membuat query tweet, termasuk menyediakan informasi tentang trending topics (Wang 2010). Spammer Detection Spam adalah pesan atau email yang dikirimkan secara massal tanpa dikehendaki oleh penerimanya. Arti dari “secara massal“ yaitu pesan yang merupakan bagian dari sekumpulan pesan yang memiliki isi yang sama (Spamhaus 2004). Tindakan menyebarkan spam disebut dengan spamming, sedangkan orang yang melakukan spam disebut spammer. Drucker et al. (1999) mengartikan spam merupakan pesan yang tidak diinginkan oleh penerimanya tanpa menyebutkan secara detail apa pesan tersebut dikirimkan secara massal atau tidak. Fitur yang digunakan pada penelitian Benevenuto et al. (2010) adalah jumlah followers, jumlah following, rasio folowers per following, jumlah tweet, usia akun pengguna, jumlah mention, jumlah tweet yang dibalas user, jumlah tweet user membalas seseorang, jumlah followers yang di dalam following, jumlah tweet yang diterima following, jumlah tweet yang di post per hari dan per minggu, nilai rataan jangka waktu antara tweet, nilai median jangka waktu antara tweet, nilai minimum jangka waktu antara tweet, dan nilai maksimum jangka waktu antara tweet.
4 Algoritme C5.0 Algoritme C5.0 merupakan perluasan dari algoritme C4.5. Algoritme C5.0 adalah salah satu algoritme klasifikasi yang terdapat dalam data mining, yang khususnya diterapkan pada decision tree. C5.0 adalah algoritme klasifikasi yang dapat menangani kumpulan data besar. Govindarajan (2007) menyatakan bahwa algoritme C5.0 meningkatkan kecepatan sekitar 90% antara 5.7 sampai dengan 240 kali lebih cepat daripada C4.5. Algoritme C5.0 lebih baik daripada C4.5 dalam hal akurasi, kecepatan dan memori (Rulequest 2012). Menurut Pati et al. (2012) pemilihan atribut dalam algoritme C5.0 diproses dengan menghitung besarnya nilai information gain. Dalam memilih atribut untuk memecahkan objek harus pilih atribut yang menghasilkan information gain paling besar. Model klasifikasi yang digunakan adalah pohon keputusan (tree) dan berbasis aturan (rule based). Model pohon keputusan merupakan suatu diagram yang mirip dengan struktur pohon seperti flowchart, yang masing-masing simpul merupakan atribut, masing-masing cabang menunjukan nilai dari atribut, dan masing-masing simpul daun menunjukan label kelas. Pada model berbasis aturan terdiri atas kondisi if-then yang merupakan penurunan dari model pohon keputusan (Han et al. 2012). Algoritme Generate_decision_tree adalah sebagai berikut: 1. D, merupakan dataset yang telah ditentukan label kelasnya. 2. Attribute_list, merupakan atribut kandidat yang menggambarkan suatu dataset. 3. Attribute_selection_method, merupakan suatu prosedur untuk memilih atribut yang mengolah tuple yang diberikan berdasarkan kelas masingmasing. Algoritme klasifikasi pohon keputusan adalah sebagai berikut (Han et al. 2012): 1. Buat simpul N. 2. Jika tuple di D memiliki kelas yang sama yaitu C maka jadikan N sebagai simpul daun dan beri label C. 3. Jika attribute_list kosong, maka jadikan simpul N sebagai simpul daun dan diberi label dengan kelas yang terbanyak. 4. Terapkan attribute_selection_attribute untuk mendapatkan atribut split yang terbaik. 5. Beri label simpul N dengan atribut split. 6. Jika atribut split bernilai diskret dan dapat dipisahkan, maka 7. Attribute_list <- attribute_list – atribut split 8. Untuk setiap nilai j dari atribut split, yaitu Buat Dj menjadi kumpulan data tuple untuk memenuhi hasil j. Jika Dj kosong, maka tambahkan simpul daun dengan label dari kelas yang terbanyak. Selainnya, tambah cabang baru dengan memanggil fungsi Generate_decision_tree (Dj, attribute_list) ke simpul N. 9. Kembali ke N. Pada algoritme ini, pemilihan atribut menggunakan information gain paling besar. Nilai information gain terbesar ditentukan sebagai atribut pemisah untuk simpul N. Atribut ini meminimumkan informasi yang dibutuhkan untuk
5 mengklasifikasi tuple dalam partisi yang dihasilkan. Dalam pemilihan ukuran atribut yang didefinisikan pada atribut A dapat dilihat pada Persamaan 1 (Han et al. 2012): Info(D) = -∑i
i log
i
(1)
dimana Pi adalah peluang kelas dalam output seperti pada kelas |Ci.D|/|D|. Atribut A memiliki nilai tertentu (a1, a2, …, av). Atribut A dapat digunakan pada partisi D ke dalam v subset (D1,D2,…,Dv), dimana Dj berisi sample pada D yang bernilai aj pada A. Jika A dipilih sebagai atribut tes (sebagai contoh atribut untuk split), maka subset ini akan berhubungan pada cabang dari node himpunan D, untuk mendapatkan informasi nilai subset dari atribut A tersebut maka digunakan formula pada Persamaan 2 (Han et al. 2012): InfoA(D) = -∑vj
Dj D
nfo Dj
(2)
Untuk mendapatkan nilai gain yang diperoleh pada atribut A dapat dilihat pada Persamaan 3 sebagai berikut: Gain (A) = Info(D) – InfoA(D)
(3)
Gain(A) menyatakan bahwa ada berapa banyak cabang yang akan diperoleh pada A. Atribut A dengan information gain tertinggi, maka Gain(A) dipilih sebagai atribut pada node.
METODE Penelitian ini difokuskan terhadap perilaku pengguna dengan atribut sebanyak 11, dan tidak menggunakan isi konten tweet pada Twitter. Data yang digunakan dalam penelitian ini adalah data yang diambil dari Twitter menggunakan Twitter API. Akun yang digunakan terdiri dari 99 akun perorangan dan 21 akun instansi atau lembaga. Data berjumlah 120 data dan diperoleh selama periode Januari 2015 sampai dengan Agustus 2015. Tahapan Penelitian Tahapan-tahapan penelitian yang dilakukan dalam penerapan algoritme C5.0 untuk mengklasifikasikan data Twitter pada Gambar 1.
6
Gambar 1 Tahapan penelitian Pengumpulan Data Tahap pertama adalah pengumpulan data. Data Twitter digunakan untuk mendapatkan informasi yang dibutuhkan pada penelitian. Pengambilan data Twitter menggunakan perangkat lunak Rstudio 0.98.1102 yang didukung dengan package twitteR. Package twitteR merupakan sebuah package yang dapat terhubung dengan Twitter API. Paket twitteR memerlukan beberapa nilai atribut yang dibutuhkan yaitu consumer key, consumer secret, acces token, dan acces token secret, untuk mendapatkan nilai atribut tersebut harus melakukan koneksi R terlebih dahulu pada Twitter. Setelah berhasil membuat koneksi dari R ke Twitter API, langkah yang dilakukan selanjutnya adalah: 1. Mencari akun spammer dan nonspammer sebanyak 120 data akun pengguna yang terdiri dari 99 akun perorangan dan 21 akun instansi atau lembaga pada Twitter. 2. Setiap akun diberi label secara manual yaitu spammer dan nonspammer. 3. Mengambil data dari R yang sudah terhubung dengan Twitter API. Fungsi pada package twitteR yang digunakan pada penelitian ini dapat dilihat pada Lampiran 1. Praproses Data Tahapan ini, melakukan pemilihan data yang akan digunakan pada penelitian. Tahapan praproses data dapat dilihat pada Gambar 2.
Gambar 2 Tahapan praproses data Praproses data dibagi menjadi 2 tahap, yaitu seleksi data dan transformasi data. Fungsi pada package twitteR yang digunakan pada penelitian ini adalah fungsi getUser dan fungsi userTimeline. Fungsi getUser melakukan penyeleksian
7 atribut pada tahap seleksi data, sedangkan fungsi userTimeline digunakan untuk penyeleksian atribut pada transformasi data. Tahap transformasi data selain melakukan penyeleksian atribut juga melakukan penggabungan atribut pada fungsi getUser dan fungsi userTimeline yang sudah diseleksi sehingga untuk setiap akun akan memiliki atribut seperti jumlah followers, jumlah following, jumlah tweet, rasio followers per following, usia akun pengguna, rataan tweet per hari, jumlah reply, rataan, median, minimum, dan maksimum selang waktu antara tweet dengan memiliki 2 macam label yaitu spammer dan nonspammer. Pembangunan Model Klasifikasi menggunakan Algoritme C5.0 Pada tahap ini membangun model klasifikasi menggunakan algoritme C5.0. Algoritme C5.0 bekerja untuk menghasilkan aturan-aturan klasifikasi dalam bentuk pohon keputusan (tree) dan berbasis aturan (rule based). Algoritme ini menggunakan ukuran information gain dalam membuat pohon keputusan. Pembagian dataset pada penelitian ini sebesar 90% data latih dan 10% data uji. Setelah pembagian dataset selesai dilakukan, pembangunan model klasifikasi dilakukan. Perhitungan Akurasi Penelitian ini dibutuhkan beberapa alat ukur antara lain confusion matrix. Confusion matrix mengandung informasi tentang hasil aktual dan prediksi dari proses klasifikasi yang dilakukan oleh sistem (Han et al. 2012). Tabel 1 merupakan bentuk dari confusion matrix. Tabel 1 Confusion matrix hasil klasifikasi Kelas aktual Nonspammer Spammer
Kelas prediksi Nonspammer Spammer TP FN FP
TN
Keterangan sel dalam confusion matrix sebagai berikut: True Positive (TP), yaitu akun dari kelas nonspammer yang benar diklasifikasikan sebagai nonspammer. True Negative (TN), yaitu akun dari kelas spammer yang benar diklasifikasikan sebagai spammer. False Positive (FP), yaitu akun dari kelas spammer yang salah diklasifikasikan sebagai nonspammer. False Negative (FN), yaitu akun dari kelas nonspammer yang salah diklasifikasikan sebagai spammer. Dengan menggunakan data hasil klasifikasi dalam confusion matrix dapat menghitung nilai akurasi yang merupakan perbandingan dari akun yang diklasifikasikan secara benar. Cara menghitung akurasi adalah (Han et al. 2012)
8 Akurasi = TP
TP TN TN FP FN
(4)
Selain dari pengukuran akurasi, evaluasi juga dilakukan terhadap sensitivity dan specificity. Sensitivity adalah kemampuan model untuk mengenal kelas nonspammer, untuk mendapatkan nilai sensitivity adalah (Han et al. 2012) Sensitivity = TP
TP FN
(5)
Specificity adalah kemampuan model untuk mengenal kelas spammer, untuk mendapatkan nilai specificity adalah (Han et al. 2012) TN
Specificity = TN
FP
(6)
Analisis dan Evaluasi Model Klasifikasi Pada tahap ini menganalisis dan evaluasi pada dataset Twitter dengan menggunakan data Twitter yang baru. Data tersebut merupakan lapisan penjelas yang akan diprediksi menggunakan algoritme C5.0. Lingkungan Pengembangan Spesifikasi perangkat keras dan perangkat lunak yang digunakan untuk penelitian ini adalah sebagai berikut: 1. Perangkat keras berupa komputer personal dengan spesifikasi sebagai berikut Processor Intel® CoreTM i5-2410M CPU @2.30GHz RAM 6 GB Monitor LCD 14.0” HD Harddisk 512 GB HDD 2. Perangkat lunak: Sistem Operasi Windows 8.1 Bahasa pemograman R versi 3.12 RStudio versi 0.98.1102 dengan memanfaatkan package twitteR untuk menghubungkan dengan Twitter API, package C5.0 untuk klasifikasi data, package Caret untuk pembagian data latih dan data uji.
HASIL DAN PEMBAHASAN Pengumpulan Data Langkah pertama harus membuat koneksi ke Twitter API dengan cara membuat aplikasi pengelolaan pada Twitter terlebih dahulu di https://apps.twitter.com/. Pada aplikasi ini terdapat consumer key (API key) dan consumer secret (API secret). Consumer key dan consumer secret setiap aplikasi berbeda-beda sehingga kedua key tersebut merupakan identitas aplikasi yang telah
9 dibuat. Key tersebut diperlukan untuk melakukan authorization. Tampilan aplikasi pengelolaan pada Twitter dapat dilihat pada Gambar 3.
Gambar 3 Tampilan aplikasi pengelolaan pada Twitter Setelah tahap pembuatan aplikasi pengelolaan Twitter selesai dilakukan, koneksi R ke Twitter API dilakukan. Kode koneksi ke Twitter sebagai berikut : Ketika pengguna mengakses R melalui jaringan internet, server R akan merespon dan memanggil library twitteR, untuk mengambil data Twitter. Library(twitteR) Library twitteR melakukan otorisasi terlebih dahulu sebelum memanggil RCurl untuk meminta sertifikasi hak otoritas pada „ http://curl.haxx.se/ca/cacert.pem‟ dan mengembalikan pada library twitteR dalam bentuk file. download.file(url=’http://curl.haxx.se/ca/cacert.pem’ ,destfile=’cacert.pem’) Library ROAuth melakukan otorisasi dengan Twitter menggunakan sertifikat yang telah dipanggil oleh library RCurl. Server R meminta kode acak pada pengguna yang dikirimkan oleh Twitter. Pernyataan berikut digunakan pada saat proses authorization, kode pada R untuk melakukan proses authorization sebagai berikut: requestURL<“https://api.twitter.com/oauth/request_token” accesURL<-“https://api.twitter.com/oauth/acces_token” #proses authorization authURL<-https://api.twitter.com/oauth/authorize consumerKey <- “Your Consumer Key” consumerSecret <- “ Your Consumer Secret” twitCred<-OAuthFactory$new(consumerKey=consumerKey, consumerSecret=consumerSecret, requestURL=requestURL, accesURL=accesURL, authURL=authURL)
10 Pengguna memasukkan kode acak kemudian server menerima verifikasi tersebut maka terhubunglah server dengan Twitter. Tahap verifikasi selesai, fail disimpan dengan nama twitter_credentials. Kode pada R sebagai berikut: twitCred$handshake(cainfo=”cacert.pem”) registerTwitterOAuth(twitCred) save(list=”twitCred”,file=”twitteR_credentials”) Pada RStudio dibutuhkan package twitteR untuk menghubungkan dengan Twitter API. Package twitteR memerlukan 3 package yaitu RCurl, ROAuth, dan rjson. Package RCurl digunakan untuk mengunduh fail di http://curl.haxx.se/ca/cacert.pem dan disimpan dengan nama cacert.pem, package ROAuth diperlukan untuk proses authorization. Proses authorization memerlukan consumer key dan consumer secret. Pada saat proses authorization, R secara otomatis membuka browser untuk melakukan verifikasi dengan aplikasi Twitter dan muncul kode numerik secara acak. Tahap verifikasi selesai, fail disimpan dengan nama twitter_credentials. Setelah semua tahap selesai, fail dapat langsung dipanggil tanpa harus melakukan tahapan dari awal. Tahap membuat koneksi R ke Twitter selesai dilakukan, kemudian mencari akun spammer dan nonspammer sebanyak 120 data akun Twitter yang dapat dilihat pada Lampiran 2. Data tersebut diambil secara manual kemudian setiap akun diberi label secara manual yaitu spammer dan nonspammer. Untuk menentukan label spammer atau nonspammer dapat ditentukan dari banyaknya user mengirimkan tweet ke banyak orang dengan teks yang sama dalam waktu yang singkat, isi tweet hanya promosi, dan tweet berisi URL yang tidak jelas. Setiap akun akan memiliki 11 atribut seperti jumlah followers, jumlah following, jumlah tweet, rasio followers per following, usia akun pengguna, rataan tweet per hari, jumlah reply, rataan, median, minimum, dan maksimum selang waktu antara tweet. Data ini akan digunakan untuk mendapatkan informasi yang dibutuhkan pada penelitian, data tersebut diperoleh dari Twitter API. Praproses Data Tahap pengumpulan data selesai dilakukan, kemudian dilakukan praproses data. Tahap ini melakukan pemilihan atribut pada paket twitteR yang terdapat di R, atribut tersebut yang digunakan pada penelitian. Tahap praproses data terdiri atas 2 tahap, yaitu seleksi data dan transformasi data. 1. Seleksi Data Seleksi data dilakukan untuk memilih atribut yang digunakan pada fungsi getUser. Langkah pertama yang harus dilakukan adalah memasukkan satu per satu nama user pada sintaks R. Kode pada sintaks R untuk memperoleh nilai atribut yaitu getUser(“nama_akun”,cainfo=”cacert.pem), nama_akun merupakan nama user yang akan dicari dan cacert.pem merupakan fail yang berisi sertifikasi otoritas publik.
11 Fungsi getUser memiliki 13 atribut. Akan tetapi, tidak semua atribut dibutuhkan dalam penelitian ini sehingga dipilih 4 nilai atribut. Atribut tersebut dapat dilihat pada Tabel 2. Tabel 2 Hasil seleksi pada fungsi getUser Fungsi getUser
Atribut followesCount friendsCount created statusesCount
Keterangan Jumlah followers pengguna Jumlah following pengguna Waktu akun dibuat Jumlah status pengguna
2. Transformasi Data Tahap ini juga dilakukan penyeleksian atribut pada fungsi userTimeline. Kode pada sintaks R untuk memperoleh atribut yaitu userTimeline(“nama_akun”,n,cainfo=”cacert.pem), n merupakan banyak tweet yang diambil, maksimal jumlah tweet yang dapat dimasukkan sebanyak 3200 tweets dan cacert.pem merupakan fail yang berisi otoritas publik. Contoh hasil fungsi userTimeline seperti pada Tabel 3. Tabel 3 Contoh beberapa dataset pada fungsi userTimeline 1 2 3 4 5 6 7
Text Selamat Pa Hai ka @S Hai ka @t Hai ka @y Hai ka @a Hai ka @h Hai ka @i
Favorite FALSE FALSE FALSE FALSE FALSE FALSE FALSE
favoriteC 4 2 1 0 0 0 0
replyToS NA NA NA NA NA NA NA
created 4/12/201
4/9/2015 4/9/2015 4/9/2015 4/9/2015 4/9/2015 4/9/2015
Truncated FALSE FALSE FALSE FALSE FALSE FALSE FALSE
replyTo NA NA NA NA NA NA NA
Fungsi userTimeline memiliki 16 atribut, akan tetapi tidak semua atribut dibutuhkan pada penelitian ini sehingga dipilih 2 atribut. Atribut tersebut pada dapat dilihat Tabel 4. Tabel 4 Hasil seleksi pada fungsi userTimeline Fungsi userTimeline
Atribut Created replyToSN
Keterangan Waktu status dibuat Screen name pengguna lain yang membalas status
Pada tahap ini selain melakukan penyeleksian atribut juga menggabungkan fungsi getUser dan userTimeline yang sudah diseleksi sehingga setiap akun akan memiliki 11 atribut. Hasil penggabungan dari kedua fungsi dapat dilihat pada Tabel 5.
12 Tabel 5 Hasil penggabungan fungsi getUser dan userTimeline Atribut Nama akun Jumlah followers Jumlah following Jumlah tweet Rasio followers per following
Fungsi getUser getUser getUser getUser getUser
Usia akun Rataan tweet per hari Rataan selang waktu antara tweet Median selang waktu antara tweet Minimum selang waktu antara tweet Maksimum selang waktu antara tweet Jumlah reply
getUser getUser userTimeline userTimeline userTimeline userTimeline userTimeline
Sub fungsi Name followesCount friendsCount statusesCount followesCount, friendsCount Created Created Created Created Created Created Created
Atribut nama akun, jumlah followers, jumlah following, dan jumlah tweet di dapat secara otomatis ketika memanggil fungsi getUser, sedangkan 8 atribut lainnya harus dilakukan pencarian dengan menggunakan fungsi getUser atau userTimeline. Cara perhitungan nilai dari 8 atribut tersebut adalah: Menghitung rasio followers per following Langkah pertama yang harus dilakukan adalah menghitung jumlah followers dan jumlah following, kedua atribut tersebut bisa didapatkan secara otomatis ketika memanggil fungsi getUser. Setelah mendapatkan kedua atribut dilakukan perhitungan rasio followers per following. Perhitungannya menggunakan rumus pada Persamaan 7. Rasio followers per following =
(7)
u lah following
Menghitung usia akun Tahap ini membutuhkan atribut created pada fungsi getUser, untuk menghitung usia akun menggunakan tipe data POSIXct. Langkah pertama yang harus dilakukan adalah melihat waktu akun pengguna dibuat pada atribut created, kemudian lakukan perhitungan selisih waktu. Perhitungan untuk mendapatkan usia akun menggunakan rumus pada Persamaan 8. Usia akun = a – b
u lah followers
(8)
dimana a adalah waktu melakukan pencarian data, sedangkan b adalah waktu akun pengguna dibuat. Untuk mempermudah dilakukan operasi tanggal untuk mendapatkan data usia akun yaitu as.POSIXct(“YYYYMM-DD”) Menghitung rataan tweet per hari Atribut yang digunakan untuk menghitung rataan tweet per hari adalah
13 created yang terdapat pada fungsi userTimeline, selanjutnya mencari berapa banyak tanggal unik yang ada pada atribut created. Setelah itu dilakukan perhitungan rataan tweet per hari menggunakan rumus pada Persamaan 9. Rataan tweet per hari = ∑ni
(9)
n
dimana t adalah tanggal yang terdapat pada atribut created, i merupakan banyaknya tanggal dan n adalah jumlah tanggal unik. Menghitung nilai rataan selang waktu antara tweet Atribut yang digunakan untuk menghitung selang waktu adalah created pada fungsi userTimeline, kemudian hitung selisih tweet awal dan tweet akhir, setelah nilai selisih didapat dilakukan perhitungan rataan selang waktu antara tweet. Cara yang sama juga dilakukan untuk mendapatkan nilai median, minimum, dan maksimum selang waktu antara tweet. Perhitungan rataan selang waktu antara tweet menggunakan rumus pada Persamaan 11 sebagai berikut: Rataan selang waktu antara tweet = ∑ni
ti
ti - t i-
(10)
n-
dimana t adalah tanggal yang ada pada atribut created, sedangkan n -1 adalah jumlah banyaknya selisih. Menghitung nilai median, minimum, dan maksimum selang waktu antara tweet Langkah untuk mendapatkan nilai median, minimum, dan maksimum selang waktu antara tweet dapat dilihat dari nilai selisih yang sudah didapat. Nilai median merupakan nilai tengah, minimum merupakan nilai terkecil, dan maksimum merupakan nilai terbesar. Kode untuk mendapatkan nilai rataan, median, minimum dan maksimum selang waktu antara tweet, dengan menggunakan sintaks R yaitu : #mencari nilai selisih awal <- as.POSIXct(“nama_akun”$created[1]) for(i in 2:n){ akhir <- as.POSIXct(“nama_akun”$created[i]) temp <- awal-akhir jeda[i-1] <- temp awal <-akhir #mencari nilai rataan, median, minimum, maksimum Summary(jeda[i:n]) Menghitung banyaknya jumlah reply Atribut yang digunakan untuk menghitung jumlah reply adalah replyToSN pada fungsi userTimeline. Langkah selanjutnya dilihat pada kolom replyToSN ada berapa banyak yang berisi screen name pengguna lain. Kode untuk menghitung jumlah reply dengan menggunakan sintaks R yaitu length(which(“nama_akun”$replyToSN!=”NA”)).
14 Pembuatan Model Klasifikasi menggunakan Algoritme C5.0 Algoritme C5.0 diterapkan pada dataset Twitter dengan menghasilkan model klasifikasi berupa pohon keputusan (tree) dan berbasis aturan (rule based). Algoritme C5.0 terdapat pada perangkat lunak RStudio dengan package C50. Jumlah data pada dataset Twitter sebanyak 120 data, sebelum dibentuk klasifikasi dengan package C50, dilakukan partisi data latih dan data uji secara acak dengan 90% dataset dijadikan sebagai data latih dan 10% dataset dijadikan sebagai data uji. Klasifikasi menggunakan algoritme C5.0 pada dataset Twitter menghasilkan pohon keputusan (tree) dengan 4 aturan, sedangkan pada model berbasis aturan (rule based) menghasilkan 3 aturan seperti diberikan pada Lampiran 3. Tahapan pembuatan model klasifikasi menggunakan algoritme C5.0 menggunakan sintaks R adalah sebagai berikut : 1. Membaca dataset menggunakan sintaks R yaitu data <- read.csv(“D://hasil4.csv”) set.seed(800) 2. Partisi data latih dan data uji inTrain
15
Gambar 4 Model pohon keputusan untuk klasifikasi spammer dan nonspammer Klasifikasi menggunakan algoritme C5.0 selain menghasilkan aturan pohon keputusan (tree) juga menghasilkan aturan berbasis aturan (rule based) sebagai berikut: IF usia akun > 925 hari(59) THEN Class nonspammer IF rataan tweet per hari ≤ 6.950495(46) THEN Class nonspammer IF usia akun ≤ 925 hari AND rataan tweet per hari > 6.950495(45) THEN Class spammer Karakteristik Spammer Hasil klasifikasi dari model pohon keputusan (tree) dan model berbasis aturan (rule based) memiliki persamaan atribut dengan presentase yang berbeda. Atribut tersebut dapat dilihat pada Tabel 6. Tabel 6 Penggunaan atribut dalam model klasifikasi Atribut Usia akun Rataan tweet per hari
Model Tree 100%
Rule based 96.30%
45.37%
84.26%
Pada Tabel 6, model pohon keputusan dan model berbasis aturan menggunakan 2 atribut yaitu usia akun dan rataan tweet per hari. Atribut usia akun memiliki hasil yang paling besar pada model klasifikasi. Pada model pohon
16 keputusan (tree), atribut usia akun sebesar 100%. Atribut ini menandakan bahwa setiap pengecekan pada model pohon keputusan (tree) harus dimulai dari atribut usia akun, dengan kata lain pada model tree sepenuhnya memerlukan atribut usia akun. Pada atribut rataan tweet per hari tidak mencapai 100%, karena pada waktu pengecekan lihat atribut usia akun terlebih dahulu, jika atribut usia akun ≤925 hari maka dilakukan pengecekan pada rataan tweet per hari sebesar 45.37% dan sisanya atribut usia akun >925 hari. Pada model berbasis aturan (rule based) kedua atribut tidak mencapai 100% yang menandakan bahwa setiap aturan tidak sepenuhnya memerlukan atribut usia akun atau rataan tweet per hari. Pada saat melakukan deteksi spammer tidak perlu 11 atribut tetapi cukup dengan 2 atribut yaitu usia akun dan rataan tweet per hari karena kelas nonspammer pada atribut usia akun memiliki usia jauh lebih lama dan memiliki jumlah yang lebih sedikit pada atribut rataan tweet per hari. Grafik sebaran usia akun dapat dilihat pada Gambar 5 dan rataan tweet per hari dapat dilihat pada Gambar 6, warna merah merupakan kelas spammer dan biru merupakan kelas nonspammer.
Gambar 5 Sebaran usia akun
Gambar 6 Sebaran rataan tweet per hari
17 Analisis dan Evaluasi Model Klasifikasi Evaluasi dilakukan terhadap algoritme C5.0 dengan menggunakan confusion matrix. Presentase klasifikasi sesuai dengan kelasnya. Confusion matrix deteksi spammer dengan menggunakan algoritme C5.0 dapat dilihat pada Tabel 7. Tabel 7 Confusion matrix untuk model deteksi spammer Kelas aktual Nonspammer
Kelas prediksi Nonspammer Spammer 7 0
Spammer
1
4
Pada Tabel 7, terdapat 1 data Twitter yang diklasifikasikan tidak benar. Pada dataset Twitter telah diberi label sebagai spammer tetapi setelah dilakukan klasifikasi data diprediksi sebagai nonspammer. Evaluasi model juga dilakukan terhadap sensitivity dan specificity. Sensitivity adalah kemampuan model dalam mengenal kelas nonspammer, nilai sensitivity hasil klasifikasi adalah: Sensitivity = 7
7 0
100
100
(11)
Specificity adalah kemampuan model untuk mengenal kelas spammer, nilai specificity hasil klasifikasi adalah: Specificity = 4
4 1
100
80
(12)
Hasil yang diperoleh dari data uji bahwa rancangan menggunakan algoritme C5.0 memiliki tingkat akurasi sebesar 91%. Model lebih mengenal kelas nonspammer, karena kelas nonspammer pada atribut usia akun memiliki usia jauh lebih lama daripada kelas spammer dan memiliki jumlah yang lebih sedikit pada rataan tweet per hari.
SIMPULAN DAN SARAN Simpulan Berdasarkan penelitian yang telah dilakukan, dapat disimpulkan beberapa hal sebagai berikut : 1. Akurasi model keputusan dari data uji untuk klasifikasi akun spammer atau nonspammer sebesar 91 % dengan 4 aturan, sedangkan akurasi model berbasis aturan (rule based) adalah sebesar 91 % dengan 3 aturan. 2. Berdasarkan perilaku spammer yang mempengaruhi karakteristik klasifikasi spammer adalah usia akun dan rataan tweet per hari.
18 Saran Penelitian ini masih memiliki beberapa kekurangan. Penelitian selanjutnya dapat melakukan deteksi spammer pada konten atribut, kemudian jumlah data bisa ditambahkan untuk memaksimalkan hasil akurasi yang akan didapat. Pada proses pelabelan spammer dan nonspammer diperlukan proses pembangunan sistem identifikasi spammer dan nonspammer, untuk meningkatkan ketelitian dan keakurasian hasil dan pengambilan data bisa melalui akun @spam.
DAFTAR PUSTAKA Benevenuto F, Magno G, Rodrigues T, dan Almeida V. 2010. “Detecting spammerson twitter” dalam: CEAS 2010-Seventh annual Collaboration,Electronic messaging, Anti Abuse and Spam Conference. Drucker H, Wu D, dan Vapnik V. 1999. “Support Vector Machine for Spam Categorization” dalam: IEEE Transaction on Neural Networks. Ghosh S, Viswanath B, Kooti F, Sharma N, Korlam G, Benevenuto V, Ganguly N, Gummadi K. 2012. “Understanding and combating link farming in the twitter social network” dalam: In Proceedings of WWW. Govindarajan M. 2007. “Text Mining Technique for Data Mining Application” dalam: International Journal of Computer, Electrical, Automation, Control and Information Engineering 1 (11). Grier C, Thomas K, Song D, dan Paxson V. 2011. “Suspended accounts in retrospect: An analysis of twitter spam” dalam: In Proceedings of ACM SIGCOMM conference on Internet measurement conference. Han J, Kamber M, dan Pei J. 2012. Data Mining: Concepts and Techniques 3rd ed. United States of America: Morgan Kaufman Publisher. Hu X, Tang J, Zhang Y, dan Liu H, eds. 2013. Social Spammer Detection in Microblogging. Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence. Java A, Finin T, dan Tseng B Song X. 2007. “Why We Twitter” dalam: Understanding Microblogging Usage and Communities. Kemenkominfo, Kementerian Komunikasi Informatika. 2013.“Kominfo:pengguna internet di Indonesia 63 juta orang [internet]”.[Internet]. [Diunduh tanggal 27/06/2015].Dapat diunduh dari: http://kominfo.go.id/index.php/content/detail/3415/%20Kominfo+:+Pengguna+ Internet+di+Indonesia+63+Juta+Orang/0/berita_satker. Patil N, Lathi R, dan Chitre V. 2012. “Customer Card Classification Based on C5.0 and CART Algorithms” dalam: International Journal of Enggineering Research and Applications 2 (4). Rulequest. 2012. “C5.0: An Informal Tutorial”. [Internet]. [Diunduh tanggal 23/11/2015 ]. Dapat diunduh dari: https://www.rulequest.com/see5-unix.html. Song J, Lee S, dan Kim J. 2011. “Spam Filtering in Twitter using Sender Receiver Relationship” dalam: POSTECH. Spamhaus. 2004. “The Definition of Spam”. [Internet]. [Diunduh tanggal 27/05/2015 ]. Dapat diunduh dari: https : / / www . spamhaus . org / consumer /definition.
19 Wang AH. 2010. “Detecting Spam Bots in Online Social Networking Sites” dalam: A Machine Learning Approach.
20 Lampiran 1 Fungsi pada package twitteR yang digunakan pada penelitian Fungsi getUser getUser getUser getUser getUser getUser
Atribut description statusesCount followersCount favoritesCount friendsCount URL
Keterangan Deskripsi pengguna Jumlah status pengguna Jumlah followers pengguna Jumlah status yang difavoritkan Jumlah following pengguna URL yang terkait dengan pengguna getUser name Nama akun pengguna getUser created Waktu akun pengguna dibuat getUser screenname Screen name pengguna getUser location Lokasi pengguna getUser id ID pengguna getUser listedCount Berapa kali pengguna muncul dalam daftar umum getUser followRequestCount Jumlah pengguna lain yang mem-follow userTimeline text Status pengguna userTimeline favorite Apakah status ini menjadi favorit userTimeline favoritedCount Jumlah favorit terhadap status tersebut userTimeline replyToSN Screenname pengguna lain yang membalas status userTimeline created Waktu status dibuat userTimeline truncated Apakah status ini terpotong userTimeline replyToUID ID pengguna lain yang membalas status userTimeline id ID status userTimeline statusSource Perantara sumber pengguna untuk tweet userTimeline screenname Screenname pengguna yang memasang status userTimeline retweetCount Berapa kali status tersebut di retweet userTimeline isRetweet True jika merupakan status yang me-retweet userTimeline retweeted True jika merupakan status yang di-retweet userTimeline longitude Koordinat garis bujur dari status yang di posting userTimeline latitude Koordinat garis lintang dari status yang di posting userTimeline replyToSID ID pengguna lain yang membalas status
Tipe data Char Numerik Numerik Numerik Numerik Char Char Datetime Char Char Char Char Numerik Char Boolean Numerik Char Datetime Char Char Char Char Char Numerik Boolean Boolean Char Char Char
21 Lampiran 2 Dataset sebanyak 120 akun Twitter yang digunakan pada penelitian No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Akun Aisadip Arya_permadi ariza_fajar adhit_yap kompascom IcaHans Anditaaaw sayna_az BernataLatipah Cheppiiyy chesariapuspan CintaCllara DennySaputro16 dindin_pril danitapratiwi ebehebeh estimulyawati faikarzakky meyrenata27 firdaushuda GalangMeilasa CucuTresna gitalistyaa galaratama Itothagam juliusGdimas litarindiani panggilpipi1 MhdYons_ MarieaLiem DiyaanaAullia MenikNugraeny fw6955 nurshintaaa nundaayu purnomo_eko Fany_Herliani resturosalani rahmatsetyaji Sahadhewa NaimaHastari SiskaTaurinaF
Label Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Spammer Spammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Spammer Nonspammer Spammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer
No 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
Akun CoecuCahyati kemendag gilangmsp DelinaFauziah TelkomPromo EgaAuliania TinnaSintia Goodgrow_Ks kaskus HariTerlanjur meida_adinda infoBMKG kiran_chandra1 KAI121 Mmelani2 deanMukti Mutilestarii Fathyanurul NidaSri_Andini Shaunshata NadiraPermana NaddaYullia PanggilVina1 MittaDwinda rizma_rohima1 Allendiar sonialunna88 Wputrasejati Veronicawrlta Vitaplankton Wolf_X9 Ambimannyu Nessyalvioriza Pradityareza MRanoTryAstra Sheilashabilaa YulliYr Aulyadwiw PanggilWanda1 Anggrainims repbulikaonline Cristiisarah
Label Spammer Nonspammer Nonspammer Spammer Nonspammer Spammer Spammer Spammer Nonspammer Spammer Spammer Nonspammer Spammer Nonspammer Spammer Nonspammer Spammer Nonspammer Spammer Nonspammer Spammer Spammer Spammer Nonspammer Spammer Nonspammer Spammer Nonspammer Spammer Spammer Spammer Spammer Nonspammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Spammer Nonspammer Nonspammer Spammer
22 No 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Akun JogjaUpdate shellanurandika tentrioktaviani TommySetyono tio_staycool VanoDaniel Azizah_Rhma222 zmachmobile zanukoston alya_putri25 tribunjogja AliisaTina AlinaLiania indosat azizah_rhma61 bei70xxz triindonesia CinAuliania
Label Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Spammer Nonspammer Spammer Spammer Nonspammer Spammer Spammer Nonspammer Spammer
No 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
Akun liputan6dotcom Am67Riska detikcom EmaMatina tvOneNews okezonenews blogger_jateng azizah_rhma31 Metro_TV AuraMaheera KompasTV lenaunna CintaLiinda CintaAnndiina Jogja24jam gojekindonesia JoeliaMarpaung Harian_jogja
Label Nonspammer Spammer Nonspammer Spammer Nonspammer Nonspammer Spammer Spammer Nonspammer Spammer Nonspammer Spammer Spammer Spammer Nonspammer Nonspammer Spammer Nonspammer
23 Lampiran 3 Contoh penggunaan algoritme C5.0 Langkah pertama yang harus dilakukan dalam klasifikasi menggunakan algoritme C5.0 yaitu siapkan dataset Twitter yang akan diklasifikasikan. Dataset dapat dilihat pada Tabel 3.1. Tabel 3.1 Contoh dataset kecil 1 2 3 4 5 6 7 8 9 10
Usia akun Rataan tweet per hari >925 ≤6.95 ≤925 ≤6.95 ≤925 >6.95 ≤925 >6.95 >925 >6.95 >925 >6.95 ≤925 >6.95 >925 ≤6.95 >925 >6.95 ≤925 >6.95
Label Nonspammer Nonspammer Spammer Spammer Nonspammer Nonspammer Spammer Nonspammer Nonspammer Spammer
Pembagian data Data latih Data latih Data latih Data latih Data latih Data latih Data uji Data uji Data uji Data uji
Data dibagi menjadi 6 data latih dan 4 data uji secara acak, kemudian tentukan label dari Tabel 3.1, selanjutnya tentukan nilai information gain total dari atribut tersebut. Nilai information gain total yaitu Information gain total =
log
log
.
dimana 4 didapatkan dari jumlah nonspammer, 2 didapatkan dari jumlah spammer dari label dan 6 didapatkan dari jumlah total atribut kelas. Setelah itu cari information gain masing-masing bagian dari atribut selain label, dengan cara yang sama seperti mencari information gain total. Hasilnya dapat dilihat pada Tabel 3.2.
24 Table 3.2 Hasil information gain pada masing-masing atribut Jumlah Nonspammer
Spammer
Information gain
Total
6
4
2
0.92301
Usia akun
-
-
-
-
>925
3
3
0
0
≤ 925
3
1
2
0.92301
-
-
-
-
>6.95
2
2
0
0
≤6.95
4
2
2
1
Rataan tweet per hari
Selanjutnya mencari gain dari masing-masing atribut, untuk menentukan akar utama dari decision tree. Nilai gain sebagai berikut: Gain = . Keterangan:
-
-
.
.
0.92301 merupakan nilai information gain total 3/6, 3 didapatkan dari jumlah nonspammer, dan 6 dari jumlah label 3/6, 3 didapatkan dari jumlah spammer, dan 6 dari jumlah label 3/6 × 0.92301, 0.92301 didapatkan dari nilai information gain dari rataan tweet per hari Dan seterusnya
Langkah selanjutnya cari nilai gain yang paling tinggi pada Tabel 3.3, sehingga didapatkan akar yang pertama, dan untuk mendapatkan labelnya di dapat dari melihat nilai nonspammer atau spammer dari atribut usia akun. Nilai gain terbesar sudah didapat, kemudian baru dapat menghasilkan pohon keputusan. Karena nilai nonspammer atau spammer di atribut usia akun ≤925 hari masih belum jelas, maka dicari akar selanjutnya yaitu rataan tweet per hari. Untuk mendapatkan akurasi pada dataset dilakukan klasifikasi data uji dengan data latih, selanjutnya gunakan rumus sebagai berikut: Akurasi = TP
TP TN TN FP FN
25 Table 3.3 Hasil gain masing-masing atribut Jumlah Nonspammer
Spammer
Information gain
Gain
Total
6
4
2
0.92301
-
Usia akun
-
-
-
-
0.461505
>925
3
3
0
0
-
≤ 925
3
1
2
0.92301
-
-
-
-
-
0.26301
>6.95
2
2
0
0
-
≤6.95
4
2
2
1
-
Rataan tweet per hari
26
RIWAYAT HIDUP Penulis dilahirkan di Cilacap pada tanggal 12 September 1992 dari ayah Sunyoto dan ibu Sri Purwantiningsih. Penulis adalah putri kedua dari tiga bersaudara. Tahun 2007 penulis lulus SMA Negeri 1 Cilacap dan pada tahun yang sama penulis lulus seleksi masuk Universitas Gadjah Mada Program Diploma Komputer dan Sistem Informasi. Setelah menempuh pendidikan program Diploma penulis melanjutkan pendidikan tingkat sarjana pada Program Alih Jenis Ilmu Komputer FMIPA IPB angkatan ke 8.