• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

2.2 Tinjauan Pustaka

2.2.4 Pendekatan Level Data

Resampling merupakan konsep penting dalam statistik inferensial. Hal ini

digunakan untuk menarik sejumlah besar sampel dari yang asli untuk mencapai perkiraan distribusi teoritis yang mendasari. Hal ini didasarkan pada perulangan sampel dalam kumpulan data yang sama (Yu, 2003, p. 2).

Resampling ini sangat penting bagi penelitian validitas prediktif rekayasa

perangkat lunak sejak dataset rekayasa perangkat lunak dalam keadaan langka dan datanya terbatas. Hal ini berkaitan dengan kesulitan dalam mendapatkan dataset yang besar karena datanya rahasia atau datanya belum lengkap di alam (Afzal & Torkar, 2008, p. 38).

Masalah ketidakseimbangan kelas juga dapat menyebabkan masalah lain karena ukuran kecil dari kelas minoritas. Ini sering disebabkan oleh perbedaan dalam kelas. Ketika mempertimbangkan masalah ketidakseimbangan kelas, di mana data kelas minoritas yang sangat kecil, kemampuan algoritma pembelajaran (learning algorithms) untuk menemukan pola dalam data kelas minoritas tidak dapat diandalkan.

Namun dengan meningkatkan jumlah kelas minoritas dapat meningkatkan kemampuan algoritma pembelajar menjadi lebih baik, karena bisa mengenali sampel kelas minoritas dari mayoritas (Japkowicz & Stephen, 2002, p. 443).

Resampling adalah cara yang paling populer untuk mengatasi masalah ini. Resampling digunakan sebagai sarana mengubah distribusi kelas minoritas

sehingga tidak kurang terwakili ketika pelatihan algoritma pembelajar. Ada tiga pendekatan dasar untuk mengatasi masalah ketidakseimbangan kelas, yaitu

oversampling kelas minoritas, undersampling kelas mayoritas, atau penggunaan

pendekatan hybrid didasarkan pada keduanya. Random Under-Sampling (RUS) dan Random Over-Sampling (ROS) bersifat sederhana, namun metode resampling

45

sudah terkenal diterapkan untuk memecahkan masalah ketidakseimbangan kelas (Batuwita & Palade, 2010, p. 1). Kedua metode ini berbeda dalam pengambilan sampelnya, dapat dijelaskan dengan menggunakan contoh berikut, misalnya mengambil contoh kasus yang memiliki 1.100 sampel pada data latih, dengan didistribusikan kelas minoritas terdiri dari 100 sampel dan kelas mayoritas terdiri dari 1000 sampel. Dalam kasus Random Under-Sampling (RUS), dilakukan dengan memilih secara acak dari kelas mayoritas dan membuangnya sampai jumlah kedua kelas masing-masing menjadi 100. Sedangkan dalam kasus Random

Over-Sampling (ROS), kelas minoritas dilakukan pengambilan sampel secara

acak sampai ukuran sampel minoritas menjadi 1000. Untuk pendekatan hybrid, kelas mayoritas dilakukan pengambilan sampel menggunakan Random

Under-Sampling (RUS) sebanyak 550 sampel, dan kelas minoritas dilakukan

pengambilan menggunakan Random Over-Sampling (ROS) sehingga ukuran kelas minoritas menjadi 550 sampel.

2.2.4.1.1 Algoritma ROS

Pada algoritma ROS, data kelas minoritas dipilih secara acak, kemudian ditambahkan ke dalam data latih. Proses pemilihan dan penambahan ini diulang-ulang sampai jumlah data kelas minoritas sama dengan jumlah kelas mayoritas. Algorima ROS digambarkan menggunakan flowchart pada Gambar 2.10. Pertama dihitung selisih antara kelas mayoritas dengan kelas minoritas. Kemudian dilakukan perulangan sebanyak hasil penghitungan selisih sambil membaca data kelas minoritas secara acak, dan ditambahkan ke dalam data latih.

