Identifikasi File Dokumen Berdasarkan Konten Menggunakan Distributed Autonomous Neuro-Gen Learning Engine

(1)

IDENTIFIKASI FILE DOKUMEN BERDASARKAN KONTEN MENGGUNAKAN

DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE

SKRIPSI

AARON 101402027

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(2)

IDENTIFIKASI FILE DOKUMEN BERDASARKAN KONTEN MENGGUNAKAN

DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

AARON 101402027

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

ii

PERSETUJUAN

Judul : IDENTIFIKASI FILE DOKUMEN BERDASARKAN KONTEN MENGGUNAKAN DISTRIBUTED

AUTONOMOUS NEURO-GEN LEARNING

ENGINE

Kategori : SKRIPSI

Nama : AARON

Nomor Induk Mahasiswa : 101402027

Program Studi : S1 TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Romi Fadillah Rahmat, B.Comp.Sc M.Sc Prof. Dr. Opim Salim Sitompul, M.Sc NIP. 19860303 201012 1 004 NIP. 19610817 198701 1 001

Diketahui/disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

Muhammad Anggia Muchtar, ST., MM.IT NIP. 19800110 200801 1 010


(4)

PERNYATAAN

IDENTIFIKASI FILE DOKUMEN BERDASARKAN KONTEN MENGGUNAKAN

DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 25 Mei 2014

Aaron 101402027


(5)

iv

UCAPAN TERIMA KASIH

Puji dan syukur penulis sampaikah kehadirat Tuhan Yang Maha Esa yang telah memberikan rahmat serta restu-Nya sehingga penulis dapat menyelesaikan skripsi ini sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi.

Pertama, penulis ingin mengucapkan terima kasih kepada Bapak Prof. Dr. Opim Salim Sitompul, M.Sc selaku pembimbing pertama dan Bapak Romi Fadillah Rahmat, B.Comp.Sc. M.Sc selaku pembimbing kedua yang telah membimbing penulis dalam penelitian serta penulisan skripsi ini. Tanpa inspirasi serta motivasi yang diberikan dari kedua pembimbing, tentunya penulis tidak akan dapat menyelesaikan skripsi ini. Penulis juga mengucapkan terima kasih kepada Bapak Muhammad Fadly Syahputra, B.Sc. M. Sc. IT sebagai dosen pembanding pertama dan Bapak M. Anggia Muchtar, ST. MM.IT sebagai dosen pembanding kedua yang telah memberikan masukan serta kritik yang bermanfaat dalam penulisan skripsi ini. Ucapan terima kasih juga ditjukan kepada semua dosen serta semua pegawai pada program studi S1 Teknologi Informasi, yang telah membantu serta membimbing penulis selama proses perkuliahan.

Penulis tentunya tidak lupa berterima kasih kepada kedua orang tua penulis, Bapak penulis Amin Maslim, serta Alm. Ibu Miwana Agus yang telah membesarkan penulis dengan sabar dan penuh cinta. Terima kasih juga penulis ucapkan kepada adik penulis, Vincent Maslim, yang selalu memberikan dukungan kepada penulis. Penulis juga berterima kasih kepada seluruh anggota keluarga penulis yang namanya tidak dapat disebutkan satu satu.

Terima kasih juga penulis ucapkan kepada seluruh teman-teman angkatan 2010 yang telah bersama-sama penulis melewati perkuliahan pada program studi S1 Teknologi Informasi, serta teman-teman mahasiswa Teknologi Informasi lainnya. Secara khusus, penulis juga mengucapkan terima kasih kepada Eka Pratiwi Goenfi yang selalu menemani dan memberikan perhatiannya kepada penulis.


(6)

ABSTRAK

Identifikasi jenis file merupakan salah satu tahapan yang dilakukan pada forensik komputer terutama identifikasi jenis file dokumen, dimana identifikasi jenis file merupakan proses mengetahui format dari sebuah file sehingga dapat didapatkan jenis file sebenarnya dari file tersebut. Metode-metode identifikasi jenis file berdasarkan magic bytes dan ekstensi nama file sangat mudah dikelabui dengan melakukan pemalsuan file

sederhana, seperti pengubahan ekstensi nama file ataupun pengubahan beberapa byte awal sebuah file. Atas dasar hal ini, metode identifikasi jenis file berdasarkan konten menjadi sangat penting. Metode yang diajukan pada penelitian ini adalah penggunaan fitur Byte Frequency Distribution, dilanjutkan dengan ekstraksi fitur dengan Principal Component Analysis dan implementasi mesin pembelajaran Distributed Autonomous Neuro-Gen Learning Engine dalam melakukan identifikasi jenis file dokumen berdasarkan konten. Pada penelitian ini ditunjukkan bahwa metode yang diajukan mampu melakukan identifikasi file dokumen dengan hasil akurasi yang cukup baik untuk lima jenis file dokumen.

Kata kunci: forensik digital dan komputer, identifikasi file berbasis konten, Principal Component Analysis, Distributed Autonomous Neuro-Gen Learning Engine, Distributed Adaptive Neural Network, Gene Regulatory Engine.


(7)

vi

CONTENT-BASED DOCUMENT FILE TYPE IDENTIFICATION USING DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE

ABSTRACT

File type identification is one of the phases being done in computer forensics, especially document file type identification. File type identification is a process of knowing the format of a file to determine the real file type of the file. File identification methods based on magic bytes and file name extension are easily spoofed by simple file forgery such as changing the file name extension or editing the first few bytes of a file. A content-based file type identification method become very important because of the fact stated before. The method proposed in this research consists of using Byte Frequency Distribution of a file as features, using Principal Component Analysis for dimensionality reduction of features and finally implementing a Distributed Autonomous Neuro-Gen Learning Engine in identifying a document file based on its content. In this research, it is shown that the proposed method is capable of identifying document files with good accuracy for five types of document files.

Keywords: digital and computer forensics, content-based file identification, Principal Component Analysis, Distributed Autonomous Neuro-Gen Learning Engine, Distributed Adaptive Neural Network, Gene Regulatory Engine.


(8)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Ucapan Terima Kasih iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel x

Daftar Gambar xii

BAB 1 Pendahuluan 1

1.1. Latar Belakang 1

1.2. Rumusan Masalah 3

1.3. Tujuan Penelitian 3

1.4. Batasan Masalah 3

1.5. Manfaat Penelitian 4

1.6. Metodologi Penelitian 4

1.7. Sistematika Penulisan 5

BAB 2 Landasan Teori 7

2.1. Forensik Digital 7


(9)

viii

2.3. File 8

2.3.1. Identifikasi Format File 8

2.3.2. File forgery 13

2.4. Normalisasi 14

2.5. Companding Function 16

2.6. Ekstraksi Fitur menggunakan Principal Component Analysis 16

2.7. Artificial Neural Network 19

2.7.1. Kelemahan Artificial Neural Network 21

2.7.1. Multilayer Perceptron 21

2.8. Distributed Autonomous Neuro-Gen Learning Engine 24

2.8.1. Gene Regulatory Engine 25

2.8.2. Distributed Adaptive Neural Network 30

BAB 3 Analisis dan Perancangan 32

3.1. Arsitektur Umum 32

3.2. Dataset 34

3.3. Pre-process 35

3.3.1. Kalkulasi Byte Frequency Distribution 36

3.3.2. Normalisasi Byte Frequency Distribution 36 3.3.3. Kompresi dan Ekspansi Byte Frequency Distribution 37

3.3.4. Principal Component Analysis 40

3.4. Implementasi Distributed Autonomous Neuro-Gen Learning Engine 40

3.4.1. Implementasi jaringan 41

3.4.2. Parameter pelatihan yang digunakan 42


(10)

3.4.4. Modifikasi 43

3.4.5. Target output 44

BAB 4 Implementasi dan Pengujian 45

4.1. Hasil dari DANN 45

4.2. Hasil dari GRE 48

4.2.1. Hasil objective function 49

4.2.2. Hasil dari regulator mutasi 50

4.2.3. Hasil fitness function 53

4.3. Hasil pengujian 53

BAB 5 Kesimpulan dan Saran 57

5.1. Kesimpulan 57

5.2. Saran 58

Daftar Pustaka 59

Lampiran A: Source Code Aplikasi Client 62


(11)

x

DAFTAR TABEL

Hal. Tabel 2.1. Daftar magic bytes untuk beberapa jenis file dokumen 10

Tabel 3.1. Spesifikasi file-file yang digunakan sebagai data penelitian 34

Tabel 3.2. Spesifikasi training dataset 35

Tabel 3.3. Spesifikasi testing dataset 35

Tabel 3.4. Tabel BFD untuk file sampel 37

Tabel 3.5. Tabel BFD hasil normalisasi 37

Tabel 3.6. Tabel BFD hasil kompresi dan ekspansi 39 Tabel 3.7. Tabel fitur hasil ekstraksi metode PCA 40

Tabel 3.8. Nilai-nilai parameter DANGLE 42

Tabel 3.9. Partisi data untuk setiap node 43

Tabel 3.10. Target output untuk setiap jenis file 44

Tabel 4.1. Hasil akhir gen node 1 45

Tabel 4.2. Hasil akhir gen node 2 46

Tabel 4.3. Hasil akhir gen node 3 46

Tabel 4.4. Hasil akhir gen node 4 46

Tabel 4.5. Hasil akhir gen node 5 47

Tabel 4.6. Akurasi hasil pelatihan untuk setiap node pada generasi ke-6 48 Tabel 4.7. Hasil akurasi untuk setiap jenif file pada pengujian menggunakan

dataset pelatihan 54

Tabel 4.8. Hasil akurasi untuk setiap jenif file pada pengujian menggunakan

dataset pengujian 54


(12)

Tabel 4.10. Confusion Matrix untuk dataset pengujian 55

Tabel 4.11. Hasil akurasi untuk setiap jenis file pada pengujian menggunakan


(13)

xii

DAFTAR GAMBAR

Hal. Gambar 2.1. Distribusi Frekuensi untuk dua file rtf yang berbeda (McDaniel, 2001) 12 Gambar 2.2. Distribusi Frekuensi untuk dua file gif yang berbeda (McDaniel, 2001) 12 Gambar 2.3. Arsitektur umum sebuah jaringan saraf tiruan (Negnetvisky, 2005) 20 Gambar 2.4. Fungsi aktivasi dari sebuah neuron (Negnetvisky, 2005) 20 Gambar 2.5. Arsitektur Multilayer Perceptron dengan dua hidden layer

