Twitter menjadi salah satu media sosial yang populer di dunia maya. Twitter
dapat dijadikan sarana penyebaran informasi dalam status pengguna, 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.
ABSTRACT
Twitter has became one of the most popular social media in the internet.
Twitter could be used as a facility to spread message in the form of user status.
This situation opens the chance for some people to spread spam. The purpose of
this research is to identify the spammer‟s behaviors on Twitter. This research
focused on user‟s behavior rather than the tweet content of Twitter. The
classification algorithm used is C5.0 that produces tree-based classification model
and rule based model. Classification was performed on the Twitter data in the
period of January 2015–August 2015. This research used 11 attributes that
indicate user‟s behavior. Spammer classification that uses the C5.0 algorithm was
successfully performed. Decision tree based models produce 4 classification rules
with accuracy 91%, whereas the rule based model produce 3 classification rules
with accuracy 91%. The attributes that appeared on the tree and the rule based
model are user‟s age and average tweet per day.
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer
Disetujui oleh
Diketahui oleh
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.
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
Pembuatan Model Klasifikasi menggunakan Algoritme C5.0 14
Karakteristik Spammer 15
Analisis dan Evaluasi Model Klasifikasi 17
SIMPULAN DAN SARAN 18
Simpulan 18
Saran 18
DAFTAR PUSTAKA 18
RIWAYAT HIDUP 29
DAFTAR TABEL
DAFTAR GAMBAR
1 Tahapan penelitian 6
2 Tahapan praproses data 6
3 Tampilan aplikasi pengelolaan pada Twitter 9
4 Model pohon keputusan untuk klasifikasi spammer dan nonspammer 15
5 Sebaran usia akun 16
6 Sebaran rataan tweet per hari 17
DAFTAR LAMPIRAN
1 Fungsi pada package twitteR yang digunakan pada penelitian 20
2 Dataset sebanyak 120 akun Twitter yang digunakan pada penelitian 21
3 Contoh penggunaan algoritme C5.0 23
4 Visualisasi sebaran data 9 atribut yang tidak muncul pada tree 26
PENDAHULUAN
Latar Belakang
Perumusan Masalah
Tujuan Penelitian
Manfaat Penelitian
TINJAUAN PUSTAKA
Microblogging
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 spamming 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
atribut yang didefinisikan pada atribut A dapat dilihat pada Persamaan 1 (Han et al.
2012):
Info(D) = -∑ l (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):
D (2)
InfoA(D) = -∑ D
D
Untuk mendapatkan nilai gain yang diperoleh pada atribut A dapat dilihat pada
Persamaan 3 sebagai berikut:
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
Tahapan Penelitian
Pengumpulan Data
Praproses Data
tentang suatu akun seperti nama akun dan jumlah tweet, sedangkan fungsi
userTimeline menyediakan data tentang status yang pernah di posting oleh
pengguna. Data dari kedua fungsi ini diseleksi dan dilakukan transformasi untuk
mendapatkan atribut perilaku pengguna. 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.
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.
Kelas prediksi
Kelas aktual
Nonspammer Spammer
Nonspammer TP FN
Spammer FP TN
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 = (5)
N
N (6)
Specificity = N
Lingkungan Pengembangan
Pengumpulan Data
twitCred<-OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=requestURL,
accesURL=accesURL,
authURL=authURL)
Pengguna memasukkan kode acak kemudian server menerima verifikasi
tersebut maka terhubunglah server dengan Twitter. Tahap verifikasi selesai,
fail disimpan dengan nama twitter_credentials. Setelah semua tahap selesai,
fail dapat langsung dipanggil tanpa harus melakukan tahapan dari awal.
Kode pada R sebagai berikut:
twitCred$handshake(cainfo=”cacert.pem”)
registerTwitterOAuth(twitCred)
save(list=”twitCred”,file=”twitteR_credentials”)
Praproses Data
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 dicari dan cacert.pem merupakan fail yang berisi
sertifikasi otoritas publik.
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.
11
Transformasi Data
Tahap ini dilakukan penyeleksian atribut pada fungsi userTimeline. Kode
pada sintaks R untuk memperoleh atribut yaitu
userTimeline(“nama_akun”,n,cainfo=”cacert.pem). n adalah
banyaknya 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.
Atribut nama akun, jumlah followers, jumlah following, dan jumlah tweet
didapat 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 lakukan
perhitungan rasio followers per following. Perhitungannya menggunakan rumus
pada Persamaan 7.
la ll (7)
Rasio followers per following =
la ll
tanggal unik yang ada pada atribut created. Setelah itu dilakukan perhitungan
rataan tweet per hari menggunakan rumus pada Persamaan 9.
∑ (9)
Rataan tweet per hari =
dimana n(ti) adalah banyaknya tweet pada tanggal ke-i, i merupakan indeks dari
tanggal dan n adalah jumlah tanggal unik.
Menghitung nilai rataan, median, minimum, dan maksimum 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 10 sebagai berikut:
∑ - - (10)
Rataan selang waktu antara tweet = -
dimana tj adalah waktu status di posting, j merupakan indeks dari tanggal, dan
m merupakan banyaknya tweet dari pengguna.
Perhitungan minimum selang waktu antara tweet menggunakan rumus pada
Persamaan 11 sebagai berikut:
Perhitungan median selang waktu antara tweet dapat dilihat dari nilai selisih
yang sudah didapat. Nilai median merupakan nilai tengah.
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
14
berapa banyak yang berisi screen name pengguna lain. Kode untuk menghitung
jumlah reply dengan menggunakan sintaks R yaitu
length(which(“nama_akun”$replyToSN!=”NA”)).
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.
Model
Atribut
Tree Rule based
Usia akun 100% 96.30%
Rataan tweet per hari 45.37% 84.26%
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. Dari gambar tersebut dapat dilihat bahwa usia akun
merupakan atribut yang cukup baik untuk memisahkan kelas spammer dan
nonspammer. Untuk visualisasi 9 atribut lainnya dapat dilihat pada Lampiran 4,
terlihat bahwa atribut-atribut tersebut tidak dapat memisahkan kelas spammer dan
nonspammer dengan baik. Contohnya pada visualisasi pada atribut jumlah
following, terlihat pada satu batang diagram histogram terjadi pencampuran warna
antara spammer dan nonspammer. Hal tersebut memperlihatkan bahwa terjadi
kemiripan antara nilai atribut tersebut pada kelas spammer dan nonspammer.
Kelas prediksi
Kelas aktual
Nonspammer Spammer
Nonspammer 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:
4 (12)
Specificity = 4 100 0
1
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
18
lebih lama daripada kelas spammer dan memiliki jumlah yang lebih sedikit pada
rataan tweet per hari.
Simpulan
Saran
DAFTAR PUSTAKA
Han J, Kamber M, Pei J. 2012. Data Mining: Concepts and Techniques. 3rd ed.
United States of America: Morgan Kaufman Publisher.
Hu X, Tang J, Zhang Y, Liu H. 2013. Social Spammer Detection in
Microblogging. Di dalam: Proceedings of the Twenty-Third International Joint
Conference on Artificial Intelligence.
Java A, Finin T, Tseng B, Song X. 2007. Why We Twitter: Understanding
Microblogging Usage and Communities.
[Kemenkominfo] Kementerian Komunikasi Informatika. 2013. Kominfo:
pengguna internet di Indonesia 63 juta orang. [Internet]. [diunduh 2015 Juni
27]. Tersedia pada:
http://kominfo.go.id/index.php/content/detail/3415/%20Kominfo+:+Pengguna+
Internet+di+Indonesia+63+Juta+Orang/0/berita_satker.
Patil N, Lathi R, Chitre V. 2012. Customer card classification based on C5.0 and
CART algorithms. Di dalam: International Journal of Enggineering Research
and Applications ; 2012 July-August. 2 (4):164-167.
Rulequest. 2012. C5.0: An Informal Tutorial. [Internet]. [diunduh 2015 November
23]. Tersedia pada: https://www.rulequest.com/see5-unix.html.
Song J, Lee S, Kim J. 2011. Spam Filtering in Twitter using Sender Receiver
Relationship. Di dalam: Dept. of CSE, POSTECH; Republic of Korea.
Spamhaus. 2004. The Definition of Spam. [Internet]. [diunduh 2015 Mei 27].
Tersedia pada: https://www.spamhaus.org/consumer /definition.
Wang AH. 2010. Detecting spam bots in online social networking sites. Di dalam:
A Machine Learning Approach. 2010. hlm 335-342.
20
Lampiran 2 Dataset sebanyak 120 akun Twitter yang digunakan pada penelitian
Data dibagi menjadi 6 data latih dan 4 data uji secara acak, kemudian tentukan
label dari Tabel L3.1, selanjutnya tentukan nilai information gain total dari atribut
tersebut. Nilai information gain total yaitu
Lampiran 3 Lanjutan
Table L3.2 Hasil information gain pada masing-masing atribut
Total 6 4 2 0.92301
Usia akun - - - -
>925 3 3 0 0
≤ 925 3 1 2 0.92301
Rataan - - - -
tweet per
hari
>6.95 2 2 0 0
≤6.95 4 2 2 1
Gain = - -
Keterangan:
Langkah selanjutnya cari nilai gain yang paling tinggi pada Tabel L3.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:
25
Lampiran 3 Lanjutan
N
Akurasi = N N
Total 6 4 2 0.92301 -
>925 3 3 0 0 -
≤ 925 3 1 2 0.92301 -
Rataan - - - - 0.26301
tweet per
hari
>6.95 2 2 0 0 -
≤6.95 4 2 2 1 -
26
Lampiran 4 Visualisasi sebaran data 9 atribut yang tidak muncul pada tree
Lampiran 4 Lanjutan
Gambar L4.4 Sebaran data atribut rasio followers per following berdasarkan kelas
Gambar L4.5 Sebaran data atribut maksimum selang waktu antara tweet
berdasarkan kelas
Gambar L4.6 Sebaran data atribut median selang waktu antara tweet berdasarkan
kelas
28
Lampiran 4 Lanjutan
Gambar L4.7 Sebaran data atribut minimum selang waktu antara tweet
berdasarkan kelas
Gambar L4.8 Sebaran data atribut rataan selang waktu antara tweet berdasarkan
kelas
RIWAYAT HIDUP