46

Mulai

Masukkan sejumlah data latih

Hitung jumlah kelas mayoritas dan minoritas

Selisih = jumlah kelas mayoritas – jumlah kelas minoritas

Baca data kelas minoritas secara acak, dan tambahkan

ke dalam data latih i++ Selesai i=1 i <=Selisih Ya Tidak Gambar 2.10

Flowchart Algoritma ROS (Random Over-Sampling)

2.2.4.1.2 Algoritma RUS

Algoritma RUS digambarkan dengan flowchart pada Gambar 2.11. Hampir sama dengan ROS, pertama dihitung selisih antara kelas mayoritas dengan kelas minoritas. Kemudian dilakukan perulangan sejumlah selisih hasil penghitungan, selama perulangan data kelas mayoritas dihapus secara acak, sehingga jumlah kelas mayoritas sama dengan jumlah kelas minoritas.

47

Mulai

Masukkan sejumlah data latih

Hitung jumlah kelas mayoritas dan minoritas

Selisih = jumlah kelas mayoritas – jumlah kelas minoritas

Hapus data kelas mayoritas secara acak i++ Selesai i=1 i <=Selisih Ya Tidak

Gabungkan sisa kelas mayoritas dengan kelas minoritas sebagai

data latih yang seimbang

Gambar 2.11

Flowchart Algoritma RUS (Random Under-Sampling)

2.2.4.2 Sintesis Kelas Minoritas

Telah banyak pendekatan yang diusulkan untuk menyelesaikan permasalahan ketidakseimbangan kelas, baik dari pendekatan data (data

preprocessing) maupun pendekatan algoritma. Pendekatan data yang umum

adalah resampling. SMOTE (Synthetic Minority Over-sampling Technique) merupakan pendekatan oversampling pada kelas minoritas yaitu dengan melakukan oversampling untuk menciptakan sampel "sintetik" bukan dengan

48

p. 328). SMOTE adalah metode oversampling yang digunakan untuk menangani masalah ketidakseimbangan kelas, tetapi metode ini memiliki keterbatasan sampai batas tertentu karena sampel baru disintesis di antara contoh minoritas yang berdekatan, sehingga metode ini tidak bisa menunjukkan distribusi data yang lengkap (Zhang, Liu, Gong, & Jin, 2011, p. 2204). Metode ini mensintesis sampel kelas minoritas baru antara beberapa contoh minoritas yang terletak berdekatan, bukan hanya menduplikasi mereka secara acak menggunakan ROS.

Borderline-SMOTE adalah metode yang memperbaiki SMOTE dengan menyisipkan sampel minoritas di dalam posisi yang tepat untuk memastikan bahwa sisipan sampel baru sangat berarti. Borderline-SMOTE adalah metode

oversampling yang baru dalam pembelajaran ketidakseimbangan dataset (Han,

Wang, & Mao, 2005, p. 878). Borderline-SMOTE adalah metode yang memperbaiki SMOTE dengan menyisipkan sampel minoritas di dalam posisi yang tepat untuk memastikan bahwa sisipan sampel baru sangat berarti (Zhang, Liu, Gong, & Jin, 2011, p. 2204), yaitu hanya melakukan oversampling pada daerah

borderline (garis batas) sampel kelas minoritas (Han, Wang, & Mao, 2005, p.

886).

FSMOTE adalah algoritma sintesis yang ditujukan untuk memperbaiki SMOTE dengan mensintesis data latih mengikuti teori interpolasi fraktal, sehingga data yang dihasilkan lebih representatif, dan menghasilkan kinerja lebih baik dari pada SMOTE (Zhang, Liu, Gong, & Jin, 2011, p. 2210). Perbandingan SMOTE dan FSMOTE ditujukkan pada Gambar 2.12 dan Gambar 2.13. Dari Gambar 2.12 terlihat bahwa sampel hasil sintesis algoritma SMOTE berada dalam satu garis di antara dua kelas minoritas. Sedangkan Gambar 2.13 adalah hasil sintesis kelas minoritas menggunakan algoritma FSMOTE dengan menambahkan sintesis di antara sampel terdekat yang dipilih, sehingga memperbaiki kesimetrian dan similaritas berdasarkan teori fraktal.