(Negnetvisky, 2005) 22

Gambar 2.6. Arsitektur Gene Regulatory Engine (Rahmat, 2008) 25 Gambar 2.7. Diagram lengkap model GRE (Rahmat, 2008) 26 Gambar 2.8. Node Behavior’s Gene (Pasha, 2010) 27 Gambar 2.9. Neural Network’s Gene (Rahmat, 2008) 27 Gambar 2.10.Arsitektur umum dari Distributed Autonomous Neural Network

(Rahmat, 2008) 31

Gambar 3.1. Arsitektur umum metode yang diajukan 33

Gambar 3.2. Grafik BFD hasil normalisasi 38

Gambar 3.3. Grafik BFD hasil kompresi dan ekspansi 39

Gambar 3.4. Rancangan jaringan implementasi DANGLE 41

Gambar 4.1. Hasil output untuk setiap node pada setiap generasi 48 Gambar 4.2. Hasil RMSE untuk setiap node pada setiap generasi 49 Gambar 4.3. Mutasi Epoch pada setiap node untuk setiap generasi 50 Gambar 4.4. Mutasi jumlah hidden layer pada setiap node untuk setiap generasi 51

Gambar 4.5. Mutasi jumlah neuron hidden layer 1 pada setiap node untuk


(14)

Gambar 4.6. Mutasi jumlah neuron hidden layer 2 pada setiap node untuk

setiap generasi 52

Gambar 4.7. Mutasi jumlah neuron hidden layer 3 pada setiap node untuk

setiap generasi 52


(15)

v

ABSTRAK

Identifikasi jenis file merupakan salah satu tahapan yang dilakukan pada forensik komputer terutama identifikasi jenis file dokumen, dimana identifikasi jenis file merupakan proses mengetahui format dari sebuah file sehingga dapat didapatkan jenis file sebenarnya dari file tersebut. Metode-metode identifikasi jenis file berdasarkan magic bytes dan ekstensi nama file sangat mudah dikelabui dengan melakukan pemalsuan file

sederhana, seperti pengubahan ekstensi nama file ataupun pengubahan beberapa byte awal sebuah file. Atas dasar hal ini, metode identifikasi jenis file berdasarkan konten menjadi sangat penting. Metode yang diajukan pada penelitian ini adalah penggunaan fitur Byte Frequency Distribution, dilanjutkan dengan ekstraksi fitur dengan Principal Component Analysis dan implementasi mesin pembelajaran Distributed Autonomous Neuro-Gen Learning Engine dalam melakukan identifikasi jenis file dokumen berdasarkan konten. Pada penelitian ini ditunjukkan bahwa metode yang diajukan mampu melakukan identifikasi file dokumen dengan hasil akurasi yang cukup baik untuk lima jenis file dokumen.

Kata kunci: forensik digital dan komputer, identifikasi file berbasis konten, Principal Component Analysis, Distributed Autonomous Neuro-Gen Learning Engine, Distributed Adaptive Neural Network, Gene Regulatory Engine.


(16)

CONTENT-BASED DOCUMENT FILE TYPE IDENTIFICATION USING DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE

ABSTRACT

File type identification is one of the phases being done in computer forensics, especially document file type identification. File type identification is a process of knowing the format of a file to determine the real file type of the file. File identification methods based on magic bytes and file name extension are easily spoofed by simple file forgery such as changing the file name extension or editing the first few bytes of a file. A content-based file type identification method become very important because of the fact stated before. The method proposed in this research consists of using Byte Frequency Distribution of a file as features, using Principal Component Analysis for dimensionality reduction of features and finally implementing a Distributed Autonomous Neuro-Gen Learning Engine in identifying a document file based on its content. In this research, it is shown that the proposed method is capable of identifying document files with good accuracy for five types of document files.

Keywords: digital and computer forensics, content-based file identification, Principal Component Analysis, Distributed Autonomous Neuro-Gen Learning Engine, Distributed Adaptive Neural Network, Gene Regulatory Engine.


(17)

BAB 1 PENDAHULUAN

1.1. Latar Belakang

Identifikasi file adalah proses yang dilakukan untuk memahami urutan dari byte-byte yang menyusun sebuah file, sehingga jenis file sebenarnya dari file tersebut dapat diketahui. Identifikasi file merupakan salah satu tahapan dari prosedur forensik digital yang diterapkan pada kasus kriminal untuk mendapatkan barang bukti digital yang valid digunakan dalam proses pengadilan.

Pada kasus-kasus kriminal, seperti kasus korupsi, file-file dokumen yang tersimpan dalam hard disk komputer dapat dijadikan sebagai barang bukti. Tetapi

pada kenyataannya dalam mengumpulkan file-file dokumen yang dapat menjadi bukti digital tersebut, para penyidik seringkali mengalami kesulitan karena dilakukannya

file forgery oleh pihak tersangka. File forgery adalah pemalsuan file-file dokumen

yang dapat menjadi bukti digital sehingga file-file dokumen tersebut tidak dapat dikenali sebagai file dokumen dengan mudah.

Cara paling sederhana yang digunakan dalam file forgery adalah mengubah

ekstensi dari file. File-file dokumen yang telah diubah ekstensinya menjadi tidak dapat dikenali secara langsung apabila di-browse melalui file browser saja, sebagai contoh

sebuah file dokumen dengan ekstensi doc diganti extensinya menjadi jpg, file browser

tidak lagi mengenali file tersebut sebagai file dokumen melainkan mengenalinya sebagai sebuah file citra. Hal ini dikarenakan file browser sistem operasi secara umum mengenali jenis dari sebuah file hanya dari ekstensi file tersebut.

Salah satu cara untuk mengidentifikasi jenis file sebenarnya dari file dokumen yang telah diubah ekstensinya ini dapat dilakukan dengan mengecek magic bytes dari file tersebut (Hickok, et al. 2005). Magic Bytes adalah beberapa byte awal dari sebuah file yang menunjukkan isi dari file tersebut. Misalnya file dokumen dengan ekstensi doc memiliki magic bytes: “D0 CF 11 E0 A1 B1 1A E1”. Akan


(18)

dapat diubah dengan mudah menggunakan hex editor, sehingga identifikasi jenis file

tidak dapat dilakukan.

Selain mengidentifikasi jenis file dari magic bytes, identifikasi jenis file juga dapat dilakukan melalui konten dari file menggunakan N-gram Analysis dan Vector Space Model (Cao, et al. 2010), Cosine distance similarity dan metode divide and conquer (Ahmed, et al. 2010), Jaringan Saraf Tiruan (Harris, 2007), serta Principal Component Analysis (PCA) dan Jaringan Saraf Tiruan (Amirani, et al. 2008). Apabila identifikasi dilakukan melalui konten file, maka pengubahan terhadap ekstensi maupun magic bytes dari file tidak akan mempengaruhi hasil identifikasi jenis file yang sebenarnya. Namun, penggunaan Jaringan Saraf Tiruan dalam identifikasi file memiliki kelemahan seperti sulitnya menentukan arsitektur dari system dan pembelajaran yang baru akan membuat sistem melupakan pembelajaran yang lama (Kasabov, 2007). Pelatihan yang hanya menggunakan satu Jaringan Saraf Tiruan juga memerlukan waktu pelatihan yang lama dan mengalami kesulitan dalam mengatasi data yang besar karena keterbatasan sumber daya. Dengan pertimbangan beberapa kelemahan dari Jaringan Saraf Tiruan ini, penulis mengajukan metode Distributed Autonomous Neuro-Gen Learning Engine (DANGLE).

DANGLE merupakan mesin pembelajaran yang mengimplementasikan lebih

dari satu Jaringan Saraf Tiruan dalam pembelajarannya, dimana kumpulan Jaringan Saraf Tiruan ini disebut dengan Distributed Adaptive Neural Network (DANN) dan

setiap Jaringan Saraf Tiruan di dalam DANN dibangun, diatur dan dilatih oleh sebuah Gene Regulatory Engine (GRE). Adapun karakteristik dari DANGLE adalah adanya

distribusi beban pada beberapa Jaringan Saraf Tiruan sekaligus, sehingga memungkinkan DANGLE untuk mengurangi waktu pelatihan yang diperlukan, mengatasi data yang besar serta memiliki fleksibilitas tinggi (tidak terikat pada satu jenis Jaringan Saraf Tiruan). DANGLE telah digunakan dalam menyelesaikan analisis lattice dari permasalahan identifikasi struktur kubik (Pasha, et al. 2010).

Berdasarkan latar belakang diatas, penulis mengajukan penelitian dengan

judul “IDENTIFIKASI FILE DOKUMEN BERDASARKAN KONTEN MENGGUNAKAN DISTRIBUTED AUTONOMOUS NEURO-GEN LEARNING ENGINE”.


(19)

3

1.2. Rumusan Masalah

Forgery terhadap file-file dokumen dengan cara mengubah ekstensi dari file dokumen maupun mengubah magic bytes dari file-file dokumen, membuat file-file dokumen

susah diidentifikasi secara langsung melalui file browser, sehingga menyulitkan para penyidik dalam menemukan file-file dokumen yang dapat saja menjadi bukti digital dalam proses pengadilan tersangka pada kasus-kasus kriminal. Bagaimana mengidentifikasi file-file sehingga dapat diketahui apakah jenis file sebenarnya adalah merupakan file dokumen atau bukan?

1.3. Tujuan Penelitian

Mengidentifikasi file-file berdasarkan konten menggunakan Distributed Autonomous Neuro-Gen Learning Engine, sehingga dapat diketahui apakah file merupakan file

dokumen atau bukan.

1.4. Batasan Masalah

Untuk menghindari penyimpangan dan perluasan yang tidak diperlukan, penulis membuat batasan:

1. Identifikasi dilakukan pada file dokumen, dengan ekstensi dari file dokumen yang akan diidentifikasi adalah doc, html, pdf, ppt, dan xls.

2. Identifikasi dilakukan hanya melalui konten atau isi dari file, dengan tidak mempertimbangkan nama file, file header, file trailer serta atribut file yang


(20)

1.5. Manfaat Penelitian

Manfaat yang diperoleh dari penelitian ini adalah:

1. Membantu proses identifikasi file-file dokumen dari sekumpulan file yang tidak diketahui jenis file sebenarnya.

2. Mengetahui kemampuan Distributed Autonomous Neuro-Gen Learning Engine

dalam mengidentifikasi file-file dokumen.

3. Memberikan masukan pada bidang forensik digital serta kecerdasan buatan.

1.6. Metodologi Penelitian

