SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
Oleh:
Dian Ambar Kusuma
NIM : 045314040
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain Informatics Engineering Degree
In Informatics Engineering Department
by:
Dian Ambar Kusuma
NIM : 045314040
INFORMATICS ENGINEERING STUDY PROGRAM
INFORMATICS ENGINEERING DEPARTMENT FACULTY
OF SAINS AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2008
Dalam Segala perkara,Tuhan punya rencana
Yang lebih besar dari semua yang ter pikirkan
Apapun yang Kau perbuat tak ada maksud jahat,
S’bab itu kulakukan semua denganMu Tuhan
Kutakakan menyerah pada apapun juga,
Sebelum ku coba semua yang kubisa
Tetapi ku berserah kepada kehendak-Mu,
Hatiku percaya Tuhan punya ReNcaNa
pRoblemku KECIL, kaRena YESUSku BeSaR;
bebaNku RiNgaN, kaRena YESUSku KuaT;
HiduPku menjaDi beRkat, kaRenaYESUSku ajaib daN DasYat
Janganlah kamu menjadi serupa dengan dunia, tetapi berubahlah oleh
pembaharuan budimu, sehingga kamu dapat membedakan manakan kehendak
Allah:apa yang baik, yang berkenan kepada allah dan yang sempurna (Roma 12:2)
Bersukacitalah dalam pengharapan, sabarlah dalam kesesakan,dan bertekunlah
dalam doa! (Roma 12:12)
Jikalau kamu tinggal di dalam Aku dan firman-Ku tinggal di dalam kamu,
mintalah apa saja yang kamu kehendaki, dan kamu akan menerimanya (Yoh 15:7)
manusia.
Dalam skripsi ini dibuat prediksi indeks prestasi mahasiswa baru (dengan
studi kasus Teknik Informatika di USD) menggunakan metode Backpropagation
dan untuk implementasi menggunakan bahasa pemprograman Matlab. Input yang
digunakan adalah nilai ujian masuk dan target yang digunakan adalah indeks
prestasi semester pertama, yang data diambil secara real dari BAPSI USD. Data
dari BAPSI tersebut akan dibagi menjadi dua yaitu 70% untuk proses training
atau pelatihan jaringan dan 30% untuk menguji tingkat akurasi jaringan atau bisa
disebut sebagai proses testing.
Hasil dari percobaan yang dilakukan menunjukkan bahwa untuk
mendapatkan keakuratan yang cukup baik dalam proses pelatihan dan pengujian
adalah dengan menggunakan 2 buah hiiden layer dengan dengan jumah neuron
pada hidden layer ke-1 sebanyak 20 neuron dan jumah neuron pada hidden layer
ke-2 sebanyak 15 neuron, laju pemahaman 0,01 dan galat 0.01.
In this final report we are going to predict GPA of new student
(Information Engineering case study at Sanata Dharma University) using
Backpropagation method and for the implementation using Matlab language
program. The input is the value of entering test and the target is GPA of first
semester from BABSI Sanata Dharma University (real data). The data from
BABSI and then was divided into two categories, 70% for training process or
network training and 30% for analyzing network accuracy level or we often call it
testing process.
The result of the research show that in order to get good accuracy in the training
process and testing were using 2 piece hidden layer with 20 neurons and 15
neurons, learing rate 0,01 and galat 0,01
menyelesaikan skripsi ini dengan judul “PREDIKSI INDEKS PRESTASI
MAHASISWA TAHUN PERTAMA MENGGUNAKAN METODE
BACKPROPAGATION (STUDI KASUS PROGRAM STUDI TEKNIK
INFORMATIKA USD)”.
Dorongan serta nasihat dari berbagai pihak sangat membantu sampai
tersusunnya skripsi ini. Untuk itu, saya ingin mengucapkan terima kasih kepada :
1. Tuhan Yesus Kristus yang telah menyertai penulis selama pembuatan skripsi
ini.
2. Orang tua penulis yang telah memberi dukungan kepada penulis baik
spiritual maupun material dalam penyelesaian skripsi ini.
3. My Lovely Brother Grahono Suryaning Condro yang selalu memberika spirit
kepada penulis pada saat penulis sedang butuh pendorong untuk tetap
semangat dalam menyelesaikan studi ini. Semoga kakakku mendapatkan apa
yang diinginkan.
4. My Big Family yang mungkin tidak dapat penulis sebutkan satu persatu tapi
yang jelas buat semuanya penulis sangat bersyukur punya keluarga yang
sangat support dalam pendidikan.
5. Ibu Agnes Maria Polina, S.Kom., M.Sc., selaku Dosen Pembimbing
Akademik Angkatan 2004 Jurusan Teknik Informatika Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
pengarahan selama penulisan skripsi ini.
7. Teman dan sahabat sejatiku SuseK ☺ terimakasih atas persahabatan yang telah terjalin selama kuliah dan terimakasih karena sudah mau aku repotin....
you’re my best friend. Good LucK for you ‘n semangat.
8. Buat teman-teman terbaikku Dini, Nciz, Monic, Hylda dan Debby yang
selalu siap mendengar keluh-kesahku dan selalu menemani penulis buat
refreshing saat penulis merasa jenuh. Thanks for all ‘n suKses juga buat
kalian semua.
9. Semua temen-teman seangkatan Teknik Informatika 2004 yang tidak bisa
penulis sebutkan satu persatu yang telah mendukung penulis dalam
menyelesaikan penulisan skripsi ini. Terimaksih buat semua pertemanan
yang boleh terjalin selama kuliah.
10. Teman-teman satu bimbingan yang dapat menghibur saat penulis merasa
butuh penghiburan antara lain Agnes,Tammy,Ina dan Vera.
11. Saudara seiman yang telah dipertemukan dalam keadaan tidak sengaja yaitu
mbak Dian,mbak Diana yang begitu luar biasa memberi semangat dan
pengertian bahwa tangan Tuhan tidak akan jauh dari kita. Thanks ya sis...
12. Teman-teman satu pelayanan Paduan Suara Inovatif di GKI Gejayan Ruth,
Kak Echie, dan Kak Viilian. Gbu all
semuanya yang telah memberi dukungan dan doa kepada penulis dalam
menyelesaikan skripsi ini.
Akhirnya skripsi ini terselesaikan, disadari bahwa skripsi ini jauh dari
sempurna. Untuk itu penulis dengan rendah hati mengharapkan kritik dan saran
yang dapat memberikan kesempurnaan pada penulisan skripsi ini. Akhir kata,
semoga skripsi ini dapat bermanfaat bagi penulis, juga pihak yang membutuhkan.
Yogyakarta, 30 Agustus 2008
Penulis
HALAMAN JUDUL ... ii
HALAMAN PERSETUJUAN PEMBIMBING... iii
HALAMAN PENGESAHAN... iv
MOTTO ... vi
ABSTRAK ... vii
ABSTRACT ... viii
KATA PENGANTAR... ix
HALAMAN KEASLIAN KARYA... xii
LEMBAR PERNYATAAN... xiii
DAFTAR ISI ... xiv
DAFTAR TABEL... xvii
DAFTAR GAMBAR ... xviii
DAFTAR GRAFIK... xix
DAFTAR LAMPIRAN... xx
BAB I PENDAHULUAN... 1
1.1.Latar Belakang Masalah ... 1
1.2.Rumusan Masalah ... 2
1.3.Batasan Masalah ... 2
1.4.Tujuan dan Manfaat Penuliasan ... 3
1.5.Metode Penulisan ... 4
2.1.1. Pengertian Jaringan syaraf Tiruan... 6
2.2. Backpropagation ... 6
2.2.1. Arsitektur Jaringan Backpropagation... 6
2.2.2. Pelatihan Standart Backpropgation ... 7
2.2.3. Algoritma Backpropagation ... 8
BAB III ANALISA DAN PERANCANGAN ... 11
3.1. Analisa Sistem ... 11
3.1.1. Analisa Masalah ... 11
3.1.2. Analisa Kebutuhan ... 12
3.1.3. Analisa Data ... 12
3.2. Perancangan Antar Muka/Desain Output ... 16
3.2.1. Tampilan Utama... 16
3.2.2. Tampilan Menu Pengujian ... 19
3.2.3. Tampilan Menu Prediksi ... 20
3.3. Perancangan Model Jaringan Srayaf Tiruan ... 21
3.3.1. Menetapkan Masukan ... 21
3.3.2. Variabel Keluaran ... 21
3.3.3. Arsitektur Jaringan ... 22
3.3.4. Membangun Jaringan ... 23
BAB IV IMPLEMENTASI DAN ANALISA... 28
4.1. Implementasi Program ... 28
4.2. Hasil Implementasi ... 48
4.2.1. Capture-capture Hasil... 48
4.2.1.1.Menu Utama... 48
4.2.1.2.Menu Pengujian ... 50
4.2.1.3.Menu Prediksi ... 51
4.3. Analisa Pelatihan Jaringan... 51
4.4. Pembahasan... 52
4.5. Analisa Hasil... 58
4.6. Kelebihan Sistem ... 58
4.7. Kekurangan Sistem ... 58
BAB V KESIMPULAN DAN SARAN... 58
5.1. Kesimpulan ... 60
5.2. Saran ... 61
DAFTAR PUSTAKA ... 62
LAMPIRAN ... L1
3.1 Tabel Kamus Mata Tes 12
3.2 Tabel Field Data Bapsi 13
3.3 Tabel Variabel Masukkan 21
3.4 Tabel Variabel Keluaran 21
4.1 Tabel pengujian dengan 1 hidden layer dan jumlah
neuron yang beda
53
4.2 Tebel pengujian dengan 1 hidden layer dan laju
pemahaman yang beda
54
4.3 Tabel pengujian dengan dua lapisan tersembunyi 55
4.4 Tabel inputan yang sama dengan tahun yang beda 56
4.5 Perbandingan IP dari tahun yang beda dan input sama
dengan IP JST
57
4.6 Perbandingan prosentase untuk data pelatihan 57
Gambar Keterangan Halaman
2.1 Arsitektur Jaringan Backpropagation 7
3.1 Tampilan Menu Utama 16
3.2 Tampilan Menu Pengujian 19
3.3 Tampilan Manu Prediksi 20
3.4 Arsitektur Jaringan 22
3.5 Flowchart Training Data 24
3.6 Flowchart Testing Data 26
4.1 Tampilan Aplikasi Menu Utama 48
4.2 Grafk Pembelajaran 49
4.3 Tampilan Kesimpulan hasil pelatihan 49
4.4 Tampilan Aplikasi Menu Pengujian 50
4.5 Tampilan Kesimpulan hasil pengujian 50
4.6 Tampilan Aplikasi Menu Prediksi 51
Grafik Keterangan Halaman
4.1 Pengujian dengan jumlah neuron tiap hidden layer beda 54
4.2 Pengujian dengan nilai laju pemahaman beda 55
4.3 Pengujian dengan dua hiddean layer 56
Lampiran 2 : Data Perbandingan target dengan output jaringan
Lampiran 3 : Contoh Perhitungan Manual
Lampiran 4 : Listing Program
Lampiran 5 : Surat Ijin Ambil Data ke BAPSI
1.1.Latar Belakang Masalah
Salah satu masalah yang sering sekali muncul dan sering terjadi di Teknik
Informatika Universitas Sanata Dharma adalah hasil Indeks Prestasi di tahun
pertama. Jika hal ini selalu diabaikan, dapat menyebabkan turunnya nilai
akreditasi dari jurusan Teknik Informatika itu sendiri. Untuk itu alangkah lebih
baik jika dalam proses awal penerimaan mahasiswa baru dilakukan seleksi lebih
ketat dengan melakukan prediksi terhadap setiap mahasiswa baru yang
memasukkan datanya sebagai calon mahasiswa di Teknik Informatika.
Masalah yang biasanya muncul saat hendak melakukan prediksi adalah
inputan apa saja yang akan menjadi bahan pertimbangan sehingga menghasilkan
nilai prediksi optimal. Karena setiap inputan yang hendak digunakan akan sangat
berpengaruh, maka dalam mengambil contoh harus dilakukan pertimbangan
matang. Sejauh ini inputan yang dapat dilakukan dalam prediksi Indeks Prestasi
seorang calon mahasiswa baru hanyalah hasil test masuk secara reguler saja. Hal
ini diambil karena di Teknik Informatika sendiri, seorang calon mahasiswa tidak
diwajibkan untuk menyerahkan nilai-nilai raport waktu SMA maupun hasil NEM
waktu lulus SMA (dapat dilihat dari tabel yang telah di dapat dari pihak BAPSI
ada di lampiran).
1.2.Rumusan Masalah
Dari latar belakang di atas dapat dirumuskan sebagai berikut:
Bagaimana membangun sebuah aplikasi Jaringan Syaraf Tiruan yang dapat
membantu manghasilkan prediksi sebuah Indeks Prestasi di tahun pertama
berdasarkan inputan nilai hasil test masuk dengan menggunakan metode
Backpropagation?
1.3.Batasan Masalah
Dalam prediksi indeks prestasi mahasiswa baru dengan jaringan syaraf tiruan
yang menggunakan metode backpropagation ini dilakukan beberapa batasan
masalah antar lain sebagai berikut:
• Prediksi hanya dilakukan untuk calon mahasiswa yang masuk melalui test
atau regular(tidak untuk calon mahasiswa yang masuk melalui jalur prestasi
atau yang lainnya).
• Inputan hanya berdasar data test masuk mahasiswa yang biasa digunakan
(faktor luar selain sisi akademik tidak menjadi pertimbangan). Inputannya ada
lima macam yaitu Penalaran Verbal, Kemampuan Numerik, Penalaran
Mekanik, Hubungan Ruang, Bahasa Inggris.
• Dalam melakukan prediksi ini metode jaringan syaraf tiruan yang digunakan
hanya metode Backpropagation.
• Data penelitian yang bisa didapatkan dari pihak Bapsi dan yang dapat
• Data untuk training atau pelatihan sebesar 70% awal dari data tiap tahun yang
sudah digabung menjadi satu dan untuk data testing atau pengujian sebesarr
30% setelah data training.
• Untuk jumlah hidden layer hanya dibatasi maksimum 2 layar.
• Untuk tiap hidden layernya maksimun neuronnya dibatasi hanya 40 neuron.
• Untuk maksimum epoch hanya dibatasi maksimum 8000 epoch.
• Untuk jenis fungsi aktivasi yang nantinya digunakan adalah fungsi sigmoid
biner (logsig).
• Bahasa pemrograman yang digunakan adalah Matlab versi 7.0 di bawah
system operasi Windows.
• Penyimpanan data tidak dilakukan menggunakan database. Data yang
digunakan adalah data dalam bentuk text atau .txt. Data yang di dapat dari
BAPSI USD dalam bentuk excel dapat langsung di lakukan save as terlebih
dahulu menjadi bentuk text.
1.4.Tujuan dan Manfaat Penulisan
Beberapa hal yang menjadi tujuan dari pembuatan program Bantu untuk
prediksi Indeks Prestasi awal semester antara lain :
• Merancang sistem Jaringan Syaraf Tiruan untuk memberikan prediksi
keputusan tetang Indeks Prestasi tahun pertama kepada calon Mahasiswa Baru
yang mendaftar sebagai mahasiswa teknik informatika.
Sedangkan manfaat yang akan diperoleh dari penulisan skripsi ini adalah
Teknik Informatika Universitas Sanata Dharma adalah mahasiswa/mahasiswi
yang berkualitas dan diharapkan nantinya saat lulus dapat bersaing dengan
masyarakat di luar Universitas Sanata Dharma.
1.5.Metodologi Penulisan
• Mengambil data secara real di BAPSI USD, lalu menentukan faktor-faktor
yang sangat mempengaruhi dalam proses prediksi dan nantinya akan dijadikan
inputan.
• Studi pustaka tentang prediksi dengan jaringan syaraf tiruan yang
menggunakan metode Backpropagation.
• Implementasi prediksi Indeks Prentasi dengan Jaringan Syaraf Tiruan
menggunakan metode Backpropagation dalam suatu program Matlab versi
7.0.
1.6.Sistematika Penulisan
Dalam penulisan skripsi ini akan dibagi menjadi 5 bagian yaitu:
BAB I Pendahuluan
Pendahuluan di sini dimaksudkan sebagai pengantar sebelum memasuki isi dari
penulisan yang sesungguhnya. Pada bab ini meliputi latar belakang masalah yang
mana akan menjelaskan masalah apa yang terjadi dan alasan timbulnya masalah,
batasan masalah akan menjelaskan batasan-batasan yang akan diselesaikan dalam
yang diangkat dan manfaat atau keuntungan yang akan dicapai dari penelitian ini,
rumusan masalah, metodologi penelitian,dan sistematika penulisan.
BAB II Landasan Teori
Berisi teori-teori yang menjelaskan tentang Jaringan Syaraf Tiruan, metode
Backpropagation dan teori yang berkaitan dengan pembuatan Tugas Akhir ini.
BAB III Analisis dan Perancangan Sistem
Berisi tentang analisa sistem yang terdiri dari analisa masalah, analisakebutuhan,
dan analisa data yang digunakan yaitu nilai test masuk pada tahun 2003-2007
sebagai input pada jaringan syaraf tiruan. Kemudian dilanjutkan dengan
perancangan system dan perancangan interface (desain output).
BAB IV Implementasi dan Analisa
Bagian ini akan membahas bagaimana sebagai penulis mengubah rancangan yang
sudah ditulis sebelumnya ke penerapan yang sesungguhnya. Kemudian akan
dilanjutkan dengan jawaban atas rumusan masalah yang telah dikemukakan pada
BAB I.
BAB V Kesimpulan dan Saran
Pada bab ini akan berisi tentang jawaban secara singkat dari rumusan masalah dan
2.1.Jaringan Syaraf Tiruan
2.1.1.Pengertian Jaringan Syaraf Tiruan
Jaringan syaraf tiruan yang sering disingkat sebagai JST adalah sebuah
paradigma pemrosesan suatu informasi yang terinspirasi dari system sel pada
biologi, yang mana mempunyai cara kerja seperti otak dalam memproses suatu
informasi. Salah satu metode yang ada pada Jaringan syaraf tiruan adalah
Backpropagation, yang mana metode ini nantinya akan digunakan pada penulisan
skripsi.
2.2.Backpropagation
2.2.1. Arsitektur Jaringan Backpropagation
Pada metode Backpropagation terdapat layar tersembunyi (hidden layer)
yang terletak diantara unit input dan unit output. Sedangkan di setiap layar
memiliki sebuah bias. Untuk modifikasi bobotnya menggunakan aturan Delta.
Dapat digambarkan arsitektur dari Backpropagation adalah sebagai berikut :
Gambar 2.1 Arsitektur Jaringan Backpropagation x 1 Y1 x n xi
Yk Ym
z
1
z
p
1 zj
1 wmp wkp w1p wmj wkj w1j wm1 wk1 w10 w11 wm0 wk0 vpn v1n vjn vpi
vj0 vj1 vji
v10 v
11 v1i
vp1
vp0
2.2.2.Pelatihan Standart Backpropagation
Pelatihan Backpropagation terdiri dari 3 fase yaitu:
• Fase I : Propagasi maju
Saat propagasi maju, sinyal masukkan (xi) dipropagasikan ke layar
tersembunyi menggunakan fungsi aktivasi yang telah ditetapkan sebelumnya.
Kemudian keluaran dari setiap unit layar tersembunyi (zj) tersebut dipropagasi
maju lagi ke layar tersembunyi di atasnya menggunakan fungsi aktivasi t\yang
tealh ditetapkan pula. Dilakukan terus hingga memperoleh hasil keluaran
jaringan (yk).
Selanjutnya,keluaran jaringan tersebut dibandingkan dengan target yang
harusnya dicapai (tk). Maka selisih antara target dan keluaran jaringan (tk - yk)
merupakan sebuah kesalahan yang terjadi (error). Apabila kesalahan yang
dihasilkan lebih besar dari toleransi kesalahan yang sudah ditetapkan
sebelumnya, maka bobot setiap garis pada jaringan akan dilakukan modifikasi
dihasilkan lebih kecil dari toleransi kesalahan yang ditetapkan, maka iterasi
sudah dapat dihentikan.
• Fase II : Propagasi mundur
Berdasarkan kesalahan (tk-yk), dihitung faktor δk (k = 1,2,...,m) layar keluaran.
δk nantinya akan dipakai sebagai dasar perubahan atau pada saat melakukan
modifikasi yang akan dilakukan pada fase III.
Dengan cara yang sama, hitung faktor δj untuk setiap layar di bawahnya sampai
semua bobot termodifikasi.
• Fase III : Perubahan bobot
Pada fase ini intinya adalah melakukan modifikasi bobot berdasarkan faktor
kesalahan δk yang telah dilakukan pada fase sebelumnya.
Ketiga fase tersebut akan terus diulang-ulang sampai kondisi penghentian telah
dipenuhi. Untuk kriteria penghentian iterasi adalah sebagai berikut :
• Kesalahan keluaran < batas toleransi yang diberikan
• Jumlah epoch > maksimun iterasi yang ditetapkan
• Penurunan kesalahan terlalu kecil
2.2.3. Algoritma Backpropagation
Untuk algoritma pelatihan standart pada Backpropagation adalah sebagai
berikut:
0. Inisialisasi semua bobot dengan bilingan random kecil
1. Jika kondisi penghentian belum terpenuhi, lakukan langkah 2-9
3. setiap unit masukkan menerima sinyal dan meneruskannya ke unit tersembunyi
di atasnya
4. Hitung semua keluaran di unit tersembunyi zj (j = 1,2,...,p)
z_net j =
1 n jo i i
v
x
=+
∑
v
ji_
1
1
z netje
−+
zj = f (z_net j ) =
5. Hitung semua keluaran jaringan di unit yk (k = 1,....,m)
y_net k =
1 p
ko j k j
j
w
z
=
+
∑
w
_
1
1
+
e
−y netkyk = f (y_net k ) =
6. Hitung factor unit keluaran berdasarkan kesalahan di setiap unit keluaran
yk (k = 1,…,m)
=
7. Hitung suku perubahan bobot Δwkj (yang akan dipakai nanti untuk merubah
bobot wkj) dengan laju percapatan α
(k = 1, ... ,m ; j = 0, ... , p )
8. Hitung kesalahan unit tersembunyi berdasarkan kesalahan di setiap unit
tersembunyi zj (j = 1,…,p)
Factor kesalahan unit tersembunyi :
=
(
) (
' _k tk yk f y netk
δ = −
)
(
tk − yk) (
yk 1− yk)
kj k j
w
α δ
z
Δ
=
1 _ m j k k net wδ
δ
==
∑
k j(
)
_
'
_
j
net f
jz net
j_
(
1
)
Hitung suku perubahan bobot Δ vji
;
Δ =
v
jiα δ
jx
ij = 1, 2, ... , p ; i = 0, 1, ... ,n
9. Hitung semua perubahan bobot
Perubahan bobot garis yang menuju ke unit keluaran
wk j(baru)=wk j(lama)+ Δwk j
(k = 1, 2, ... ,m ; j = 0, 1, ... , p)
Perubahan bobot garis yang menuju ke unit tersembunyi
(j = 1, 2, ... , p; i = 0, 1, ... , n)
(
)
(
)
j i j i
3.1.Analisa Sistem
3.1.1.Analisa Masalah
Alasan dari pembuatan program bantu ini adalah untuk mendapatkan atau
proses penyaringan calon-calon mahasiswa teknik informatika yang cukup
berkualitas. Dengan demikian diharapkan dengan program bantu ini mahasiswa
yang diterima pada program studi teknik informatika dapat memperoleh hasil
indeks prestasi di tahun pertama yang cukup memuaskan. Dengan program bantu
ini saat dilakukan prediksi Indeks Prestasi dengan inputan nilai-nilai test masuk
dan ternyata hasilnya di rasa tidak begitu baik calon mahasiswa tersebut otomatis
akan ditolak masuk program studi teknik informatika dan calon mahasiswa
tersebut dapat mencobanya kembali pada test gelombang berikutnya dengan
pilihan yang sama ataupun berubah pikiran dengan memilih program studi yang
lain. Hal ini dilakukan dengan harapan mengurangi jumlah mahasiswa yang
masuk di program studi teknik informatika ini dengan alasan kesasaran ataupun
diterimanya di sini. Dengan alasan semacam itu terkesan program studi teknik
informatika adalah program studi buangan, oleh karena itu dengan range nilai
yang telah ditetapkan oleh pihak jurusan maka dengan program bantu ini
diharapkan semoga dapat memecahkan masalah-masalah yang sering terjadi di
program studi teknik informatika. Masalah yang sering ditemukan antara lain:
• Nilai indeks prestasi pada tahun pertama yang jelek.
• Dengan indeks prestasi yang jelek maka mahasiswa akan terhambat dalam
menempuh mata kuliah di semester berikutnya karena terbatasnya mata kuliah
yang boleh diambil jika indeks prestasi yang diperoleh jelek
3.1.2.Analisa Kebutuhan
• Program bantu ini dirasa perlu karena banyak mahasiswa di program studi
teknik informatika yang sudah diterima dan di tahun pertama kuliah
memperoleh nilai indeks prestasi yang jelek.
• Program bantu ini dibuat untuk menjaring calon mahasiswa pada program studi
teknik informatika yang benar-benar minat masuk pada program studi ini.
3.1.3.Analisa Data
Dalam sistem bantu ini data yang dibutuhkan di bagi menjadi 3 :
• Data mentah
Data mentah di sini adalah data yang dibutuhkan dalam proses pelatihan,
pengujian, maupun nantinya melakukan prediksi. Sebelum data mentah ini
masuk ke dalam proses-proses tersebut, data mentah yang didapat dilakukan
proses transformasi terlebih dahulu agar range yang di dapat sama seperti
fungsi sigmoid biner. Data mentah ini didapatkan dari pihak BAPSI.
Sedangkan data yang dapat diperoleh dari pihak BAPSI adalah sebagai berikut:
Kamus Mata Tes
Tabel 3.1 Kamus Mata Tes
Kode Mata Tes
11 Penalaran Verbal
12 Kemampuan Numerik
14 Hubungan Ruang
15 Bahasa Inggris
Tabel 3.2 Field Data Bapsi
Field Keterangan
Nomor Nomor Pendaftaran
Namacln Nama Calon
pil1 Pilihan 1
pil2 Pilihan 2
pil3 Pilihan 3
kd_sex
kd_kawin Kode kawin (Belum kawin,nikah,sudah menikah)
kd_warga Warga negara
kd_agama Agama
Alamatpos Alamat kontak lewat pos
Almtcln Alamat calon
Kotmpcln Kota asal calon
Thnsttb Tahun sttb Jumsttb Jum sttb
Jummtsttb Jumlah mata pelajaran sttb
Jumnem Jumlah nem
Jummtnem Jumlah mata pelajaran nem nama_ortu Nama orang tua
pend_ortu Pendidikan orang tua Telepon Telepon
kd_sekolah Sekolah asal
Sedangkan banyaknya record yang dapat diperoleh dari pihak BAPSI adalah
350 record, dengan rincian sebagai berikut :
61 mahasiswa angkatan 2003
56 mahasiswa angkatan 2004
83 mahasiswa angkatan 2005
85 mahasiswa angkatan 2006
65 mahasiswa angkatan 2007
Data transformasi dapat diperoleh dengan cara sebagai berikut:
Jika a adalah data minimum dan b adalah data maksimum, maka proses
transformasi datanya adalah
x’=(0.8(x−a) (b−a))+0.1
Untuk mengembalikan nilai transformasi tersebut agar nilai prediksi indeks
prestasi tersebut tidak lagi berada pada range 0 sampai dengan 1 melainkan
menjadi nilai indeks prestasi yang sesungguhnya dengan range 0-4. Adapun
rumus untuk mengembalikan nilai transformasi tersebut adalah sebagai
berikut:
x=(((x’-0.1)(b-a))/0.8)+a
• Data training
Setelah mendapatkan data mentah dan telah ditransformasi, diambil 70 persen
pertama untuk setiap data per tahunnya dari jumlah data yang sudah lengkap
(terdapat nilai indeks prestasi di awal semester) akan digunakan sebagai data
• Data testing
Sisa data mentah dari data training yang telah ditransformasi dalam hal ini
sebesar 30 persen data berikutnya dari data trainining akan digunakan sebagai
data testing.
Data yang sudah tergolong sebagai masukkan secara berurutan adalah sebagai
berikut :
• Nilai test masuk Penalaran Verbal, yang akan disimpan sebagai variabel X1
• Nilai test masuk Kemampuan Numerik, yang akan disimpan sebagai variabel
X2
• Nilai test masuk Panalaran Mekanik, yang akan disimpan sebagai variabel X3
• Nilai test masuk Hubungan Ruang, yang akan disimpan sebagai variabel X4
• Nilai test masuk Bahasa Inggris, yang akan disimpan sebagai variabel X5
Dalam pengolahan, data yang di dapat dari pihak Bapsi berupa data excel
untuk itu data tersebut di save as terlebih dahulu ke dalam bentuk teks atau .txt. Di
sini tidak menggunakan database karena dirasa akan mengalami kesulitan pada
saat melakukan implementasi. Hal semacam ini dipilih karena bahasa
pemrograman yang akan digunakan pada proses implementasi adalah bahasa
Matlab. Sedangkan untuk bahasa Matlab cukup susah jika akan menerapkan
database di dalamnya. Bahasa pemrograman Matlab lebih cocok jika data yang
ada dibuat dalam bentuk matrik dan kemudian data yang sudah dibentuk dalam
3.2.Perancangan Antar Muka / Desain Output
3.2.1.Tampilan Utama
Menu Utama
Menu Utama
PENERAPAN JARINGAN SYARAF TIRUAN TERHADAP PREDIKSI INDEKS PRESTASI MAHASISWA DI TEKNIK INFORMATIKA
UNIVERSITAS SANATA DHARMA YOGYAKARTA
PELATIHAN
Data Input & Target BROWSE
Jumlah Layar tersembunyi 1
Jumlah Node Layr ke- 1 INPUT
Laju Pemahaan
Kriteria Penghentian
BERSIH PROSES DATA PELATIHAN
KELUAT PENGUJIAN
Batas Error/Targe Error
Max Epoch
HASIL PROSES PELATIHAN
Besar Prosentase Data Pelatihan yang Dikenali
PREDIKSI
Gambar 3.1 Tampilan Menu Utama
Saat program bantu ini jadi nantinya untuk tampilan utamanya semacam di
atas. User dapat langsung mengisi semua data yang dibutuhkan untuk proses
pelatihan sesuai tempat inputan yang sudah di siapkan. Pelatihan dilakukan
berdasarkan dengan data inputan yang mana data tersebut adalah data dari
nilai-nilai test masuk mahasiswa tahun ajaran baru. Sedangkan untuk data output
adalah sebuah target dan yang dimaksud di sini adalah nilai indeks prestasi dari
seorang mahasiswa pada tahun ajaran baru atau pada tahun pertama. Untuk data
input dan data target nantinya akan berupa sebuah matrik dengan aturan
banyaknya data yang ada di kali jumlah inputan atau output. Karena dilakukan
Sedangkan untuk jumlah node pada tiap hidden layer juga disiapkan combo box
yang mana nilai dari combo box jumlah node ini akan menyesuaikan dengan
combo box dari hidden layar, user dipersilahkan mengisi sesuai dari jumlah node
di layer tersembunyi paling dekat dengan inputan. Untuk jumlah node satu sama
yang lain user dapat melakukan dengan menekan input. Ada beberapa hal yang
cukup berpengaruh pada hasil pelatihan nantinya dan diantara adalah
• Jumlah hidden layer yang digunakan beserta jumlah node pada tiap hidden
layer tersebut
• Batas maksimum epoch
• Batas maksimum error
• Nilai laju pemahaman yang hendak digunakan pada pelatihan tersebut
• Nilai-nilai bobot awal dengan bilangan random terkecil baik terhadap layar
tersembunyi maupun layar keluaran
Pada menu utama untuk group box pelatihan ini terdapat dua buah button
yaitu
• Proses Data Pelatihan : button ini digunakan untuk melakukan proses dari
pelatihan sesuai dengan data yang telah diisikan oleh user pada form
utama tersebut. Pada saat user menekan button ini maka output yang akan
dihasilkan dari button ini adalah sebuah grafik yang akan muncul secara
terpisah dari form menu utama ini dan akan muncul besar prosentase pada
group box hasil proses pelatihan yang mana menunjukkan seberapa besar
jaringan dikenalin untuk mendekati max error atau target error yang telah
terdapat tiga buah button yang berada di bawah group box tersebut yaitu
button prediksi, pengujian dan keluar. Adapun fungsi dari buttonnya
masing-masing adalah :
o Button prediksi digunakan untuk menuju ke tampilan form baru dengan
nama menu prediksi yang mana pada menu ini user dapat langsung
melakukan proses prediksi jika hasil dari proses pelatihan yang
dilakukan dirasa sudah cukup memuaskan atau maksimal.
o Button pengujian digunakan untuk menuju ke tampilan form baru yang
namanya adalah menu pelatihan di mana form ini akan melakukan
pengujian dengan data baru selain data pelatihan sebelumnya untuk
melihat seberapa besar data dalam mengenali jaringan yang dibentuk.
o Button keluar digunakan untuk menutup dari aplikasi tersesbut.
• Button bersih digunakan jika user hendak mengubah data yang sudah
3.2.2.Tampilan Menu Pengujian
Menu Pengujian
Menu Pengujian
PENERAPAN JARINGAN SYARAF TIRUAN TERHADAP PREDIKSI INDEKS PRESTASI MAHASISWA DI TEKNIK INFORMATIKA
UNIVERSITAS SANATA DHARMA YOGYAKARTA
PENGUJIAN
Data Input & Target BROWSE
KELUAR PROSES PENGUJIAN DATA
KEMBALI BERSIH
PREDIKSI
Gambar 3.2 Tampilan Menu Pengujian
Pada form yang di beri nama menu pengujian ini akan melakukan proses
pengenalan ulang pada jaringan yang sudah digunakan pada data pelatihan dengan
memasukkan data input dan data target baru di luar data pelatihan. Hal ini
dilakukan dengan tujuan agar mengetahui seberapa besar jaringan dikenali dengan
data baru ini. Output dari proses pengujian data ini akan di bawah sebelah button
proses pengujian data. Saat output yang dihasilkan sudah di rasa cukup mengenali
jaringan tersebut maka user dapat meneruskan dengan melakukan proses prediksi
itu sendiri. Tetapi jika user merasa belum puas dan ingin mengubah jaringan maka
3.2.3.Tampilan Menu Prediksi
Menu Prediksi
Menu Prediksi
PENERAPAN JARINGAN SYARAF TIRUAN TERHADAP PREDIKSI INDEKS PRESTASI MAHASISWA DI TEKNIK INFORMATIKA
UNIVERSITAS SANATA DHARMA YOGYAKARTA
NILAI TEST MASUK
Penilaian Verbal
Kemampuan Numerik
KELUAR PREDIKSI INDEKS PRESTASI
BERSIH Bahasa Inggris Hubungan Ruang Penalaran Mekanik
Gambar 3.3 Tampilan Menu Prediksi
Menu ini adalah menu utama atau tujuan dibuatnya program Bantu ini. Saat
menu prediksi dipilih akan keluar sebuah tampilan yang tidak berbeda dengan
menu-menu sebelumnya yaitu sebuah form. Tetapi yang membedakan adalah
form ini di isi berdasar nilai test masuk yang baru saja didapatkan lain halnya
dengan dua menu sebelumnya dalam bentuk matrik. Pada menu prediksi akan ada
tiga buah button yaitu yang pertama tombol prediksi indeks prestasi berfungsi
untuk menilai apakah calon mahasiswa ini nantinya masuk ke dalam kategori
mahasiswa yang berprestasi, tidak berprestasi atau tidak dikenal oleh jaringan.
Untuk menentukannya akan dibuat sebuah range yang menunjukkan
pembersih dari text field yang telah diisi oleh user, hal ini bertujuan agar user
tidak perlu keluar terlebih dahulu jika hendak melakukan prediksi lagi terhadap
mahasiswa lainnya dan button yang ketiga adalah button keluar yang mempunyai
fungsi untuk keluar dari menu prediksi ini sekaligus keluar dari aplikasi.
3.3.Perancangan Model Jaringan Syaraf Tiruan
Perancangan Model Jaringan Syaraf Tiruan dibagi menjadi 3:
3.3.1.Menetapkan Masukan
Tabel 3.3 Variabel Masukan
Kode data Keterangan Variabel masukkan
PN Nilai test Penalaran Verbal X1
KN Nilai test Kemampuan Numerik X2
PM Nilai test Penalaran Mekanik X3
HR Nilai test Hubungan Ruang X4
BI Nilai test Bahasa Inggris X5
3.3.2.Variabel Keluaran
Output yang akan dihasilkan adalah nilai IP awal semester untuk mahasiswa
baru.
Tabel 3.4 Variabel Keluaran
Kode Keterangan Variabel target
3.3.3.Arsitektur Jaringan
Dalam penulisan skripsi ini arsitektuk Jaringan Syaraf Tiruan yang akan
digunakan adalah 5-1 di mana artinya adalah
• Mempunyai 5 neuron untuk layer input
Neuron di sini menyatakan himpunan unit-unit yang dihubungkan dengan
layer tersembunyi dengan jalur koneksi di mana jalur-jalur tersebut memiliki
bobot yang berbeda-beda.
• Mempunyai 1 neuron untuk layer output
Neuron di sini menyatakan unit yang menjadi target dari sebuah jaringan.
Sedangkan untuk banyaknya layer tersembunyi dan node pada layer
tersembunyi tersebut dilakukan cara coba-coba. Adapun gambarannya
arsitekturnya adalah sebagai berikut :
X1
TARGET
X5 X4 X3 X2
Zj Z1
.
.
.
.
PNKN
PM
HR
BI
Y 1
1
3.3.4.Membangun Jaringan
Jaringan syaraf tiruan dengan menggunakan Backpropagation
diinisialisasikan dengan perintah newff. Sintaknya:
net=newff(PR,[S1 S2 ...SN], {TF1 TF2…TFN},BTF,BLF,PF)
Keterangan:
• PR adalah metriks berukuran RX2 yang berisi nilai maksimum dan
minimum deri elemen-elemen masukan
• SN adalah jumlah neuron dari layer ke-n
• TFN adalah fungsi aktivasi transfer dari layer ke-n (default:tansig.sigmoid
bipolar)
• BTF adalah fungsi training jaringan backpropagation (default:traingdx)
• BLF adalah fungsi perubahan bobot/bias (default:learngdm)
• PF adalah fungsi performa/kinerja(default:mse)
3.3.5.Bagan Alir Pelatihan/Training
S t a r t
D a t a ( s u d a h d i t r a n s f o r m a s i ) y a n g a k a n d i g u n a k a n t r a i n i n g
T e n t u k a n B o b o t a w a l d e n g a n b i l r a n d o m , t e n t u k a n t a r g e t e r r o r , t e n t u k a n m a x e p o c h , t e n t u k a n l a j u p e m a h a m a n (a)
H i t u n g k e l u a r a n u n i t t e r s e m b u n y i
H i t u n g u n i t yk d e n g a n m e n g g u n a k a n z j s e b a g a i i n p u t
H i t u n g f a k t o r k e s a l a h a n d a r i u n i t k e l u a r a n
H i t u n g s u k u p e r u b a h a n b o b o t
H i t u n g f a k t o r k e s a l a h a n u n i t t e r s e m b u n y i b e r d a s a r k a n
k e s a l a h a n d i s e t i a p u n i t t e r s e m b u n y i
H i t u n g s e m u a p e r u b a h a n b o b o t
E p o c h < = M a x E p o c h
E p o c h + = 1
H it u n g b e s a r e r r o r
E r r o r < t a r g e t E r r o r
S im p a n b o b o t a k h i r
Y
Y
T
T
E N D
Penjelasan:
Awalnya data real yang didapat dari pihak bapsi di save terlebih dahulu ke
dalam bentuk teks atau .txt, dan data tersebut diambil 70% dari data tsetiap
tahunnya. Kemudian pada program matlab data tersebut di lakukan proses
transformasi yang mana proses ini diakukan dengan tujuan memperkecil nilai data
yang berada pada range 0 sampai dengan 1 dan memudahkan jaringan dalam hal
mengenali pola data. Setelah diperoleh data dengan nilai kecil maka akan
dibentuk jaringan saat jaringan sudah terbentuk program akan menentukan bobot
random dengan nilai kecil dan melengkapi dengan parameter-parameter yang
dibutuhkan untuk proses pelatihan antara lain learing rate, kriteria penghentian.
Kemudian dilakukan perhitungan output dari unit tiap lapisan tersembunyi yang
ada. Jika masih terdpat lapisan tersembunyi berikutnya dilakukan hal yang sama
dengan output lapisan tersembunyi yang pertama sebagai inputnya. Tetapi jika
sudah tidak terdapat lapisan tersembunyi lagi maka hitung unit Yk dengan Zj atau
output lapisan tersembunyi yang terakhir sebagai input. Lalu hitung faktor
kesalahan atau error dari unit keluaran. Setelah diketahui error dari unit keluaran
maka dilakukan perhitungan suku perubahan bobot. Sealain menghitung error
dari unit keluaran juga dilakukan perhitungan faktor kesalahan atau error di setiap
unit di lapisan tersembunyi. Seperti pada unit keluaran juga dilakukan perhitungan
unutk semua perubahan bobot. Setelah selesai pada perhitungan perubahan bobot
maka akan dilakukan perulangan yang mana jika epoch lebih kecih sama dengan
maksimum epoch yang diperbolehkan maka epoch akan bertambah satu dan
galat/target error yang diberikan maka bobot tersebut akan disimpan untuk
digunakan pada proses pengujian atau proses prediksi nantinya.
3.3.6.Bagan Alir Testing
START
Load tabel hasil belajar
Input data testing
Algoritma BP
Output
Ulang?
END T
Y
Penjelasan:
Pada flowchart proses testing di atas dapat dilihat bahwa untuk awalnya
proses akan mengambil jaringan beserta bobot yang didapatkan dari proses
training atau proses pembelajaran. Setelah proses pengambilan selesai maka akan
di masukkan data testing itu sendiri yang berupa teks kemudian data tersebut
diolah menggunakan jaringan yang sudah ada dan akan dihasilkan output jaringan.
Jika data testing masih ada maka proses akan diulangi sampai data terakhir pada
data testing tersebut.
3.3.7.Pelatihan Jaringan
Pada awalnya jaringan diatur secara acak. Kemudian data dimasukkan ke
jaringan syaraf tiruan untuk dilakukan proses pembelajaran atau pelatihan
jaringan. Ketika data dimasukkan maka jaringan syaraf akan belajar dengan cara
mengubah parameter-parameter sehingga dapat mendekati dengan pola masukkan.
Setelah semua data untuk proses pelatihan sudah dimasukkan jaringan akan
mengenal dan mengidentifikasi pola data tersebut sehingga pola pelatihan yang
terbentuk nantinya dapat digunakan untuk proses prediksi atau peramalan. Output
yang dihasilkan oleh jaringan akan dibandingkan dengan target data yang
Bab ini adalah bab yang membahas tentang pemrograman dan analisa dari
program tersebut dan pembahasan.
Data yang di dapat dari pihak Bapsi adalah data dalam bentuk exel.
Sebelum data tersebut diolah maka data di save as terlebuh dahulu ke dalam
bentuk teks atau dengan ekstensi .txt dan di sini data yang disimpan dalam bentuk
teks ini harus di beri nama data hal ini karena sudah di default dalam program.
Handles gunanya untuk gui, memanggil komponen-komponen pada gui itu
sendiri. Global gunanya untuk membuat variabel sesuai kebutuhan pada function
tersebut.
4.1. Implementasi Program
Penelitian ini akan membandingkan hasil antara output yang dihasilkan
oleh jaringan syaraf tiruan menggunakan metode backpropagation dengan target
yang sebenarnya. Perancangan jaringan yang sudah dibentuk akan
diimplementasikan dalam bahasa pemrograman Matlab. Dibawah ini akan
dijelaskan beberapa listing program yang terkai dengan pelatihan,pengujian dan
prediksi indeks prestasi menggunakan jaringan syaraf tiruan dengan metode
backpropagation.
Saat user hendak memasukkan data yang akan diolah, terlebih dahulu user
akan diperikan sebuah peringatan bahwa data yang diolah harus berupa teks
dengan ekstensi txt. Untuk listing program pesan tersebut adalah sebagai berikut:
msgbox('Data yang dimasukkan berupa data text','Perhatian', 'warn');
uiwait;
potongan listing program diatas akan memberikan action saat user menekan
button browse.
Setelah user mengerti dan menjalankan peringatan tersebut yaitu
memasukkan data berupa teks maka data tersebut akan di olah. Sedangkan untuk
pengolahan data tersebut akan dilakukan dengan listing program berikut:
global input_training
[input,path]=uigetfile('*.txt','Pilih file text'); if isequal(input,0)
msgbox('Isi dahulu data input','Perhatian','warn') return;
end
set(handles.tr_input,'String',input); set(handles.tr_input,'Userdata',input); %PROSES IMPORT DATA dari data bentuk teks rawData1 = importdata(input);
[unused,name] = fileparts(input); newData1.(genvarname(name)) = rawData1;
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1); for i = 1:length(vars)
assignin('base', vars{i}, newData1.(vars{i})); end
%AKHIR PROSES IMPORT load(input);
input_training=load(input);
Keterangan :
• Pada fungsi browse ini pertama kali dibuat sebuah pendeklarasian variable
terlebih dahulu dengan variabel global yaitu input_training.
• Terdapat perintah uigetfile dimana perintah ini digunakan untuk membaca file
dengan format yang telah ditentukan dan dalam hal ini dalam bentuk text.
• Isequal di sini untuk mengecek persamaan sebuah array apakah input yang
user belum melakukan proses browse dengan benar maka akan ada peringatan
yang dimunculkan dalam sebuah message box dengan pesan ”Isi dahulu data
input”.
• Tetapi jika user telah melakukan proses browse dengan benar maka data yang
telah di ambil melalui proses browse akan langsung di load.
• Untuk listing yang berwarna merah adalah listing yang berguna untuk
mengimport data dari data dengan ekstensi .txt.
Untuk proses penentuan berapa banyak jumlah layer tersembunyi yang
akan digunakan oleh user pada proses training atau pengujian ini maka dibuat
dengan cara menyediakan sebuah popupmenu dengan nilai dari 1 sampai 40. User
dapat memilih sesuai kehendak mereka, jika user telah memilih jumlah layer
tersembunyi sebanyak 1 layer atau 2 layer maka pada popupmenu untuk node tiap
layer akan menyesuaikan jumlahnya dengan jumlah popupmenu yang telah dipilih
pada layer tersembunyi. Maka program yang digunakan untuk melakukan perintah
tersebuat adalah sebagai berikut :
function pop_hidden_Callback(hObject, eventdata, handles) handles.p=get(handles.pop_hidden,'Value');
if handles.p==1
set(handles.pop_node,'String','1'); elseif handles.p==2
set(handles.pop_node,'String','1|2'); end
Keterangan :
• Dibuat sebuah variabel baru dengan nama p yang mana mempunyai fungsi
untuk mengambil nilai dari pop_hidden yaitu banyaknya user memilih jumlah
• Lalu dilakukan statement kontrol dengan menggunakan if. Yang mana nilai
dari varibel p akan sama dengan nilai pada popupmenu untuk node.
Untuk tools edit text yang ada pada sebelah pop_node digunakan untuk
mengisi berapa jumlah node yang akan digunakan untuk setiap layernya. Untuk
setiap jumlah node yang di masukkan di beri batasan yaitu tiap layernya
maksimum 40 node. Program yang digunakan untuk perintah tersebut adalah
sebagai berikut :
function tr_node_Callback(hObject, eventdata, handles) ns=get(handles.tr_node,'String');
n=str2num(ns); if n>=1 & n<41
ns=num2str(n);
set(handles.tr_node,'String',ns); else
msgbox('Isi tiap layer dengan jumlah node maksimum 40); set(handles.tr_node,'String','');
end
Keterangan :
• Dibuat variabel baru dengan nama ns yang mana variabel ini digunakan untuk
mengambil nilai dari tr_node yang dimasukkan user dan berupa string.
• Dibuat pula variabel baru dengan nama n yang mana variabel ini untuk
menyimpan nilai dari variabel ns yang dibuat dari tipe string menjadi tipe
numerik.
• Kemudian dilakukan statemen kontrol menggunakan if. Yaitu jika n diantara
nilai 1 sampai dengan 40 maka nilai diterima tetapi jka nilai dari n tidak sesuai
syarat maka akan muncul message box yang berisi peringatan bahwa jumlah
Jika nilai masukkan dari node sudah tidak ada peringatan maka user dapat
memisahkan nilai tiap node untuk tiap layernya dengan menekan tombol input
lalu dapat mengisi banyaknya node untuk layer berikutnya juka user memilih
banyaknya layer tersembunyi lebih dari satu. Program yang digunkan pada button
input tersebut adalah sebagai berikut :
function bt_input_Callback(hObject, eventdata, handles) global jum_node_pertama
global jum_node_kedua B=[];
n=get(handles.pop_node,'Value'); if n==1
B(1,1)=str2num(get(handles.tr_node,'String')); jum_node_pertama=B(1,1);
elseif n==2
B(1,2)=str2num(get(handles.tr_node,'String')); jum_node_kedua=B(1,2);
end
set(handles.tr_node,'String','');
Keterangan :
• Dideklarasikan beberapa variabel yang nantinya akan digunakan untuk
menampung sebuah array sebagai nilai banyaknya node masukkan dari user.
Variabel global tersebut antara lain adalah jum_node_pertama dan
jum_node_kedua.
• Dideklarsikan juga sebuah array kosong dengan nama array B.
• Dibuat juga sebuah variabel baru dengan nama n yang berguna untuk
mengambil nilai dari pop_node.
• Dilakukan statemen kontrol dengan if, yaitu jika nilai n atau pop_node adalah
1 atau 2 maka akan dibentuk atau diletakkan pada array B dengan susunan
berupa nilai yang telah dirubah ke dalam bentuk numerik dari tr_node yaitu
jumlah node pada layer ke- yang diisi oleh user.
Untuk edit text pada laju pemahaman yang diberi nama tr_laju ini user
hanya dapat mengisi dengan nilai 1 ke bawah. Hal ini dilakukan karena laju
pemahaman diusahakan untuk di isi dengan nilai yang pas sehingga proses
pelatihan bisa menghasilkan output yang maksimal. Semakin besar nilai laju
pemahaman semakin kurang akurat hasil dari proses pelatihan, begitu juga
sebaliknya jika terlalu kecil maka proses pelatihan akan semakin lama. Untuk itu
diharapkan nilai dari laju pamahaman ini diperkirakan yang sesuai. Program untuk
memberi batasan ini adalah sebagai berikut :
function tr_laju_Callback(hObject, eventdata, handles) laju=get(handles.tr_laju,'String');
n=str2num(laju);
% nilai batas laju pemahaman n <=1 if n<=1
laju=num2str(n);
set(handles.tr_laju,'String',laju); else
msgbox('Isi nilai laju pemahaman di bawah 1'); set(handles.tr_laju,'String','');
end
Keterangan :
• Dibuat terlebih dahulu sebuah variable dengan nama laju, yang mana variable
ini berguna untuk mengambil nilai tari tr_laju sebagai nilai laju pemahaman
yang telah di isi oleh user.
• Kemudian dibuat sebuah variable baru lagi dengan nama n, yang mana
variable ini berguna untuk mengubah nilai laju dari string menjadi tipe
numeric sehingga nilai n nantinya dapat digunakan untuk melakukan statemen
• Statemen kontrol if, di mana jika nilai n lebih kecil dari 1 maka nilai tersebut
akan tertulis pada tr_laju tetapi jika nilai n tidak memenuhi maka akan muncul
message box atau pesan yang mengatakan bahwa user harus mengisi nilai laju
pemahaman dengan nilai di bawah 1.
Untuk kriteria penghentian dari proses pelatihan ini terdapat dua macam
yaitu batas error atau target error yang dikehendaki dan maksimal epoch dalam
proses pelatihan. Pada batas error dan target error ini dimaksudkan bahwa proses
pelatihan akan di hentikan jika error yang dihasilkan sudah berada di bawah error
dan target error ini. Program dari penghentian proses pelatihan untuk kriteria yang
pertama ini adalah sebagai berikut :
function tr_error_Callback(hObject, eventdata, handles) err=get(handles.tr_error,'String');
n=str2num(err);
% nilai batas epoch n antara 0.1 dan 0.001 if n>=0.001 & n<=0.1
err=num2str(n);
set(handles.tr_error,'String',err); else
msgbox('Isi nilai error dalam range 0.001 sampai 0.1'); set(handles.tr_error,'String','');
end
Keterangan :
• Dibuat variabel baru dengan nama err yang mana varibel ini berguna untuk
mengambil nilai dari tr_error.
• Varibel baru berikutnya yang terdapat pada fungsi ini adalah varibel n yang
mana varibel ini nantinya berguna untuk melakukan statemen kontrol ini tetapi
sebelum digunakan untuk melakukan perbandingan varibel ini diubah terlebih
• Statemen kontrol if di sini hampir sama gunanya seperti statemen if pada
fungsi-fungsi sebelumnya. Yaitu jika nilai n berada diantara 0.1 dan 0.001
maka nilai tersebut akan muncul dan diletakkan pada tr_error, tetapi jika
kondisi tersebut tidak terpenuhi maka akan muncul pesan error yang meminta
user agar mengisi nilai target error ini dengan nilai antar 0.1 sampai 0.001.
Sedangkan program untuk kriteria penghentian yang kedua adalah sebagai
berikut:
function tr_epoch_Callback(hObject, eventdata, handles) ep=get(handles.tr_epoch,'String');
n=str2double(ep); if n>=1 & n<=8000 ep=num2str(n);
set(handles.tr_epoch,'String',ep); else
msgbox('Isi nilai max epoch dengan nilai paling besar 8000');
set(handles.tr_epoch,'String',''); end
Keterangan :
• Dibuat variabel baru dengan nama ep yang mana varibel ini berguna untuk
mengambil nilai dari tr_epoch.
• Varibel baru berikutnya yang terdapat pada fungsi ini adalah varibel n yang
mana varibel ini nantinya berguna untuk melakukan statemen kontrol ini tetapi
sebelum digunakan untuk melakukan perbandingan varibel ini diubah terlebih
dahulu dari string menjadi double.
• Statemen kontrol if di sini hampir sama gunanya seperti statemen if pada
fungsi-fungsi sebelumnya. Yaitu jika nilai n berada diantara 1 dan 8000 maka
tersebut tidak terpenuhi maka akan muncul pesan error yang meminta user
agar mengisi nilai target error ini dengan nilai antar 1 sampai 8000.
Saat user telah mengisi semua data-data yang diperlukan pada proses
pelatihan ini pada panel Pelatihan itu sendiri tanpa ada pesan error yang
ditampilkan maka pihak user dapat langsung melakukan proses pelatihan itu
sendiri dengan menekan button proses data pelatihan yang telah disediakan.
Program untuk tombol proses tersebut adalah : pertama-tama melakukan
pendeklarasian variabel global yang terkait dalam pemrosesan dengan cara
sebagai berikut ini:
function btn_proses_training_Callback(hObject, eventdata, handles)
global input_training global jum_training global jum_node_pertama global jum_node_kedua global laju_pemahaman global galat
global max_epoch global neet
Setelah dirasa cukup dalam mendeklarasikan variable yang akan dibutuhkan maka
pada function ini akan melakukan perhitungan tentang berapa banyak data yang
akan digunakan untuk proses pelatihan ini dan selanjutnya menentukan input dan
targetnya. Adapun listingnya adalah sebagai berikut:
jum_training=round((70/100)*length(input_training)); input=input_training(1:jum_training,1:5)';
target=input_training(1:jum_training,6)'; I=(0.8*(input-0)/(10-0))+0.1;
Keterangan:
• Dibuat variable baru yang hanya digunakan pada function ini saja yaitu
jum_training yang berfungsi mengambil banyaknya data sebesar 70 persen
dari data yang ada.
• Untuk data input dilakukan katentuan diambil dari baris 1 sampai baris
sebanyak jum_training dengan kolom 1 sampai kolom ke lima.
• Demikian juga untuk data target dilakukan ketentuan yang sama seperti data
untuk inputnya yaitu diambil dari baris 1 sampai baris sebanyak jum_training
dengan kolom ke enam.
• Kemudian input dan target tersebut di tangkap pada variable baru yaitu I untuk
input dan T untuk target tetapi pada variable ini data sudah di transformasi
terlebih dahulu sehingga nilai pada range 0-1.
Setelah selesai melakukan pengaturan data untuk input dan data untuk targetnya,
maka dibuatlah dua buah array kosong yang kegunaannya dapat dilihat pada
listing berikut:
A=[]; B=[];
x=get(handles.pop_node,'Value'); if x==1
B(1,1)=jum_node_pertama; elseif x==2
B(1,1)=jum_node_pertama; B(1,2)=jum_node_kedua; end
u=get(handles.pop_hidden,'Value'); for n=1:u
A(1,n)=B(1,n); end
Keterangan :
• Ada variable baru dengan nama x yang digunakan untuk mengambil nilai pada
pop_node.
• Dibuat statement control yaitu jika nilai x==1 maka array B pada baris 1
kolom 1 akan di isi data yang diambil dari masukkan button input yatiu
jum_node_pertama. Demikian pula juka nilai x==2 maka dilakukan hal yang
sama jika nilai x==1 hanya saja akan ada data baru yang akan diletakkan pada
baris 1 kolom 2 yang diambil dari masukkan button input yatiu
jum_node_kedua.
• Ada variable baru dengan nama u yang digunakan untuk mengambil nilai pada
pop_ hidden.
• Lalu dibuat proses perulangan dari nilai awal adalah 1 sampai nilai u maka
array A akan di isi nilai sama seperti pada array B. Maka saat proses
perulangan itu diakhiri nilai array A pada kolom terakhir diberi nilai 1.
Setelah mengambil nilai banyaknya node yang dikehendaki pada tiap layer
tersembunyi kemudian dibuatlah sebuah bentuk jaringan. Adapun potongan listing
untuk pembentukkan jaringan adalah sebagai berikut ini:
if x==1
handles.net=newff(minmax(I),[A],{'logsig' 'logsig'},'traingdx');
elseif x==2
handles.net=newff(minmax(I),[A],{'logsig' 'logsig' 'logsig'},'traingdx');
Keterangan:
• Jika popnode==1 maka fungsi aktivasi hanya dua, karena fungsi aktivasi
hanya akan digunakan dari inputan ke layar tersembunyi dan terakhir dari
layer tersebunyi ke target.
• Jika popnode==2 maka fungsi aktivasi ada tiga, karena fungsi aktivasi yang
akan digunakan adalah dari inputan ke layar tersembunyi1, dari layer
tersembunyi1 ke layer tersembunyi2 dan terakhir dari layer tersebunyi2 ke
target.
• Newff adalah fungsi yang disediakan oleh matlab yang digunakan untuk
membentuk suatu jaringan dan fungsi aktivasinya adalah logsig dan di akhir di
beri fungsi pelatihan jaringan dengan nilai default yaitu traingdx.
Saat jaringan sudah terbentuk maka ditentukan bobot yang akan digunakan untuk
proses perhitungan nantinya dengan nilai random kecil. Untuk mengatur bobot
maka listingnya adalah sebagai berikut ini:
if n==1
BobotAwal_Input = handles.net.IW{1,1} BobotAwal_Bias_Input = handles.net.b{1,1} BobotAwal_Lapisan1 = handles.net.LW{2,1} BobotAwal_Bias_Lapisan1 = handles.net.b{2,1} elseif n==2
BobotAwal_Input = handles.net.IW{1,1} BobotAwal_Bias_Input = handles.net.b{1,1} BobotAwal_Lapisan1 = handles.net.LW{2,1} BobotAwal_Bias_Lapisan1 = handles.net.b{2,1} BobotAwal_Lapisan2 = handles.net.LW{3,2} BobotAwal_Bias_Lapisan2 = handles.net.b{3,1} end
Keterangan:
• Dalam membuat inisialisasi bobot dilkukan dengan menggunakan perintah
• Untuk net.IW{j,i}digunakan sebagai variable untuk menyimpan bobot dari
unit masukkan layer I ke unit tersembunyi (atau unit keluaran) layer j. tetapi
karena pada metode Backpropagation, unit masukkan hanya terhubung
dengan layer tersembunyi paling bawah maka bobotnya disimpan pada
net.IW{1,1}
• Untuk net.LW{k,j} digunakan untuk menyimpan bobot dari unit di layer
tersembunyu ke-j ke unit di layer tersembunyi ke-k.
• Sedangkan net.b digunakan untuk menyimpan bobot dari bias tiap layer.
Kemudian mengambil nilai laju pemahaman,mengambil nilai dari kriteria
penghentian yang dipilih. Untuk penggalan listingnya dapat dilihat sebagai
berikut:
% menentukan max learing rate/laju pemahaman lj=get(handles.tr_laju,'String');
laju_pemahaman=str2num(lj);
handles.net.trainparam.lr = laju_pemahaman; nil=get(handles.rd_error,'Value');
if nil==1
% menentukan max goal
er=get(handles.tr_error,'String'); galat=str2num(er);
handles.net.trainparam.goal = galat; handles.net.trainparam.epochs = 5000; else
% menentukan jumlah epoch max e=get(handles.tr_epoch,'String'); max_epoch=str2num(e);
handles.net.trainparam.epochs = max_epoch; handles.net.trainparam.goal = 0.01; end
% digunakan untuk menampilkan frekuensi perubahan error handles.net.trainparam.show = 200;
Setelah semua ditentukan dari mulai pembentukkan jaringan, penentuan bobot
Maka akan dilakukan proses pembelajaran dari jaringan. Adapun listingnya
adalah sebagai berikut:
% digunakan untuk melakukan proses pelatihan handles.net = train(handles.net,I,T);
Selesai melakukan proses pembelajaran jariangan dapat dilihat nilai-nilai bobot
akhirnya dengan listing sebagai berikut ini:
%Melihat bobot akhir if n==1
BobotAkhir_Input = handles.net.IW{1,1}; BobotAkhir_Bias_Input = handles.net.b{1,1}; BobotAkhir_Lapisan1 = handles.net.LW{2,1}; BobotAkhir_Bias_Lapisan1 = handles.net.b{2,1}; elseif n==2
BobotAkhir_Input = handles.net.IW{1,1} BobotAkhir_Bias_Input = handles.net.b{1,1} BobotAkhir_Lapisan1 = handles.net.LW{2,1} BobotAkhir_Bias_Lapisan1 = handles.net.b{2,1} BobotAkhir_Lapisan2 = handles.net.LW{3,2} BobotAkhir_Bias_Lapisan2 = handles.net.b{3,1} end
Untuk langkah selanjutnya dilakukan simulasi yang mana hal ini dilakukan untuk
mengetahui output dari jaringan.
[a,Pf,Af,e,perf] = sim(handles.net,I,[],[],T);
Keterangan:
• Untuk parameter masukkannya:
o handles.net : nama jaringan dalam perintah newff
o I : vector masukkan jaringan/input jaringan
o T : vector target jaringan.
• Untuk parameter hasilnya adalah:
o a : keluaran/output jaringan
o Af : kondisi akhir delay layer
o e : error jaringan = T-a
o perf : unjuk kerja dari jaringan/mse
Sebenarnya sampai dengan melakukan simulasi tersebut sudah cukup tapi dengan
hanya melihat grafik dikwatirkan nantinya user tidak terlalu memahani maka
dibuat hasil dalam bentuk prosesntase. Untuk listingnya dapat dilihat sebagai
berikut:
i=e.*e %nilai mse yang di dapat dari nilai kuadrat e kinerja=perf
hasil=0;
for n=1:length(i) if i(1,n)<=kinerja hasil=hasil+1; end
end
hasil=(hasil/length(i))*100; hasil=round(hasil)
set(handles.prosentase_pelatihan,'String',hasil);
Keterangan:
• Di buat variable baru yaitu i yang berguna untuk menghitung mse error tiap
error outputnya. Yaitu dengan cara error dikuadratkan. Hal ini harus dilakukan
karena perbandingan harus dilakukan dengan mse juga.
• Jika nilai i berada dibawah nilai dari kinerja/perf maka akan dilakukan
perhitungan jumlah. Untuk itu akan dihitung dalam bentuk prosentase dengan
cara hasil dari jumlah perhitungan dibagi banyaknya data I dan di kali 100%.
Saat user merasa kurang puas dengan hasil yang diperoleh dari proses
training tersebut maka user dapat melakukan proses ulang dengan nilai inputan
baru dengan melakukan pembersihan text field terlebih dahulu, adapun sintaks
function btn_reset1_Callback(hObject, eventdata, handles) set(handles.tr_input,'string','');
set(handles.pop_hidden,'value',1); set(handles.pop_node,'value',1); set(handles.tr_node,'string',''); set(handles.tr_node,'Enable','on'); set(handles.tr_laju,'string',''); set(handles.tr_laju,'Enable','on'); set(handles.tr_error,'string',''); set(handles.tr_epoch,'string',''); set(handles.rd_error,'Value',0); set(handles.rd_epoch,'Value',0);
set(handles.tr_epoch,'Visible','off'); set(handles.tr_error,'Visible','off');
set(handles.prosentase_pelatihan,'string',''); clear all;
Saat user ingin keluar dari menu aplikasi ini dapat langsung menekan
button keluar, yang mana listing yang digunakan adalah sebagai berikut:
function btn_exit1_Callback(hObject, eventdata, handles) exit = questdlg('Keluar dari Program?',...
'Keluar','Yes','No','Yes'); if strcmp(exit,'Yes')
delete(handles.menu_utama) end
clear all;
Keterangan:
Questdlg merupakan sebuah fungsi matlab yang berfungsi memanggil
kotak dialog modal yang berisi dua pushbutton, yaitu ya dan tidak. Jika kita
mengklik salah satu pushbutton, maka akan dibandingkan dengan fungsi strcmp().
Di sana terdapat syntax delete(handles.menu_utama) artinya saat user memilih
Yes maka menu_utama ini akan keluar.
Lain halnya jika user merasa cukup puas dengan hasil dari perolehan
pelatihan, maka user dapat pelakukan proses pengujian dengan data lain selain
hasil dari pelatihan ini sudah cukup membantu memberi gambaran bahwa jaringan
sudah dapat mengenali pola.
Syntaks browse yang digunakan sama seperti syntaks browse pada
menu_utama. Setelah user memasukkan data user dapat langsung menekan
tombol Pengujian Data untuk melakukan proses pengujian itu sendiri. Adapun
listing untuk proses pengujian adalah sebagai berikut:
jum_testing=(30/100)*length(input_testing); nil_awal=jum_training+1;
% data testing
input=input_testing(nil_awal:length(input_testing),1:5)'; target=input_testing(nil_awal:length(input_testing),6)'; Q=(0.8*(input-0)/(10-0))+0.1;
TQ=(0.8*(target-0)/(4-0))+0.1;
inputan=get(handles.tes_input,'String'); in=str2num(inputan);
[b,Pf,Af,e,perf] = sim(neet,Q,[],[],TQ); i=e.*e
kinerja=perf hasil1=0;
for n=1:length(i) if i(1,n)<=kinerja hasil1=hasil1+1; end
end
hasil1=(hasil1/length(i))*100; hasil1=round(hasil1)
set(handles.hasil_pengujian,'String',hasil1);
Keterangan:
• Seperti pada function- function sebelumnya dibuat terlebih dahulu beberapa
pendlekarasian variabel yang akan digunakan pada function
btn_proses_pengujian.
• Listing untuk proses testing ini pada dasarnya hampir sama seperti proses
o Data yang digunakan sebesar 30% dari jumlah data yang ada dan selain
data yang telah digunakan untuk proses training/pelatihan.
o Untuk melakukan simulasi atau melihat output jaringannya digunakan
dengan neet yang mana neet di sini adalah mengambil hasil jaringan dari
proses pelatihan sebelumnya.
Sejauh itu yang lain memiliki dasar yang sama seperti proses pelatihan.
Jika user telah marasa puas saat melakukan proses pelatihan pada menu
utama dan user merasa tidak perlu melakukan proses pengujian maka pada
tampilan menu utama user dapat langsung menekan button prediksi.
Untuk user dapat melakukan prediksi indeks prestasi dengan cara
memasukkan nilai-nilai test masuk, yang terdiri dari 5 macam test masuk. Nilai
test masuk ini dapat di isi dari range 0 sampai dengan 10. Setelah user mengisi
semua nilai test masuk maka user dapat melihat hasil prediksi indeks prestasinya
dengan menekan button prediksi indeks prestasi. Adapun listing yang ada di
dalam proses prediksi indeks prestasi adalah pertama-tama melakukan
pendeklarasian beberapa variabel sesuai kebutuhan,untuk cara pendeklarasian
sama seperti sebelum-sebelumnya. Dapat di lihat sebagai berikut ini:
global neet
Dari pendeklarasian variabel terlihat hanya satu saja karena pada proses prediksi
ini hanya akan mengambil nilai jaringan dari proses sebelumnya.
Kemudian dilakukan pengambilan data dari masukkan user yang telah dilakukan
melalui tampilan menu prediksi pada text field-text field yang telah di sediakan.
Untuk listing pengambilannya adalah sebagai berikut ini:
kn=get(handles.pr_output_numerik,'string'); pm=get(handles.pr_output_mekanik,'string'); hr=get(handles.pr_output_ruang,'string'); bi=get(handles.pr_output_inggris,'string'); %ubah string menjadi numerik
in1=str2num(pv); in2=str2num(kn); in3=str2num(pm); in4=str2num(hr); in5=str2num(bi);
%ubah ke dalam bentuk matriks inw=[in1;in2;in3;in4;in5]; inew=(0.8*(inw-0)/(10-0))+0.1;
Keterangan:
• Untuk proses pengambilan data dari text field dilakukan dengan menggunakan
fungsi get. Fungsi ini dapat dipadukan dengan fungsi koversi string ke
numeric atau sebaliknya, sesuai kebutuhan pengolahan datanya. Untuk syntaks
dasarnya adalah sbb :
X = get([NamaObjek] , [Property]);
• Karena data yang di ambil berupa string maka data di ubah dulu ke dalam
bentuk numerik dengan tujuan data yang diolah memang harus nuerik.
• Setelah semua data menjadi bentuk numerik kemudia dibuat dalam bentuk
matrik dengan ukuran 6x1, dan terakhir data dalam bentuk matrik tersebut
dilakukan proses transformasi.
Setelah data yang dimasukkan user untuk diketahui proses prediksinya sudah
melalui tahap-tahap sehingga data masukkan sudah dapat diproses uuntuk tahap
berikutnya. Unutk tahap selanjutnya adalah melakukan simulasi untuk mengetahui
output dari prediksi indeks prestasi. Adapun potongan listing untuk simulasinya
adalah sebagai berikut:
%simulasikan