49 Gambar 2.12

Ilustrasi Sintesis Sampel SMOTE

Gambar 2.13

Ilustrasi Sintesis Sampel FSMOTE

2.2.4.2.1 kNN (k-Nearest Neighbor)

Metode k-Nearest Neighbors (kNN) memberikan pendekatan sederhana untuk menghitung prediksi pada pengamatan yang tidak diketahui (Myatt, 2007, p. 176). Metode kNN mengklasifikasikan objek yang diuji dengan menemukan k objek terdekat dalam data latih, kemudian dikelompokkan dalam kelas yang mendominasi lingkungan tetangga tersebut (Steinbach & Tan, 2009, p. 151).

Berikut ini adalah Algoritma kNN:

Masukan: D, himpunan objek pelatihan, objek uji x, yang merupakan vektor nilai atribut, dan L himpunan kelas digunakan untuk memberi label objek.

50 Untuk setiap objek y Є D:

Hitung d(x, y), jarak antara x dan y; Akhir

Pilih N Є D, himpunan (lingkungan) dari k objek pelatihan terdekat dengan z;

𝐶𝑧= arg 𝑚𝑎𝑥

𝑣 𝜖 𝐿

𝑦𝜖𝑁𝐼(𝑣 = 𝑐𝑙𝑎𝑠𝑠(𝑐𝑧))

(2. 15)

Di mana I(·) adalah fungsi indikator yang mengembalikan nilai 1 jika argumen adalah benar dan 0 sebaliknya.

Untuk menghitung jarak dapat menggunakan pengukuran Euclidean atau Manhattan.

Euclidean: 𝑑(𝑥, 𝑦) = √∑𝑛 (𝑥𝑘− 𝑦𝑘)2

𝑘=1 (2. 16)

Manhattan: 𝑑(𝑥, 𝑦) = √∑𝑛𝑘=1|𝑥𝑘− 𝑦𝑘| (2. 17)

2.2.4.2.2 Algoritma FSMOTE

Algoritma FSMOTE dibagi menjadi 2, yaitu algoritma utama dan algoritma untuk mensintesis data kelas minoritas. Algoritma utama digambarkan dengan

flowchart pada Gambar 3.14, sedangkan algoritma untuk mensintesis

digambarkan dengan flowchart pada Gambar 3.15.

Pada algoritma utama dilakukan perulangan sesuai jumlah data kelas minoritas. Selama data kelas minoritas dipilih satu per satu secara berurut, dan dicari sejumlah k data tetangga terdekat. Setelah dipilih k data tetangga terdekat, kemudian dilakukan sintesis kelas minoritas.

Selanjutnya dilakukan perulangan sejumlah jumlah persentase sintesis N dibagi 100. Selama perulangan dipilih 2 tetangga terdekat, sehingga ada 3 data kelas minoritas. Dari 3 data tersebut, di tengah-tengah setiap pasangnya dibuat data sintesis. Pembuatan data sintesis ini diulang sesuai jumlah perulangan yang ditentukan. Data sintesis yang dibuat kemudian dipilih secara acak untuk ditambahkan ke dalam data hasil sintesis FSMOTE. Nilai N dikurangi 1, jika nilai N masih lebih besar dari 0 (nol) maka dilakukan perulangan lagi. Data hasil

51

sintesis FSMOTE yang telah dibuat kemudian ditambahkan ke dalam data latih secara acak.

Mulai

Masukkan sejumlah data latih, presentase data sintesis (N), jumlah

tetangga (k)

Baca k data tetangga terdekat