Tahapan-tahapan yang akan dilakukan pada pelaksanaan penelitian adalah sebagai berikut:

1. Studi Literatur

Studi Literatur dilakukan dalam rangka pengumpulan bahan referensi mengenai forensik digital, file, ekstraksi fitur, identifikasi file, jaringan saraf tiruan, dan

Distributed Autonomous Neuro-Gen Learning Engine.

2. Analisis Permasalahan

Pada tahap ini dilakukan analisis terhadap bahan referensi yang telah dikumpulkan pada tahap sebelumnya untuk mendapatkan pemahaman mengenai metode yang diterapkan yakni Distributed Autonomous Neuro-Gen Learning Engine, serta domain masalah yang akan diselesaikan yakni permasalahan

identifikasi file. 3. Pengumpulan Data

Pada tahap ini dilakukan pengumpulan data serta pembagian data yang telah didapatkan ke dalam training dataset dan testing dataset.

4. Implementasi

Pada tahap ini dilakukan implementasi metode Distributed Autonomous Neuro-Gen Learning Engine dalam penyelesaian masalah identifikasi file dokumen menggunakan data yang telah dikumpulkan sebelumnya.


(21)

5

5. Evaluasi dan Analisis Hasil

Pada tahap ini dilakukan evaluasi serta analisis terhadap hasil yang didapatkan melalui implementasi metode Distributed Autonomous Neuro-Gen Learning Engine dalam penyelesaian masalah identifikasi file dokumen

6. Dokumentasi dan Pelaporan

Pada tahap ini dilakukan dokumentasi dan penyusunan laporan hasil evaluasi dan analisis serta implementasi Distributed Autonomous Neuro-Gen Learning Machine dalam identifikasi jenis file dokumen.

1.7. Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri atas lima bagian utama sebagai berikut:

Bab 1: Pendahuluan

Bab ini berisi latar belakang dari peneltian yang dilaksanakan, rumusan masalah, tujuan penelitian, batasan masalah, manfaat penelitian, metodologi penelitian, serta sistematika penulisan.

Bab 2: Landasan Teori

Bab ini berisi teori-teori yang diperlukan untuk memahami permasalahan yang dibahas pada penelitian ini. Teori-teori yang berhubungan dengan forensik digital, file, ekstraksi fitur, identifikasi file, jaringan saraf tiruan serta Distributed Autonomous Neuro-Gen Learning Engine akan dibahas pada bab ini.

Bab 3: Analisis dan Perancangan

Bab ini membahas analisis dan penerapan metode Distributed Autonomous Neuro-Gen Learning Engine untuk melakukan identifikasi file dokumen. Pada bab ini dijabarkan arsitektur umum, pre-process yang dilakukan serta desain jaringan yang digunakan.


(22)

Bab 4: Implementasi dan Pengujian

Bab ini berisi pembahasan tentang implementasi dari perancangan penerapan yang telah dijabarkan pada bab 3. Selain itu, hasil yang didapatkan dari pengujian yang dilakukan terhadap implementasi yang dilakukan juga dijabarkan pada Bab ini.

Bab 5: Kesimpulan dan Saran

Bab ini berisi ringkasan serta kesimpulan dari rancangan yang telah dibahas pada bab 3, serta hasil penelitian yang dijabarkan pada bab 4. Bagian akhir dari bab ini akan berisi saran-saran yang diajukan untuk pengembangan penelitian selanjutnya.


(23)

BAB 2

LANDASAN TEORI

Bab ini membahas tentang teori penunjang serta penelitian sebelumnya yang berhubungan dengan permasalahan identifikasi jenis file, serta metode Distributed Autonomous Neuro-Gen Learning Engine.

2.1. Forensik Digital

Forensik adalah pengaplikasian ilmu pengetahuan dalam menentukan kriminal sesuai hukum oleh pihak berwenang pada sistem pengadilan (Saferstein, 1998). Salah satu cabang dari forensik adalah forensik digital, dimana forensik digital memiliki ruang lingkup pengolahan, pemulihan serta investigasi pada materi yang ditemukan pada perangkat digital terutama pada tindak kejahatan yang berkaitan dengan komputer (Reith, et al. 2010). Secara umum proses forensik pada forensik digital terdiri atas pengambil alihan perangkat, akusisi data, analisis data dan penyusunan laporan sebagai bukti kolektif (Adams, 2012). Berdasarkan perangkat digital yang terkait, secara teknis forensik digital dibagi atas beberapa cabang, yakni: forensik komputer, forensik jaringan, forensik analisis data dan forensik perangkat mobile.

Identifikasi file adalah salah satu tahapan yang dilakukan dalam proses analisis data dalam forensik komputer. Dimana, forensik komputer adalah cabang dari forensik digital yang berkaitan media komputer. Pada forensik komputer dilakukan pemeriksaan media digital sesuai dengan proses forensik dengan tujuan mengidentifikasi, mendapatkan, menjaga, memulihkan, menganalisis dan mepresentasikan informasi dari data yang tersimpan secara elektronik pada media komputer (Noblett, et al. 2000).


(24)

2.2. Dokumen

Dokumen adalah representasi pengetahuan yang digambarkan atau dituliskan pada secarik kertas (Buckland, 1998). Dokumen berasal dari kata Documentum pada bahasa Latin yang memiliki arti pelajaran. Dokumen pada masa lalu merujuk pada tulisan yang digunakan sebagai bukti pada pengadilan. Pada jaman sekarang, dokumen merujuk pada file yang berisi text, berikut dengan struktur serta desain dan gambar tambahan.

2.3. File

File komputer atau file adalah kumpulan data atau informasi berupa huruf, angka maupun karakter khusus yang ditandai dengan sebuah nama file. Seluruh data dan informasi yang ada dalam sebuah komputer tersimpan dalam bentuk file. Berdasarkan isi informasi yang disimpan, file dibagi atas beberapa jenis file seperti: text file yang

menyimpan informasi berupa text (tulisan), file citra yang menyimpan informasi

berupa gambar, dan file program yang menyimpan program. File komputer dapat dianggap bagaikan dokumen kertas yang digunakan serta disimpan pada kantor.

Sebuah file secara umum terdiri atas tiga bagian, yakni: file header (head), file

body, file trailer (tail). File header adalah sebuah “signature” yang diposisikan pada awal sebuah file sehingga, sistem operasi serta perangkat lunak lainnya mengetahui apa yang menjadi isi atau konten dari file. File body adalah konten dari file yang merupakan informasi atau data yang disimpan oleh file. File trailer adalah bagian penutup dari sebuah file yang menandai akhir dari sebuah file. Tergantung pada jenis datanya, metadata atau informasi mengenai struktur serta penjelasan dari data biasanya terdapat pada file header, tetapi bisa juga ditemukan pada file trailer.

2.3.1 Identifikasi format file

Format file adalah sebuah standard untuk meyimpan file komputer pada media penyimpanan, dimana format file menentukan bagaimana byte-byte yang menyusun


(25)

9

sebuah file diatur dan disusun. File dengan jenis yang berbeda akan mempunyai format file yang berbeda. Identifikasi jenis file adalah proses mengetahui format file dari sebuah file tertentu, sehingga dapat diketahui jenis, tujuan serta kegunaan dari file tersebut. Identifikasi format file dilakukan oleh sistem operasi berdasarkan ekstensi dari file ataupun berdasarkan metadata yang tersimpan pada file.

Beberapa teknik yang digunakan untuk melakukan identifikasi jenis file (Hickok, et al. 2005):

1. Identifikasi jenis file berdasarkan ekstensi nama file

Identifikasi file berdasarkan ekstensi nama file adalah metode identifikasi file yang paling sederhana dan naif. Ekstensi nama file adalah kumpulan karakter setelah tanda „.‟ (titik) terakhir pada nama file. Identifikasi jenis file melalui ekstensi nama file dilakukan hanya dengan melihat ekstensi dari nama file yang ada. Sebagai contoh, sebuah file dengan nama file “x.doc” akan memiliki ekstensi doc dan segera dikenali sebagai sebuah file dokumen dengan melihat ekstensi nama file doc. Karena identifikasi file hanya dilakukan melihat dari ekstensi nama

file, identifikasi jenis file dapat dilakukan tanpa membaca file, sehingga identifikasi dengan metode ini dapat dilakukan dengan sangat cepat. Metode ini merupakan metode yang populer digunakan oleh file browser pada sistem operasi

seperti Windows, Mac OS X, serta Linux dalam melakukan identifikasi dari file. 2. Identifikasi jenis file berdasarkan Magic Bytes

Magic bytes atau dikenal juga dengan sebutan magic number adalah kumpulan

byte-byte pada sebuah file yang dapat digunakan sebagai pembeda antar jenis file yang berbeda. Magic bytes biasa terletak pada bagian file header pada sebuah file,

tetapi bisa juga terletak pada bagian file lain seperti file trailer. Selain sebagai

pembeda antar jenis file, magic bytes juga dapat memberikan infromasi tambahan mengenai versi aplikasi yang digunakan untuk membuat file sehingga magic bytes

juga dapat digunakan untuk membedakan file yang dibuat dengan aplikasi yang sama tetapi dengan versi yang berbeda. Identifikasi jenis file dengan metode ini diimplementasikan oleh perintah file() pada sistem operasi berbasis UNIX untuk menentukan apakah sebuah file yang dapat dieksekusi ataupun file dengan jenis lain (Darwin, 1999).


(26)

Identifikasi jenis file berdasarkan magic bytes sedikit lebih lambat

dibandingkan melakukan identifikasi berdasarkan ekstensi nama file, karena sebuah file harus dibuka terlebih dahulu dan beberapa byte awal dari file tersebut. Beberapa byte awal yang dibaca kemudian dibandingkan dengan magic bytes dari jenis-jenis file yang diketahui sehingga didapatkan hasil identifikasi jenis file. Tabel 2.1. menunjukkan magic bytes untuk beberapa jenis file dokumen.

Penggunaan magic bytes dalam identifikasi jenis file memiliki beberapa kelemahan (Hickok, et al. 2005), yakni: identifikasi jenis file berdasarkan magic bytes hanya berlaku untuk file yang memiliki magic bytes, contoh file yang tidak memiliki magic bytes adalah file dengan ekstensi txt (file text) dan html (file

hypertext markup language); tidak adanya standard, bahkan untuk jenis file yang sama, dalam pembuatan jenis file tertentu, sebagai contoh sebuah file citra dengan ekstensi jpg bisa memiliki magic bytes FF D8 FF FE 00 ataupun FF D8 FF E0 00,

dan keduanya merupakan file citra jpg yang valid; dan adanya kemungkinan kesalahan identifikasi secara kebetulan, sebagai contoh, sebuah file pdf, seperti yang dapat dilihat pada Tabel 2.1. memiliki magic bytes 25 50 44 46 atau

ASCII %PDF, apabila dilakukan identifikasi jenis file berdasarkan magic bytes

terhadap sebuah file txt yang kebetulan dimulai dengan tulisan %PDF, maka file txt tersebut akan dikenali sebagai sebuah file pdf.

Table 2.1. Daftar magic bytes untuk beberapa jenis file dokumen

Hex ASCII Ekstensi Jenis file

25 50 44 46 %PDF PDF, FDF Adobe Portable Document Format and Forms Document file

D0 CF 11 E0 A1 B1 1A E1

ÐÏ.ࡱ.á DOC, DOT, PPS, PPT, XLA, XLS, WIZ

Microsoft Office applications (Word, Powerpoint, Excel, Wizard)

50 4B 03 04 14 00 06 00

PK... DOCX, PPTX, XLSX

Microsoft Office Open XML Format (OOXML) Document 7B 5C 72 74

66 31

{\rtf1 RTF Rich text format word processing file


(27)

11

3. Identifikasi jenis file berdasarkan distribusi karakter.

Metode terakhir yang dapat digunakan dalam identifikasi jenis file adalah berdasarkan distribusi karakter yang terdapat pada sebuah file. Konten atau isi dari sebuah file adalah urutan byte-byte, dimana satu byte terdiri atas delapan bit, sehingga satu byte akan memiliki kemungkinan nilai sebanyak 28 atau 256, yakni 0 sampai dengan 255. Pada metode ini dihitung frekuensi kemunculan dari setiap kemungkinan 256 nilai dari sebuah file dan kumpulan frekuensi dari setiap byte disebut dengan byte frequency distribution (BFD) atau distribusi frekuensi byte. Identifikasi file berdasarkan distribusi karakter dikenal juga dengan nama metode histogram, dimana BFD merupakan histogram byte dari sebuah file. Sebuah BFD merupakan sebuah tabel dengan 256 nilai dimana setiap nilai merupakan frekuensi kemunculan dari nilai yang direpresentasikan oleh sebuah file (Sencar, et al. 2012).

Identifikasi file berdasarkan distribusi karakter dapat dilakukan karena untuk file yang berbeda dengan jenis file yang sama, akan ada beberapa frekuensi byte yang memiliki kemunculan lebih banyak dari frekuensi byte yang lain. Sebagai contoh, pada sebuah file html, representasi byte dari karakter /, < dan > akan memiliki kemunculan yang lebih banyak dibandingkan jenis file lainnya, sehingga sebuah file dengan frekuensi kemunculan representasi byte dari karakter /, < dan > lebih banyak dibandingkan frekuensi byte karakter lain memiliki kemungkinan yang besar merupakan sebuah file html (Sencar, et al. 2012). Pada gambar 2.1. dan gambar 2.2. dapat dilihat file yang berbeda dengan jenis file yang sama cenderung memiliki distribusi frekuensi yang mirip dan dengan membandingkan gambar 2.1. dengan gambar 2.2. dapat dilihat bahwa file dengan jenis file yang berbeda memiliki distribusi frekuensi byte yang berbeda.


(28)

Gambar 2.1. Distribusi Frekuensi untuk dua file rtf yang berbeda (McDaniel, 2001)

Gambar 2.2. Distribusi Frekuensi untuk dua file gif yang berbeda (McDaniel, 2001)

Beberapa kelemahan dari identifikasi jenis file berdasarkan distribusi karakter adalah adanya beberapa jenis file yang tidak mempunyai distribusi karakter yang spesifik, kemungkinan terjadinya kesalahan identifikasi disebabkan konten file yang unik ataupun tidak normal, serta kecepatan identifikasi yang lebih lambat dibandingkan identifikasi jenis file berdasarkan ekstensi nama file dan magic bytes. Identifikasi file berdasarkan distribusi karakter memiliki akurasi yang cukup rendah, yakni 27,5% (McDaniel, 2001). Pada penelitian lain, (Amirani, et al. 2008) menggunakan BFD sebagai fitur dari sebuah file dan melakukan ekstraksi fitur menggunakan Principal Component Analysis (PCA) dan melakukan klasifikasi jenis file menggunakan Multi-Layer Perceptron. BFD

juga digunakan bersamaan dengan Neural Network atau jaringan saraf tiruan


(29)

13

2.3.2. File Forgery

Dalam menyembunyikan file-file dokumen yang dapat menjadi bukti tindak kejahatan, pelaku tindak kejahatan sering kali menggunakan teknik-teknik anti-forensik, yakni sekumpulan teknik pemalsuan serta penghancuran yang digunakan untuk memanipulasi proses forensik (Harris, 2007). Salah satu teknik anti-forensik yang paling sering digunakan adalah file forgery atau pemalsuan file. Pemalsuan file adalah teknik pemalsuan suatu file sehingga jenis file sebenarnya serta kegunaan dari file tersebut tidak lagi dapat dikenali dengan mudah.

Pemalsuan file dapat dilakukan dengan cara: 1. Pengubahan ekstensi file

Pemalsuan file dapat dilakukan dengan sangat mudah dengan melakukan pengubahan ekstensi nama file yang terdapat pada nama file. Pengubahan ekstensi file dari nama file secara langsung akan mengakibatkan file browser

secara umum menjadi tidak dapat mengenali jenis file sebenarnya dari file yang telah diubah ekstensinya tersebut. Hal ini dikarenakan file browser pada sistem

operasi secara umum mengenali jenis dari sebuah file hanya dari ekstensi file yang terdapat pada nama file. Sebagai contoh: seorang pelaku tindak kejahatan dapat memalsukan sebuah file dokumen Microsoft Word dengan ekstensi doc

dengan cara mengubah ekstensi nama file dari file tersebut menjadi jpg. Hal ini akan mengakibatkan file browser mengenali file tersebut sebagai sebuah file citra

dengan ekstensi jpg, bukan lagi sebagai sebuah file dokumen. 2. Pengubahan Magic Bytes

Seperti yang telah dijelaskan pada bagian sebelumnya, magic bytes adalah

kumpulan beberapa byte pada awal sebuah file, dimana magic bytes untuk setiap jenis file adalah berbeda, sehingga magic bytes dapat digunakan sebagai salah satu indikasi yang menunjukkan jenis file sebenarnya dari sebuah file. Akan tetapi,

magic bytes dapat dengan mudah diedit menggunakan hex editor ataupun tools

lainnya. Mengubah magic bytes dari suatu file akan mengakibatkan algoritma yang melakukan pengecekan magic bytes untuk menentukan jenis file, tidak dapat menentukan jenis file sebenarnya dari file secara tepat. Sebagai contoh, sebuah


(30)

file dokumen RTF (Rich Text Format) mempunyai magic bytes “7B 5C 72 74 66 31“, apabila magic bytes ini diubah menjadi “25 50 44 46” yang merupakan magic bytes dari file dokumen PDF, maka algoritma yang melakukan identifikasi jenis file berdasarkan magic bytes akan mengenali file RTF tersebut sebagai sebuah file PDF.

Pemalsuan file dapat dengan mudah dilakukan dengan mengubah indikator yang menunjukkan jenis file dari sebuah file, seperti ekstensi file dan magic bytes, Sehingga diperlukan suatu metode untuk melakukan identifikasi jenis file sebenarnya berdasarkan konten atau isi dari file.

2.4. Normalisasi

Pada bidang analisis data, penggunaan satuan ukuran dapat mempengaruhi hasil dari analisis yang didapatkan. Sebagai contoh, penggunaan ukuran meter pada pengukuran panjang akan memberikan hasil yang berbeda dengan pengukuran panjang menggunakan ukuran inci. Normalisasi data adalah metode statistika yang digunakan untuk mengatur nilai yang diukur pada suatu skala menjadi nilai pada skala berbeda yang lebih umum sehingga seluruh atribut dari data memiliki jangkauan nilai yang sama (Han, et al. 2011). Pada normalisasi, data ditransformasi sehingga memiliki jangkuan [-1,0, 1,0] ataupun [0,0, 1,0]. Normalisasi merupakan proses yang sangat penting terutama pada implementasi algoritma jaringan saraf tiruan, karena perbedaan bobot dapat mempengaruhi hasil yang didapatkan.

Berikut beberapa rumus yang dapat digunakan dalam normalisasi data (Han, et al. 2011):

1. Min-max Normalization

Normalisasi min-max melakukan transformasi linear terhadap data asli, dengan

menggunakan persamaan berikut:

A A

A

A A

A i

i new new new

v

v _max _min _min

min max

min

'  

 


(31)

15

dimana v‟i merupakan nilai hasil normalisasi dengan jangkauan [new_minA, new_maxA]; vi merupakan nilai sebelum normalisasi; minA adalah nilai minimum dari data asli; maxA adalah nilai maksimum dari data asli; new_minA adalah nilai minimum baru untuk data hasil normalisasi; new_maxA adalah nilai maksimum baru untuk data hasil normalisasi. Normalisasi ini tetap menjaga keterhubungan antara nilai data yang sebenarnya.

2. Z-score Normalization

Normalisasi z-score atau disebut juga normalisasi zero-mean, dimana nilai dari data dinormalisasi berdasarkan nilai mean dan nilai standard deviasi degan rumus:

A i i

A v v

 

' (2.2)

dimana v‟i merupakan nilai hasil normalisasi; vi merupakan nilai sebelum normalisasi; Amerupakan nilai rata-rata dari data asli; A merupakan nilai akar

dari varian atau standard deviasi dari data sebenarnya.

3. Decimal Scaling

Normalisasi decimal scaling dilakukan dengan menggeser nilai titik decimal dari seluruh nilai data. Banyak penggeseran titik desimal bergantung pada nilai maksimum dari data sebenarnya. Berikut rumus yang digunakan pada decimal scaling:

j i i

v v

10

'  (2.3)

dimana v‟i merupakan nilai hasil normalisasi; vi merupakan nilai sebelum normalisasi; j adalah bilangan bulat terkecil sehingga nilai maksimum dari absolut


(32)

2.5. Companding Function

Companding merupakan sebuah metode kuantisasi pada bidang telekomunikasi dalam

pengiriman signal (Bosi, et al. 2003). Companding function atau disebut juga fungsi

kompresi dan ekspansi, dimana kata companding merupakan gabungan dari dua kata compressing dan expanding. Fungsi kompresi dan ekspansi digunakan untuk memetakan sebuah input x pada nilai y dengan persamaan y = c(x), dimana nilai y akan memiliki nilai yang lebih tinggi dibandingkan x dan c adalah companding function (Bosi, et al. 2003). Fungsi kompresi dan ekspansi biasanya bersifat non-simetris diantara garis x=0, sehingga nilai negatif tetap dimetakan pada nilai negatif. Fungsi ini akan memetakan nilai dengan jangkauan [0,0, 1,0] tetap pada jangkauan [0,0, 1,0], tetapi dengan nilai varian lebih tinggi. Terdapat dua aturan companding

yang digunakan secara luas, yakni: A-Law Companding yang digunakan di Eropa dan

µ-Law Companding yang digunakan di Amerika Utara (Manassah, 2012).

Kedua fungsi kompresi dan ekspansi A-Law Companding dan µ-Law Companding dapat direpresentasikan dengan persamaan berikut:

     

 

1 x

y (2.4)

dimana y adalah nilai setelah kompresi dan ekspansi; x adalah nilai sebelum kompresi

dan ekspansi; β merupakan sebuah konstanta dengan nilai 1.5, yang merupakan nilai paling optimum dalam fungsi kompresi dan ekspansi untuk identifikasi file (McDaniel, 2001).

2.6. Ekstraksi Fitur menggunakan Principal Component Analysis

Ekstraksi fitur adalah proses yang dilakukan untuk mengurangi dimensionalitas dari kumpulan fitur input yang dimiliki (Roweis, et al. 2000). Apabila sebuah algoritma harus melakukan proses terhadap input data dengan jumlah yang sangat besar, akan terdapat kemungkinan algoritma tersebut akan memerlukan waktu yang lama untuk menghasilkan output serta memerlukan memori yang cukup besar. Selain itu, dalam input data dengan jumlah yang sangat besar tersebut mungkin terdapat data yang


(33)

17

redundan, sehingga diperlukan reduksi dimensionalitas dari input data untuk menghilangkan data yang redundan tersebut. Ekstraksi fitur dilakukan dengan melakukan transformasi data input menjadi kumpulan fitur yang disebut fitur hasil ekstraksi dengan tidak mengurangi informasi yang terkandung pada data input. Alasan lain melakukan ekstraksi fitur adalah untuk mengurangi memori serta kekuatan komputasi yang diperlukan dalam memproses data.

Salah satu teknik yang umum digunakan dalam ekstraksi fitur adalah Principal Components Analysis (PCA). PCA telah diimplementasikan dalam pengenalan wajah (Morizet, 2007) serta dalam peningkatan kemampuan model prediktif (Vivanco, 2008).

PCA adalah sebuah teknik statistika yang melakukan transformasi terhadap himpunan asli sekumpulan variabel menjadi himpunan variabel yang lebih kecil dan tidak saling berkorelasi tetapi tetap mampu merepresentasikan informasi yang terdapat pada himpunan variabel asli (Dunteman, 1989). Himpunan variabel yang lebih kecil dan tidak saling berkorelasi ini disebut juga dengan principal components. Adapun tujuan

utama dari PCA adalah untuk mengurangi dimensionalitas dari data asli, sehingga data

akan lebih mudah dimengerti dan digunakan dalam analisis lebih jauh.

Metode PCA akan mencoba untuk mencari sebuah dataset yang mampu

mendeskripsikan dataset asli dengan tetap menjaga informasi yang tersimpan sebanyak mungkin (Amirani, et al. 2008). Misalkan X = {xnRd | n = 1, 2, ..., N} merepresentasikan sebuah dataset dengan dimensi d, PCA akan menghasilkan sebuah

dataset Z, dimana Z = {znRk | n = 1, 2, ..., N} dengan dimensi k, dimana nilai k adalah lebih kecil dari d. Langkah-langkah yang dilakukan dalam PCA terdiri atas

(Jolliffe, 2002):

1. Lakukan normalisasi Z-score pada setiap dimensi data yang ada menggunakan rumus 2.2. Tahap ini akan menghasilkan sebuah dataset dengan mean atau rata-rata bernilai nol.

2. Komputasikan nilai matriks kovarian menggunakan rumus:

X X m

T 1


(34)

dimana  adalah matriks kovarian; m merupakan banyak data pada dataset; X adalah dataset asli yang disusun dalam bentuk matriks dengan setiap kolom merupakan fitur, dan setiap baris merupakan kumpulan fitur untuk satu objek; XT merupakan transpos dari matriks X. Apabila data asli memiliki dimensi d maka hasil dari matriks kovarian adalah sebuah matriks dengan ukuran dxd.

3. Kalkulasikan nilai dari eigenvalue serta eigenvector dari matriks kovarian, serta urutkan eigenvector sesuai dengan nilai eigenvalue yang dimiliki secara menurun (eigenvector dengan nilai eigenvalue yang lebih tinggi berada pada sisi kiri matriks). Eigenvalue dan eigenvector merupakan vector-vector yang mengkarakterisasikan data.

4. Pilih komponen dari eigenvector dan membentuk sebuah vektor fitur U. Apabila dimiliki data awal dengan dimensi d, maka akan didapatkan eigenvector sebanyak

d, sehingga apabila dari d eigenvector tersebut dipilih k eigenvector, maka akan

dihasilkan data hasil PCA dengan dimensi k. Pemilihan eigenvector dilakukan

berdasarkan nilai eigenvalue yang dimiliki oleh eigenvector. Apabila dipilih eigenvector dengan nilai eigenvalue rendah, maka informasi yang tersimpan pada

data asli akan berkurang pada data hasil PCA, karena eigenvector dengan eigenvalue rendah menunjukkan data yang direpresentasikan pada vektor tersebut

kurang signifikan, tetapi apabila dipilih eigenvector dengan nilai eigenvalue

tinggi, maka informasi data asli tetap akan terjaga pada data hasil PCA.

Penentuan nilai dimensi k untuk dataset hasil PCA biasanya ditentukan

dengan memperhitungkan nilai retain rate. Retain rate adalah persentase

informasi yang direpresentasikan oleh data asli dan tetap terjaga pada data hasil

PCA. Pemilihan nilai dimensi k pada umumnya dipilih dengan menjaga retain rate pada 0,99, atau dengan kata lain hampir seluruh informasi pada data asli tetap dapat direpresentasikan oleh data hasil PCA. Secara teknis hal ini dapat dilakukan dengan memilih nilai k terkecil yang memenuhi persamaan berikut:

99 , 0

1 1

 

m i k i i

Si S


(35)

19

dimana Si adalah eigenvalue pada posisi ke-i dengan eigenvector serta eigenvalue telah diurutkan secara menurun. Seluruh nilai dari eigenvector yang dipilih

kemudian disusun menjadi sebuah matriks vektor fitur U, dimana setiap

eigenvector yang dipilih akan menjadi kolom dari matriks vektor fitur U. 5. Hitung nilai dari dataset final dengan menggunakan rumus

X U

ZT (2.7)

dimana Z merupakan dataset hasil PCA dalam bentuk matriks; U adalah matriks

vektor yang didapatkan pada tahap sebelumnya; X adalah matriks dataset asli.

2.7. Artificial Neural Network

Artificial Neural Network atau jaringan saraf tiruan dapat didefinisikan sebagai sebuah

model logika yang berdasarkan otak manusia. Sebuah jaringan saraf tiruan memodelkan otak dengan menggunakan sejumlah neuron yang sederhana dan saling terkoneksi dengan sebuah nilai bobot yang meneruskan signal dari satu neuron menuju neuron lainnya (Negnevitsky, 2005). Setiap neuron akan menerima sejumlah input melalui hubungannya, kemudian neuron tersebut akan menghasilkan satu output, sesuai dengan nilai bobot yang pada hubungan tersebut, kemudian diteruskan kembali ke neuron yang lain. Setiap neuron pada jaringan saraf tiruan akan tersusun dalam beberapa layer atau lapisan. Secara umum, sebuah jaringan saraf tiruan terdiri atas tiga

layer, yakni: input layer yang merupakan node-node yang menerima signal input,

middle layer atau sering disebut juga dengan hidden layer yang terdiri atas node yang menghubungkan node pada input layer menuju ke output layer, dan output layer yang merupakan node-node yang menghasilkan signal output. Pembelajaran pada jaringan saraf dilakukan dengan melakukan penyesuaian nilai bobot yang digunakan untuk meneruskan nilai dari satu neuron menuju neuron lain. Arsitektur umum dari sebuah jaringan saraf tiruan dapat dilihat pada gambar 2.3.


(36)

Gambar 2.3. Arsitektur umum sebuah jaringan saraf tiruan (Negnetvisky, 2005)

Penentuan output dari sebuah neuron ditentukan menggunakan sebuah fungsi yang disebut dengan fungsi aktivasi. Ada beberapa jenis fungsi aktivasi yang bisa digunakan dalam menentukan output dari sebuah neuron dengan empat fungsi aktivasi yang secara umum digunakan (Negnetvisky, 2005), yakni: step function, sign function, sigmoid function dan linear function. Masing-masing fungsi aktivasi beserta grafik

yang menggambarkan fungsi dapat dilihat pada gambar 2.4.

Gambar 2.4. Fungsi aktivasi dari sebuah neuron (Negnetvisky, 2005)

Step function dan sign function atau disebut juga fungsi pembatasan kasar, dimana kedua fungsi ini secara umum digunakan pada permasalahan klasifikasi dan pengenalan pola. Sigmoid function mengubah input yang memiliki jangkauan nilai [-∞, ∞] menjadi output dengan jangkauan nilai [0,0, 1,0]. Fungsi ini digunakan pada


(37)

21

sama dengan input yang diterima oleh neuron dan fungsi ini biasanya digunakan pada pendekatan linear.

2.7.1. Kelemahan Artificial Neural Network

Adapun beberapa kelemahan dari jaringan saraf tiruan pada saat diterapkan pada proses evolusi yang kompleks (Kasabov, 2007):

1. Kesulitan dalam memilih arsitektur dari sistem, dimana jaringan saraf tiruan biasanya memiliki arsitektur yang tetap (jumlah neuron serta koneksi tetap). Hal ini mengakibatkan sistem akan susah beradaptasi terhadap data yang belum diketahui distribusinya, Selain itu, arsitektur yang tetap juga menyebabkan jaringan saraf tiruan untuk melakukan pembelajaran untuk waktu yang panjang. 2. Dalam mempelajari data yang baru, jaringan saraf tiruan akan melupakan

pengetahuan lama yang telah dipelajarinya. Fenomena ini dikenal dengan sebutan

catastrophic forgetting.

3. Pelatihan sebuah jaringan saraf tiruan akan memerlukan banyak iterasi serta propagasi data melalui struktur jaringan saraf tiruan, sehingga diperlukan waktu pelatihan yang lama dalam melatih sebuah jaringan saraf tiruan.

4. Kurangnya fasilitas representasi pengetahuan pada jaringan saraf tiruan, dimana jaringan saraf tiruan mampu menagkap parameter statistik, tetapi tidak dapat memfasilitasi ekstraksi aturan evolusi secara berarti. Permasalahan ini juga dikenal dengan sebutan black box problem.

2.7.2. Multilayer Perceptron

Multilayer perceptron adalah sebuah jaringan saraf tiruan dengan satu atau lebih

hidden layer. Multilayer perceptron terdri atas input layer, satu atau lebih hidden layer dan output layer. Gambar 2.5. menunjukkan arsitektur dari sebuah Multilayer perceptron dengan dua hidden layer. Untuk menentukan output pada sebuah

Multilayer perceptron digunakan fungsi aktivasi sigmoid function sesuai dengan rumus yang terlihat pada gambar 2.4.


(38)

Gambar 2.5. Arsitektur Multilayer perceptron dengan dua hidden layer

(Negnetvisky, 2005)

Salah satu algoritma yang digunakan dalam pelatihan multilayer perceptron

adalah back-propagation training algorithm atau algoritma pelatihan propagasi balik,

dimana tahapan yang dilakukan algorima ini dapat dilihat sebagai berikut (Negnetvisky, 2005):

1. Inisialisasi

Berikan nilai acak pada setiap bobot yang menghubungkan seluruh neuron yang ada dengan distribusi yang merata dan dengan jangkauan yang kecil (Haykin, 1999), sesuai rumus:

   

 

 

i

i F

F

4 , 2 , 4 , 2

(2.8)

dimana Fi adalah banyak input dari neuron i pada jaringan. 2. Aktivasi

Aktivasi dari jaringan saraf tiruan dilakukan dengan mengaplikasikan input x1(p), x2(p), ..., xn(p) dan output yang diharapkan yd1(p), yd2(p), ..., ydn(p), dengan p adalah jumlah perulangan yang sudah dilakukan dan p memiliki nilai awal 0. a. Kalkulasikan output sebenarnya dari setiap neuron pada hidden layer, dengan


(39)

23       

n i ij i

j p sigmoid x p w p y 1 ) ( ). ( ) ( (2.9)

dimana n adalah banyak input dari neuron j pada hidden layer dan sigmoid

adalah fungsi aktivasi sigmoid.

b. Kalkulasikan output sebenarnya dari setiap neuron pada output layer dengan rumus:       

m i jk jk

k p sigmoid x p w p

y 1 ) ( ). ( ) ( (2.10)

dimana m adalah banyak input dari neuron k pada output layer dan sigmoid

adalah fungsi aktivasi sigmoid. 3. Pelatihan bobot

Lakukan update atau pembaruan nilai dari setiap bobot pada jaringan saraf tiruan

dengan melakukan propagasi balik terhadap error pada output layer.

a. Hitung error pada setiap neuron pada output layer dengan rumus:

) ( ) ( )