Selesai i=1 i <= Jumlah kelas minoritas Ya Tidak

Tambahkan data sintesis ke dalam data latih secara acak

Panggil prosedur sintesis data minoritas

Gambar 2.14

52 Mulai

Pilih 2 data dari k data terdekat secara acak

Selesai Tentukan data kelas minoritas yang

dipilih, k data tetangga terdekat, jumlah data sintesis N, jumlah perulangan

N > 0

Ya

Tidak

Tambahkan data sintesis ke dalam data latih secara acak

Buat 3 data sintesis, yaitu di tengah kedua data yang dipilih, dan di tengah antara

data kelas minoritas yang dipilih dengan kedua data

yang dipilih. i=1 i < jumlah perulangan N = N - 1 Ya

Pilih salah satu data sintesis secara acak, tambahkan ke

dalam data hasil sintesis

Tambahkan data sintesis ke dalam List

i++

Tidak

Gambar 2.15

Flowchart Algoritma Sistesis FSMOTE

2.2.4.2.3 Pseudo-Code FSMOTE

Di bawah ini dijelaskan algoritma FSMOTE dalam bentuk pseudocode (Zhang, Liu, Gong, & Jin, 2011, p. 2207). Algoritma FSMOTE terdiri dari dua bagian utama, bagian pertama berisi perulangan untuk mencari k tetangga terdekat, dan bagian kedua untuk membuat sintesis data kelas minoritas berdasarkan interpolasi fraktal.

53 Masukan: Algorithm FSMOTE(T, N, k)

m: Jumlah sampel kelas minoritas T; persentase jumlah hasil sintesis FSMOTE N%; jumlah nearest neighbors k

Keluaran: (N/100)*T jumlah data hasil sintesis

1: /*Hitung k nearest neighbors untuk setiap sampel kelas minoritas.*/ 2: for i = 1 to T do

3: Hitung k nearest neighbors data minoritas ke-i, dan simpan ke dalam nnarray 4: Sierpinski (N, i, nnarray, times); panggil fungsi (6) untuk mensistesis data 5: end for

/*Fungsi untuk mensintesis data*/ 6: Sierpinski (N, i, nnarray, times) 7: Lakukan perulangan selama N !=0:

8: Pilih 2 data yang berbeda secara acak antara 1 sampai k, sebut sebagai nn2 dan nn3. Langkah ini memilih dua data di antara k data terdekat dari data minoritas ke-i.

9: /*Lakukan operasi interpolasi fraktal, pilih satu dari sampel yang disintesis sebagai sampel kelas minoritas tambahan*/

10: for indeks1to times do 11: for attr1 to numattrs do 12: Hitung jarak:

13: dif1=Sampel[nnarray[nn3]][attr]- Sampel[nnarray[nn2]][attr] 14: dif2=Sampel[nnarray[nn3]][attr]- Sampel[i][attr]

15: dif3=Sampel[nnarray[nn2]][attr]- Sampel[i][attr] 16: Hitung data sintesis sementara:

17: SintesisSementara[0][attr]= Sampel[nnarray[nn2]][attr]+dif1/2 18: SintesisSementara [1][attr]=Sampel[i][attr]+dif2/2

19: SintesisSementara [2][attr]=Sampel[i][attr]+dif3/2 20: Akhir for indeks1

21: Tambahkan hasil sintesis SintesisSementara[0], SintesisSementara[1], SintesisSementara[2] ke dalam List.

22: Akhir for attr1

54

/*Lakukan pemilihan secara acak untuk dijadikan hasil sintesis*/ 24: Sintesis[indeksBaru]=List[Ind]

25: indeksBaru ++ 26: N = N - 1

27: Akhir perulangan, kembali ke (7).

28: return /*akhir fungsi mensintesis data Sierpinski.*/ Akhir dari Pseudo-Code.

2.2.5 Pendekatan Level Algoritma

Dokumen terkait