(p yk p ydk p

k  

 (2.11)

kemudian hitung perbaikan bobot menggunakan rumus: ) 1 ( . ) ( ). ( . ) (    

wjk pyj pk pwjk p (2.12)

dimana α adalah sebuah konstanta yang menentukan kecepatan pembelajaran dari algoritma propagasi balik dan disebut dengan learning rate; µ adalah sebuah konstanta yang menentukan besar perubahan update dari bobot dan

disebut dengan momentum.

Lakukan update untuk setiap bobot yang terhubung dengan neuron pada output layer menggunakan rumus:

) ( ) ( ) 1

(p w p w p

wjk   jk  jk (2.13)


(40)

1 ( )

). ( . ) ( ). ( ) ( 1 p y p y p w p

p j j

m

k

jk k

j  

     

   (2.14)

kemudian hitung perbaikan bobot menggunakan rumus: ) 1 ( . ) ( ). ( . ) (    

wij pxi pj pwij p (2.15)

dimana α adalah sebuah konstanta yang menentukan kecepatan pembelajaran dari algoritma propagasi balik dan disebut dengan learning rate; µ adalah sebuah konstanta yang menentukan besar perubahan update dari bobot dan disebut dengan momentum.

Lakukan update untuk setiap bobot yang terhubung dengan neuron pada

output layer menggunakan rumus: ) ( ) ( ) 1

(p w p w p

wij   ij  ij (2.16)

4. Iterasi

Apabila kriteria error belum terpenuhi, lakukan penambahan nilai perulangan p sebanyak satu, kemudian kembali ke langkah 2. Apabila kriteria error telah dipenuhi, maka algoritma pelatihan propagasi balik selesai.

2.8. Distributed Autonomous Neuro-Gen Learning Engine

Untuk mengatasi kelemahan dari jaringan saraf tiruan yang telah dijabarkan pada bagian 2.7.1, (Rahmat, 2008) mengajukan sebuah metode pembelajaran mesin yang baru yang disebut Distributed Autonomous Neuro-Gen Learning Engine (DANGLE). DANGLE adalah sebuah metode pembelajaran mesin yang menyediakan fleksibilitas,

adaptibilitas dan pembelajaran terus menerus serta kemampuan kompitasional yang kuat (Pasha, 2010). DANGLE telah digunakan sebagai gene knowledge discovery engine (Hasibuan, 2009) dan juga Lattice Analysis dalam identifikasi struktur kubik

pada bidang kristalografi (Pasha, 2010).

Arsitektur DANGLE terdiri atas dua komponen utama, yaitu: komponen regulasi gen yang disebut dengan Gene Regulatory Engine (GRE) dan komponen


(41)

25

jaringan neural yang disebut dengan Distributed Adaptive Neural Network (DANN)

(Pasha, 2010). GRE memiliki tugas untuk melakukan regulasi, konstruksi, serta

melatih seluruh jaringan yang terdapat pada DANN. DANN terdiri atas beberapa jaringan saraf tiruan yang terhubung pada GRE secara distributif dan adaptif, dimana setiap jaringan saraf tiruan pada DANN akan memiliki gen masing-masing yang diatur oleh GRE. DANN akan mengkonstruksikan jaringan saraf tiruan sesuai dengan gen yang dimiliki, kemudian hasil output dari DANN akan dikembalikan pada GRE untuk pengembangan gen selanjutnya.

2.8.1. Gene Regulatory Engine

Gene Regulatory Engine (GRE) merupakan sebuah regulator gen sederhana yang diinspirasi oleh interaksi gen satu ke satu dari Gene Regulatory Network pada bidang

biologi. GRE digunakan untuk mengendalikan, memutasi, serta melatih gen sebelum gen dikirimkan pada DANN. Secara sederhana, GRE mengimplementasikan sebuah Genetic Algorithm (GA) tanpa proses crossover dan parent selection, serta inisialisasi

populasi secara acak juga tidak terjadi pada GRE. Arsitektur keseluruhan GRE dapat

dilihat pada gambar 2.6. Secara spesifik diagram lengkap dari model GRE dapat

dilihat pada gamber 2.7, dimana ada dapat dilihat seluruh komponen yang terdapat pada GRE.

Mutation Regulation

Input Gene B Neural Network

Structure Gene A Node

Behavior

B B B B

A A C C C C

“Neuro”Genes Feedback Regulator

Gene Representation Objective Functions

And Output Results

Transform

Neural Network Training DANN

No Chang

es

GRE


(42)

Gambar 2.7. Diagram lengkap model GRE (Rahmat, 2008)

Adapun komponen-komponen dari GRE dapat dijabarkan sebagai berikut

(Rahmat, 2008): 1. Representasi Gen

Secara umum, GRE menggunakan 3 himpunan gene yang berbeda, yakni:

a. Node Behavior’s Gene

Himpunan gen ini memiliki dua variabel seperti yang dapat dilihat pada gambar 2.8. Variabel pertama adalah digunakan untuk menentukan jenis jaringan saraf tiruan yang diimplementasikan pada DANN. Nilai variabel pertama dapat berupa Back-propagation Neural Network (BNN), Multilayer Perceptron (MLP), Spiking Neural Network (SNN), ataupun jenis jaringan


(43)

27

saraf tiruan lainnya, bergantung pada implementasi pada bagian DANN.

Variabel kedua menunjukkan identifikasi dari node (ID Node). Jenis Jaringan Saraf Tiruan

{ BNN, MLP, SNN, etc. }

ID Node { 1,2,..,n} Gambar 2.8. Node Behavior’s Gene (Pasha, 2010) b. Neural Network’s Gene

Himpunan gen ini mengandung variabel untuk setiap parameter jaringan saraf tiruan untuk setiap node yang ada pada DANN seperti yang dapat dilihat pada

gambar 2.9. Parameter-parameter jaringan saraf tiruan yang dimaksud terdiri atas: banyak neuron pada input layer, banyak neuron pada output layer,

banyak hidden layer, banyak neuron pada setiap hidden layer, banyak epoch

(jumlah perulangan yang dilakukan pada proses pelatihan), learning rate, dan

momentum rate.

Banyak neuron pada input layer Banyak neuron pada output layer Banyak hidden layer Banyak neuron pada hidden layer 1

….

Banyak neuron pada

hidden layer N

Epoch Learning rate

Momentum rate

Gambar 2.9. Neural Network’s Gene (Rahmat, 2008) 2. Fitness Function

Untuk melakukan verifikasi dan mengukur objektivitas dari DANN digunakan

root mean squared error (RMSE)atau error akar kuadrat dengan rumus:

 

NO

o p o p o O

P d y

N E 1 2 1 (2.17)

dimana EP adalah akar dari perbedaan kuadrat antara output yang diharapkan dengan output sebenarnya; NO adalah banyak neuron pada output layer;

p o

d adalah output yang diharapkan pada neuron ke-o dan pola ke-p; p o

y adalah output sebenarnya pada neuron ke-o dan pola ke-p. Karena setiap gen memiliki fungsi objektifnya masing-masing, makan rata-rata fungsi objektif untuk setiap jaringan saraf tiruan dalam DANN dapat dihitung menggunakan persamaan:


(44)

NG N i Pi AVG

N E E

NG

 0 (2.18)

dimana EPi adalah error untuk masing-masing jaringan saraf tiruan; NNG adalah banyak jaringan saraf tiruan yang terdapat pada DANN. Fitness function atau fungsi kecocokan untuk DANN adalah sama dengan EAVGyang merupakan rata-rata dari setiap fungsi objektif dari seluruh jaringan saraf tiruan dalam DANN

(Rahmat, 2008). 3. Regulator Mutasi

Komponen regulator mutasi merupakan komponen yang paling penting dalam

DANGLE yang memungkinkan setiap jaringan saraf tiruan dalam DANN menjadi

adaptif. Apabila terjadi mutasi pada sebuah gen, maka jaringan saraf tiruan yang terasosiasi pada gen tersebut harus dilatih ulang sehingga mampu beradaptasi terhadap struktur jaringan yang baru (Pasha, 2010). Lima entitas yang dimutasi oleh regulator mutasi adalah banyak hidden layer, banyak neuron pada setiap hidden layer, epoch, learning rate dan momentum rate. Aturan yang digunakan

dalam melakukan mutasi gen dapat dilihat pada pseudocode berikut: if (generation = 1) then

epoch += 2 else

calculate delta_O = delta_O[generation] – delta_O[generation-1] if (delta_O > 0.005) then

epoch += rand(3)

else if (0.002 < delta_O <= 0.005) then O_smaller_than_0_005++

epoch += rand(6)

for each hidden_layer do

hidden_neuron += 2 * rand(5) if (O_smaller_than_0_005 > 1) then epoch += 10 * rand(5)

for each hidden_layer do

hidden_neuron += 2 * rand(5) else

epoch += 100 * rand(5) hidden_layer += 1

for each hidden_layer do


(45)

29

end if end if

4. Proses Pelatihan

Proses pelatihan adalah proses dalam sebuah jaringan saraf tiruan untuk mendapatkan bobot yang tepat untuk menghasilkan output yang diharapkan. Pada

DANGLE, pelatihan tidak hanya terjadi pada jaringan saraf tiruan, melainkan juga terjadi pada GRE (Rahmat, 2008).

5. Neuro-Gene

Transformasi Neuro-Gene adalah sebuah proses pengaturan eksekusi ataupun pelatihan jaringan saraf tiruan pada setiap node(Rahmat, 2008).

Algoritma utama pada GRE didesain untuk mengendalikan gen yang ada, dimana algoritma utama GRE mengusung konsep mutasi pada Genetic Algorithm

(GA). Dengan kata lain, GRE adalah sebuah GA sederhana yang hanya memiliki operator mutasi di dalamnya. Algoritma utama GRE dapat dijabarkan sebagai berikut

(Rahmat, 2008):

1. Inisialisasi seluruh nilai variabel gene untuk setiap jaringan saraf tiruan, yakni seluruh neuron pada input layer dan output layer, jumlah hidden layer dan setiap

neuron pada hidden layer, generasi, epoch¸learning rate serta momentum rate.

2. Kirim seluruh gen jaringan saraf tiruan ke DANN.

3. Terima hasil fungsi objektif dan output yang dihasilkan setiap jaringan saraf tiruan. Hitung nilai dari fitness function dengan rumus 2.18 untuk setiap jaringan

saraf tiruan. Apabila nilai error rata-rata (EAVGyang merupakan hasil dari fitness function) lebih rendah dari nilai kriteria terminasi DANGLE, lanjutkan ke langkah

6. Apabila nilai error rata-rata lebih tinggi atau masih sama dengan nilai kriteria terminasi DANGLE, lanjutkan ke langkah 4.

4. Apabila setiap nilai objective function yang didapatkan pada langkah 3 lebih rendah dari nilai kriteria terminasi mutasi, maka lakukan regulasi mutasi sesuai aturan mutasi yang dijabarkan pada bagian 2.8.1 untuk setiap gen jaringan saraf tiruan. Apabila terdapat salah satu nilai objective function lebih tinggi dari nilai


(46)

kriteria terminasi mutasi, maka mutasi tidak dilakukan untuk setiap gen jaringan saraf tiruan.

5. Bentuk gene baru hasil mutasi sesuai dengan hasil struktur yang didapatkan dari mutasi regulasi yang dilakukan pada langkah 4. Tambah nilai generasi dengan satu (generation = generation + 1). Kembali ke langkah 2.

6. Hentikan proses GRE, dimana pelatihan telah selesai dilakukan.

2.8.2. Distributed Adaptive Neural Network

Distributed Adaptive Neural Network (DANN) dapat juga disebut sebagai sebuah

Adaptive Nested Neural Network (ANNN) for Uncorrelated Data. DANN didesain untuk menyelesaikan permasalahan dengan setiap partisi data tidak mempunyai korelasi atau hubungan dengan partisi data yang lain (Rahmat, 2008). Secara konseptual, DANN menggunakan beberapa jaringan saraf tiruan dan membagi beban

kerja pada setiap jaringan saraf tiruan, dibandingkan dengan membiarkan sebuah jaringan saraf tiruan yang besar dan kompleks memproses seluruh data yang ada (Pasha, 2010). DANN diaplikasikan untuk mengurangi kompleksitas dari data serta

permasalahan. Setiap agen pada DANN dimodelkan untuk menerima input yang

berbeda, kemudian setiap output dari setiap agen akan dikembalikan pada GRE untuk

digunakan sebagai parameter pada proses mutasi. Gambar 2.10. menunjukkan arsitektur dari DANN, dimana sebuah node merujuk pada sebuah agen yang memiliki

sebuah jaringan saraf tiruan. Setiap node memiliki gen masing-masing dan berjalan secara paralel pada lingkungan yang berbeda. Adapun jaringan saraf yang digunakan pada setiap agen dapat berupa jaringan saraf tiruan dengan jenis apapun.

Algoritma utama yang diimplementasikan pada setiap jaringan saraf tiruan dalam DANN, dengan jaringan saraf yang digunakan adalah multilayer perceptron,

dijabarkan sebagai berikut (Pasha, 2010):


(47)

31

Output Neuron

Input Neuron Hidden Neuron

Input From Environment NODE/AGENT

NODE/AGENT NODE/AGENT

G R T E

Send Output

Training Training

Training

NODE/AGENT

Training

Gambar 2.10. Arsitektur umum dari Distributed Autonomous Neural Network

(Rahmat, 2008)

2. Lakukan proses pelatihan sesuai dengan algoritma pelatihan jaringan multilayer perceptron yang sudah dijelaskan pada bagian 2.7.2. sebanyak epoch yang terdapat pada gen yang dikirimkan dari GRE

3. Hitung nilai dari fungsi objektifuntuk jaringan saraf tiruandengan rumus 2.14. 4. Hitung nilai selisih nilai output yang diharapkan dengan output yang sebenarnya

didapatkan dengan rumus: a

d y y

O  (2.19)

dimana O merupakan selisih nilai output; yd merupakan nilai output yang diharapkan; yaadalah nilai output aktual yang didapatkan.

5. Kirimkan kembali nilai fungsi objektif dan nilai O, yang telah didapatkan pada


(48)

BAB 3

ANALISIS DAN PERANCANGAN

Bab ini membahas tentang implementasi metode Distributed Autonomous Neuro-Gen Learning Engine untuk melakukan identifikasi file dokumen berdasarkan konten. Bab ini juga membahas tentang data yang digunakan serta pre-processing yang dilakukan terhadap setiap data tersebut.

3.1. Arsitektur Umum

Metode yang diajukan pada penelitian ini dapat dilihat pada gambar 3.1 yang menunjukkan arsitektur umum dari rangkaian langkah yang dilakukan untuk melakukan identifikasi jenis file dokumen, Rangkaian langkah yang dimaksud adalah sebagai berikut: pengumpulan file-file dokumen dan non-dokumen yang akan digunakan sebagai data pelatihan serta data pengujian; kalkulasi Byte Frequency Distribution (BFD) dari setiap file yang ada; normalisasi serta kompresi dan ekspansi

hasil kalkulasi BFD; pengurangan dimensionalitas dari 256 dimensi fitur BFD

menjadi k dimensi pada setiap data pelatihan dan data pengujian; partisi data pelatihan yang telah dikurangi dimensionalitasnya; pelatihan jaringan saraf tiruan pada

Distributed Adaptive Neural Network (DANN) yang diatur oleh Gene Regulatory Engine (GRE) menggunakan data pelatihan untuk menghasilkan DANN hasil

pelatihan; pengujian DANN hasil pelatihan menggunakan data pengujian untuk mengetahui akurasi klasifikasi dari DANN, serta error akar kuadrat dari DANN. Setelah rangkaian langkah diatas dilakukan maka DANN hasil pelatihan yang didapatkan akan mampu mengidentifikasi file dengan jenis yang tidak diketahui. Setiap tahapan yang dilakukan akan dijelaskan dengan lebih terperinci pada bagian-bagian selanjutnya.


(49)

33


(50)

3.2. Dataset

Data yang digunakan pada penelitian ini merupakan file-file dokumen pemerintahan yang dikumpulkan secara acak dari http://digitalcorpora.org/corpora/files, serta file-file non-dokumen yang juga dikumpulkan secara acak. Adapun jenis-jenis file-file yang digunakan dalam penelitian ini adalah file-file dokumen yang terdiri atas file aplikasi

Microsoft Office Word (doc), Powerpoint (ppt) dan Excel (xls), file Adobe Portable Document Format (pdf), serta file Hypertext Markup Language (html) dan file-file non-dokumen yang terdiri atas file Graphics Interchange Format (gif), serta file Joint Photographic Experts Group (jpg). Total file yang dikumpulkan seluruhnya berjumlah 1800 file. Spesifikasi seluruh file dokumen serta non-dokumen yang dikumpulkan dapat dilihat pada tabel 3.1.

File-file yang telah dikumpulkan kemudian dibagi menjadi dua dataset, yakni:

training dataset atau dataset pelatihan yang akan digunakan untuk melatih DANN dan testing dataset atau dataset pengujian yang digunakan untuk mengetahui akurasi dan

error dari DANN hasil pelatihan. Pembagian seluruh dataset menjadi dataset pelatihan

dan dataset pengujian dilakukan secara acak, detail pembagian dataset dapat dilihat pada tabel 3.2 dan tabel 3.3.

Tabel 3.1. Spesifikasi file-file yang digunakan sebagai data penelitian Jenis file Banyak file Ukuran file

minimum (byte)

Ukuran file maksimum (byte)

Doc 300 17.920 14.170.112

Html 300 237 1.104.452

Pdf 300 6.349 5.582.269

Ppt 300 34.816 38.524.416

Xls 300 7.336 27.972.096


(51)

35

Tabel 3.2. Spesifikasi training dataset

Jenis file Banyak file Ukuran file

minimum (byte)

Ukuran file maksimum (byte)

Doc 250 21.504 14.170.112

Html 250 237 1.104.452

Pdf 250 6.506 5.582.269

Ppt 250 34.816 38.524.416

Xls 250 7.336 27.972.096

Non-dokumen (gif, jpg) 250 2.888 14.871.962

Tabel 3.3. Spesifikasi testing dataset

Jenis file Banyak file Ukuran file

minimum (byte)

Ukuran file maksimum (byte)

Doc 50 17.920 7.516.672

Html 50 1.116 1.064.819

Pdf 50 6.349 3.748.578

Ppt 50 38.912 11.466.240

Xls 50 20.480 12.377.088

Non-dokumen (gif, jpg) 50 3.406 6.437.537

3.3. Pre-process

Sebelum dataset pelatihan maupun dataset pengujian digunakan, terlebih dahulu harus dilakukan beberapa proses untuk mendapatkan fitur-fitur yang dapat merepresentasikan masing-masing file pada dataset pelatihan dan dataset pengujian. Untuk memperjelas setiap tahapan yang dilakukan, akan disediakan sebuah file sampel dengan jenis file dokumen dengan ekstensi doc sebagai contoh proses yang dilakukan pada setiap tahap. File sampel tersusun atas byte-byte berikut (dalam heksadesimal):


(1)

for(int i=0; i<nNode; i++)

Node[i] = new NeuralNetworkVec(Kernel.MULTI_LAYER_PERCEPTRON, (i+1), PCA_active);

System.out.println("Start Training..."); double E_avg = 100.0;

String training_data; if(PCA_active)

training_data = Kernel.getDataSetPath() + "training_pca.xml"; else

training_data = Kernel.getDataSetPath() + "training_companded.xml";

HashMap<String, double[][]> training_set =

FileProcess.loadFeature(FileProcess.loadDocument(training_data)); Iterator<String> mapIterator = training_set.keySet().iterator(); ArrayList<String> classList =

FileProcess.getClass(FileProcess.loadDocument("refference/file_type_in fo.xml"));

int i = 0;

int nTraining = 0;

ArrayList<double[][]> NiAll = new ArrayList<double[][]>(); ArrayList<double[]> TargetAll = new ArrayList<double[]>(); while(mapIterator.hasNext()){

String key = mapIterator.next(); String targetString =

FileProcess.generateTargetString(classList, key);

double[][] Ni = training_set.get(key); nTraining = Ni.length;

double[] target = DataProcess.parseToArray(targetString);

NiAll.add(Ni);

TargetAll.add(target);

i++; }

int nClass = i;

int nInputs = nTraining * nClass / nNode; int nPerClass = nInputs / nClass;

for(int j=0; j<nNode; j++){

double[][] Ni = new double[nInputs][]; double[][] target= new double[nInputs][]; for(int t=0; t<nClass; t++){

for(int k=0; k< nPerClass; k++){

Ni[k + t*nPerClass] = NiAll.get(t)[k + j*nPerClass]; target[k + t*nPerClass] = TargetAll.get(t);

} }

Node[j].setInputNode(Ni); Node[j].setTarget(target); }


(2)

PrintWriter writer = null; try {

DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date();

writer = new PrintWriter("log\\" + dateFormat.format(date) + "log.txt", "UTF-8");

} catch (Exception e) { e.printStackTrace(); }

for(;;){ try{

agent = new Socket[nNode];

connection = new SocketConnect[nNode];

for(int j=0; j<nNode; j++){

agent[j] = welcomeSocket.accept();

connection[j] = new SocketConnect(agent[j]); connection[j].sendMessage("TRAIN");

connection[j].sendObject(Node[j]); }

for(int j=0; j<nNode; j++){

NeuralNetworkVec temp = (NeuralNetworkVec) connection[j].getObject();

Node[j] = temp; }

for(int j=0; j<nNode; j++){ Node[j].printStatus(writer); Node[j].printStatus(); Node[j].save();

}

E_avg = 0.0;

for(int j=0; j<nNode; j++){

E_avg += Node[j].getE() / (double) nNode; }

writer.println("E_average: " + E_avg); writer.println();

if(E_avg <= Kernel.DANGLE_TERMINATION_CRITERION) break;

boolean mutate = true; for(int j=0; j<nNode; j++){ if(Node[j].getO() <= Kernel.MUTATION_TERMINATION_CRITERION) mutate = false;

}

if(mutate)

for(int j=0; j<nNode; j++) Node[j].mutate();

for(int j=0; j<nNode; j++) Node[j].nextGeneration();


(3)

} catch (IOException e){ e.printStackTrace(); }

}

writer.println("Training completed"); System.out.println("Training completed");

writer.close(); }

public void test(){

System.out.println("Training Dataset"); test("training");

System.out.println(); System.out.println();

System.out.println("Testing Dataset"); test("testing");

}

public void test(String type){ String testing_data;

if(PCA_active)

testing_data = Kernel.getDataSetPath() + type + "_pca.xml"; else

testing_data = Kernel.getDataSetPath() + type + "_companded.xml";

HashMap<String, double[][]> testing_set =

FileProcess.loadFeature(FileProcess.loadDocument(testing_data)); Iterator<String> mapIterator = testing_set.keySet().iterator();

ArrayList<String> classList =

FileProcess.getClass(FileProcess.loadDocument("refference/file_type_in fo.xml"));

double total_correct = 0.0; double total_test = 0.0; double E_avg = 0.0;

while(mapIterator.hasNext()){ String key = mapIterator.next();

double[][] Ni = testing_set.get(key); double[] target =

DataProcess.parseToArray(FileProcess.generateTargetString(classList, key));

double[] output;

double[] result = new double[Kernel.INITIAL_OUTPUT_NEURON];

System.out.println();

System.out.println("Target " + key + " (" + FileProcess.generateTargetString(classList, key) + ")");

int same = 0;

int doc = 0, docx = 0, pdf = 0, ppt = 0, pptx = 0, rtf = 0, xls = 0, xlsx = 0;

for(int j=0; j<Ni.length; j++){ for(int k=0; k<result.length; k++)


(4)

result[k] = 0.0;

for(int k=0; k<nNode; k++){ output =

Node[k].feedForwardVectorized(DataProcess.generateBasicMatrix(Ni[j]));

for(int m=0; m<result.length; m++){

result[m] += (output[m] / (double) nNode); }

}

double E = 0.0; double maks = -1.0; int idx = -1;

for(int k=0; k<result.length; k++){ if(maks < result[k]){

maks = result[k]; idx = k;

}

E += Math.pow(result[k] - target[k], 2); }

E /= result.length; E = Math.sqrt(E);

E_avg += E / (double) Ni.length;

if(idx==0) doc++;

else if(idx==1) docx++; else if(idx==2) pdf++;

else if(idx==3) ppt++;

else if(idx==4) pptx++; else if(idx==5) rtf++;

else if(idx==6) xls++;

else if(idx==7) xlsx++;

if(target[idx]==1) same++;

}

System.out.println(doc + " " + docx + " " + pdf + " " + ppt + " " + pptx + " " + rtf + " " + xls + " " + xlsx + " ");

System.out.println("Correct Detected: " + same); System.out.println("Accuracy: " + ((double)same / (double)Ni.length * 100) + "%");

System.out.println();

total_correct += same; total_test += Ni.length; }

System.out.println("Total Accuracy: " + (total_correct / total_test * 100.0) + "%");


(5)

System.out.println("Testing Completed"); }

}

3. NodeBehaviorGene.java

package com.thesis.neural_network; import java.io.Serializable;

public final class NodeBehaviorGene implements Serializable { private static final long serialVersionUID = 1L;

//Node Behavior Gene Set private int neuralNetworkType; private int nodeID;

public NodeBehaviorGene(int type, int nodeID){ this.neuralNetworkType = type;

this.nodeID = nodeID; }

public int getNetworkType(){ return this.neuralNetworkType; }

public int getNodeID(){ return this.nodeID; }

}

4. NeuralNetworkGene.java

package com.thesis.neural_network; import java.io.Serializable; import java.util.ArrayList; import com.thesis.agent.Kernel;

public final class NeuralNetworkGene implements Serializable { private static final long serialVersionUID = 1L;

private int input_neuron; private int output_neuron; private int hidden_layer;

private ArrayList<Integer> hidden_neuron;

private int epoch;

private double learning_rate; private double momentum; private double lambda;

private int generation;

private int O_smaller_than_0_005;


(6)

public NeuralNetworkGene(){ initializeGene();

}

public void initializeGene(){

input_neuron = Kernel.INITIAL_INPUT_NEURON; output_neuron = Kernel.INITIAL_OUTPUT_NEURON; hidden_layer = Kernel.INITIAL_HIDDEN_LAYER;

hidden_neuron = new ArrayList<Integer>(); for(int i=0; i<hidden_layer; i++)

hidden_neuron.add(Kernel.INITIAL_HIDDEN_NEURON);

epoch = Kernel.INITIAL_EPOCH;

learning_rate = Kernel.INITIAL_LEARNING_RATE; momentum = Kernel.INITIAL_MOMENTUM;

lambda = Kernel.INITIAL_LAMBDA;

generation = 1;

O_smaller_than_0_005 = 0; }

private void updateHiddenNeuron(int updateValue){ for(int i=0; i<hidden_layer; i++)

hidden_neuron.set(i, hidden_neuron.get(i) + updateValue); }

public void mutate(double deltaO){ if(generation == 1)

epoch +=2; else{

if(deltaO <= 0.05) epoch += rand(6); else{

O_smaller_than_0_005++;

if(deltaO > 0.05 && deltaO < 0.1){ if(O_smaller_than_0_005 > 1){ epoch += 50 * rand(5); } else {

epoch += rand(10); }

updateHiddenNeuron(2 * rand(5)); } else {

epoch += 100 * rand(5); hidden_layer += 1;

hidden_neuron.add(Kernel.INITIAL_HIDDEN_NEURON); updateHiddenNeuron(10 * rand(2));

} } } }

public void nextGeneration(){ generation++;

} }