BAB 3 PERANCANGAN SISTEM
Bab ini menguraikan analisa penelitian terhadap metode Backpropagation yang diimplementasikan sebagai model estimasi harga saham. Analisis yang dilakukan adalah menguraikan penjelasan langkah mulai dari pencarian variabel input dan output yang berbeda sampai pada pencarian arsitektur jaringan yang optimal dalam melakukan pembelajaran ANN, sehingga jaringan akan memiliki kemampuan belajar dengan tingkat akurasi hasil estimasi yang akurat.
3.1 Model Umum ANN pada Estimasi Harga Saham Pada penelitian di Century Tower pada PT Mahadana Asta Berjangka, didapatkan bahwa harga saham pada tiap detik selalu berubah-ubah karena faktor-faktor yang mempengaruhinya. Namun dari penelitian para pialang saham, terdapat kejadian yang bisa mirip dengan sebelumnya atau dengan kata lain terdapat pola-pola dalam pembentukan harga saham. Penelitian ini menggunakan pola harian sebagai input / masukan pada ANN dalam tahap pelatihan dan tahap pengujian. Terkait dari data histori harga saham yang terdahulu, faktor-faktor yang menentukan ketepatan suatu peramalan dan pengaruhnya terhadap pergerakan harga saham cukup banyak, yaitu keadaan stabilitas ekonomi, stabilitas politik, jumlah pembeli dan penjual. Penelitian ini mengambil faktor histori data terdahulu untuk dijadikan parameter / variable dalam tahap pelatihan ANN karena faktor tersebut bersifat kuantitatif dan lebih mudah diakses atau didapat.
37
Pada umumnya model ANN untuk estimasi harga saham ditunjukan pada gambar 3.1. Perbedaan dalam model-model yang lain ditentukan dari pemilihan data histori selisih harga saham antara hari pertama dengan hari berikutnya, dan jumlah hidden layer, ada yang menggunakan 1 hidden layer, 2 hidden layer, 3 hidden layer, gambar 3.1 merupakan contoh model yang menggunakan 1 hidden layer. Data histori yang diambil menjadi percobaan yaitu selisih opening, selisih closing, selisih high, selisih low, selisih volume. Biasanya output merupakan harga saham yang diperkirakan di masa depan, dan setiap node merujuk ke harga saham yang diestimasikan pada tiap harinya. Dalam penelitian ini, kami diminta oleh pihak perusahaan untuk mencoba meramal harga high dan low pada index saham hang Seng sehingga kami menjadikan node output sebagai penghasil nilai selisih high dan low.
Gambar 3.1 Model Umum ANN Untuk Estimasi Harga Saham
38
3.2 Klasifikasi Inputan / Masukan Berdasarkan pengamatan dan wawancara dengan beberapa staf maupun karyawan di Century Tower, Rasuna Sahid Kuningan, pada sIstem estimasi harga saham di P.T Mahadana Asta Berjangka, menggunakan metode analisa teknikal secara time series. Metode ini menggunakan perhitungan dengan variabel sesuai dengan output. Misalnya jika ingin meramal harga high, maka dipakai sampel data high untuk dijadikan inputnya. Variabel lain seperti opening low, close, dan volume tidak dipakai dalam analisis tersebut. Proses pengklasifikasian input merupakan tahapan pertama dalam merancang sistem estimasi dengan ANN, klasifikasi harga saham merupakan acuan informasi dalam pelatihan ANN sehingga hasil estimasi merupakan hasil yang relevan berdasarkan klasifikasi input tersebut. Input diklasifikasikan menjadi 5 bagian besar, yaitu opening, high, low, volume, dan closing. Pada histori harga saham dapat diklasifikasikan lagi menurut kebutuhan perancangan ANN, bisa histori harga saham satu, dua, tiga hari yang lalu, seminggu, dua minggu yang lalu, dan seterusnya. Hal ini merupakan kebutuhan tingkat estimasi. Begitu juga pada informasi high-low dan volume, semuanya merupakan variabel yang dapat disesuaikan dengan pertimbangan akurasi, kemudahan, dan pengaruhnya pada sistem ANN.
3.2.1 Pemilihan Variabel Input dan Output Berdasarkan penelitian pada P.T Mahadana Asta Berjangka dalam meramalkan harga saham 1 minggu membutuhkan data harga saham bulanan, untuk meramalkan harga saham harian dibutuhkan data harga saham mingguan. Hal ini merupakan tujuan 39
dari estimasi harga saham jangka pendek dengan teknikal analisis yang memprediksikan harga saham tiap hari dalam satu bulan yang akan datang. Dengan pertimbangan ini, kami mencoba untuk mengambil input 25 hari (dalam satu bulan terdapat 4 hari Minggu dan beberapa hari libur sehingga diasumsikan 1 bulan terdiri dari 25 hari) yang lalu sebagai input dalam arsitektur jaringan. Berikut merupakan pemilihan variabel input yang dipilih sebagai informasi yang relevan bagi ANN pada metode estimasi, berdasarkan data yang didapat dari P.T Mahadana Asta Berjangka : a. Harga opening tiap hari selama 25 hari yang lalu. b. Harga closing tiap hari selama 25 hari yang lalu. c. Harga high tiap hari selama 25 hari yang lalu d. Harga low tiap hari selama 25 hari yang lalu e. Jumlah volume tiap hari selama 25 hari yang lalu Sedangkan yang diinginkan sebagai output adalah estimasi harga saham high dan low tiap hari, sehingga variable output terdapat 1 nilai node untuk setiap nilainya.
3.2.2 Pemetaan Harga Saham sebagai Masukan (input) dalam ANN Setelah melakukan klasifikasi, berikutnya adalah memetakan data input tersebut ke dalam ANN. Jumlah neuron node pada lapisan input adalah 75, 100 dan 125 buah yang merupakan banyaknya vektor masukan jaringan. Vektor ini diteruskan kedalam hidden layer yang kemudian dipetakan lagi sampai output layer. Pada hidden layer, jumlah layer dan jumlah node ditentukan menjadi 3 jenis yaitu node hidden layer sama dengan node input, node hidden layer lebih besar 25 dari input, dan node hidden layer lebih kecil 25 dari input, karena menurut pengalaman 40
dalam melakukan penelitian ini, belum ada ketentuan yang mengatur banyaknya jumlah layer dan jumlah node yang optimal pada layer ini. Selama ini penggunaan 2 hidden layer cukup untuk mengatasi permasalahan estimasi sehingga pada penelitian ini menggunakan 2 hidden layer sebagai pertimbangan akurasi dan ketepatan ramalan. Tiap node dalam hidden layer tersebut memetakan vektor data ke layer selanjutnya. Vektor pada hidden layer tersebut memetakan data ke output layer dengan node berjumlah 1 atau 2 buah. Pada intinya, ANN disini merupakan sistem yang memetakan 75, 100, 125 dimensi vektor input ke vektor output 1 atau 2 dimensi. Untuk lebih jelasnya bisa dilihat pada gambar 3.2. Pada gambar 3.2 merupakan contoh dari pemetaan 125 input menjadi 2 output.
Gambar 3.2 Pemetaan 2 Hidden Layer 125 Vektor Input kedalam 2 Vektor Output
41
3.3 Desain Model Backpropagation Pada subbab ini akan dijelaskan fungsi-fungsi yang berpengaruh pada proses pelatihan ANN, karena dalam proses pembelajaran tersebut menggunakan perhitungan fungsi matematik yang terdapat koefisien, variabel maupun operator yang dapat mempengaruhi nilai hasil perhitungan data. Arsitektur jaringan yang kurang memadai lebih menyebabkan hasil perhitungan yang kurang tepat walaupun menyebabkan lamanya pelatihan, sementara fungsi aktivasi dan learning rule yang digunakan lebih mempengaruhi kecepatan pelatihan dan juga dapat menyebabkan kesalahan perhitungan. Dengan memilih fungsi-fungsi yang tepat, maka jaringan dapat dioptimalisasi dari segi kecepatan perhitungan dan akurasi hasil perhitungan. Faktor-faktor yang mempengaruhi kinerja ANN adalah ketiga faktor yang telah penulis nyatakan di atas yaitu arsitektur jaringan ANN, fungsi aktivasi dan aturan pelatihan (learning rule). Ketiga faktor tersebut diuraikan pada subbab-subbab berikut.
3.3.1 Perancangan Arsitektur Jaringan Arsitektur backpropagation selalu memiliki beberapa layer, yaitu : 1 input layer dan 1 output layer. Data yang digunakan pada program ini adalah opening, high, low, close, dan volume. Kemudian data-data ini dihitung selisih nilainya untuk mendapatkan harga selisih nilai antara dua hari. Kelima variabel ini masing-masing sebagai 1 node dan mewakili data peramalan 1 hari setiap barisnya pada database. Kemudian ada pula 1 variabel tambahan yaitu bias yang ditempatkan pada lapisan selain output layer sebanyak 1 buah. Kami mendesain 2 jenis arsitektur output layer, yaitu yang terdiri dari 1 output (high atau low saja) dan 2 output (high dan low sekaligus). Sedangkan untuk 42
input layer, terdapat beberapa arsitektur, yang menggunakan seluruh variabel dan sebagian variabel. Jumlah variabel yang akan digunakan sebagai data peramalan disesuaikan dengan jumlah layer output. Data yang digunakan untuk meramal bersifat tetap menggunakan data 25 hari sebelumnya untuk meramal satu hari sesudahnya. Untuk arsitektur hidden layer kami menggunakan 2 hidden layer. Dalam menentukan hidden layer, terdapat 2 faktor yang harus diperhitungkan, yaitu jumlah node dan banyaknya hidden layer yang digunakan. Semakin banyak hidden layer yang digunakan semakin baik hasilnya, tetapi training yang dibutuhkan juga semakin lama. Jumlah hidden node yang terlalu sedikit menyebabkan jaringan tidak cukup fleksibel untuk mempelajari data dan jika jumlah hidden node terlalu besar akan terjadi overfitting data. Menurut Saludin Muis (p183), tingkat ketelitian yang dihasilkan sudah cukup memadai jika arsitektur memakai 1 lapis hidden layer, 1 lapis input dan output layer. Maka dengan pertimbangan teori-teori dan juga waktu, pada penelitian ini, jumlah hidden layer ditentukan sebanyak 2 lapis. Data yang ingin didapatkan sebagai hasil peramalan adalah nilai high dan low pada data harga index saham harian yang ingin diramal. Sehingga jumlah node pada output layer adalah 2 node yang masing-masing mewakili nilai high dan low. Pada penelitian akan dicoba untuk memisah output yang akan dihasilkan dan dibandingkan dengan output yang digabung. Jadi pada penelitian dengan output yang dipisah, akan dihasilkan harga peramalan high dan low secara terpisah dengan menggunakan dua arsiterktur jaringan. Sedangkan pada output yang digabung, akan didapat harga high dan low dalam satu arsitektur jaringan.
43
3.3.2 Penentuan Fungsi Aktivasi Fungsi aktivasi merupakan fungsi transfer, yaitu fungsi yang memetakan suatu nilai input tertentu ke suatu nilai output tertentu. Fungsi aktivasi untuk jaringan backpropagation harus mempunyai beberapa karakteristik penting, yaitu harus bernilai kontiniu, dapat diturunkan dan nilainya meningkat secara monotonik dengan inputnya. Untuk kemudahan perhitungan, disarankan agar yang fungsi turunannya mudah dihitung. Untuk fungsi aktivasi yang paling sering digunakan dalam backpropagation adalah sigmoid biner dan sigmoid bipolar. Keduanya memiliki karakteristik fungsi yang sesuai dengan syarat diatas. Bila pada jaringan multi layer fungsi linear hanya bisa menghasilkan fungsi linear juga, maka dengan fungsi sigmoid bisa menghasilkan fungsi non-linear. Pada fungsi sigmoid biner mempunyai rentang nilai output antara 0 sampai 1 dan dirumuskan sebagai : 1 f(x) = ———— 1 + e-σx Dengan fungsi turunan sigmoid biner dirumuskan sebagai : f(x) = σf(x)[1-f(x)]
Sedangkan fungsi sigmoid bipolar mempunyai rentang nilai output antara -1 sampai 1, dirumuskan sebagai : 1 - e-σx f(x) = ———— 1 + e-σx
44
Dengan fungsi turunan sigmoid bipolar dirumuskan sebagai : σ f’(x) = ―[1 + f(x)][1 – f(x)] 2 Perbandingan kedua fungsi tersebut pada penerapan penelitian ini didasarkan pada nilai yang akan diwakili. Peramalan yang dilakukan dalam penelitian ini mengambil nilai selisih dari harga saham hari sebelumnya. Sehingga terdapat nilai positif dan nilai negatif. Fungsi sigmoid biner tidak memetakan sinyal input negatif karena nilai terendahnya adalah 0(nol). Sehingga pilihan terbaik berada pada sigmoid bipolar karena rentang nilai yang digunakan pada fungsi ini bernilai 1 dan -1. Sehingga dapat mewakili nilai selisih yang juga bernilai positif dan negative.
3.3.3 Learning Rule dan Konstanta Laju Belajar Learning rule yang digunakan oleh ANN backpropagation adalah generalized delta rule. Secara singkat cara kerja delta rule adalah dengan menyesuaikan bobot untuk meminimalisasi error pada output yang dihasilkan oleh perhitungan jaringan. ANN backpropagation memiliki 3 tahap yang harus dikerjakan : tahap feedforward data input, backpropagation dan perhitungan error, dan penyesuaian bobot. Konstanta laju belajar (learning rate) adalah salah satu faktor yang dapat mempercepat atau dapat menjadi faktor penghambat proses training. Konstanta laju belajar juga sering disebut sebagai α digunakan sebagai konstanta pengali untuk mengatur besarnya nilai penyesuaian bobot pada setiap langkah pelatihan. Dalam penentuan learning rate sebagai langkah awal biasa digunakan nilai yang kecil.
45
Semakin kecil parameter learning rate, maka semakin kecil pula perubahan bobot pada jaringan dari satu iterasi ke iterasi selanjutnya dan dapat menghasilkan error yang minimum. Namun, jika learning rate α yang digunakan terlalu kecil membuat jumlah iterasi semakin besar yang akan mengakibatkan proses training menjadi lambat. Jika learning rate α yang digunakan terlalu besar, proses training dapat lebih cepat mencapai daerah di sekitar nilai error minimum namun akan kesulitan dalam mencapai titik minimum yang lebih dalam karena perubahan bobot yang terjadi terlalu besar. Learning rate α yang biasa digunakan mempunyai rentang 0 < α < 1 (antara nol dan satu). Dari sumber-sumber yang penulis dapatkan, penentuan konstanta laju belajar yang paling baik tidak memiliki cara perhitungan khusus melainkan melalui trial and error. Dalam penulisan skripsi ini, penulis menggunakan nilai konstanta laju belajar 0,1 karena nilai tersebut lebih memberikan jaminan untuk mendapatkan nilai yang lebih tepat ke target output karena nilai perbaikan yang dibuat lebih halus, yaitu 0,1 dari nilai yang sebenarnya. Dari pemilihan nilai ini penulis tidak mengejar/ mengharapkan proses pelatihan yang lebih cepat. Jika penulis mengambil nilai yang lebih besar, ditakutkan sewaktu perbaikan bobot, nilai perhitungan target akan semakin lama untuk mendekati nilai target error.
3.4 Proses pelatihan ANN Backpropagation Pada pelatihan ANN terdiri dari dua tahap yaitu tahap feed forward dan backward. Proses pelatihan ini dimulai dari menentukan arsitektur jaringan ANN yang akan dilatih. Pada penelitian ini, data pelatihan merupakan data historis harga index
46
saham harian berupa opening, high, low, close, dan volume. Tetapi dalam mengambil nilai, kami menggunakan selisih nilai dari dua hari yang berurutan. Contohnya : Tabel 3.1 Contoh Pengambilan Nilai Tanggal 6/30/2003 7/2/2003 7/3/2003
opening 9485 9520 9527
High 9584 9614 9646
selisih opening
selisih high
35 7
30 32
Data yang telah tersedia, kemudian nilainya diskalakan dan diberikan dalam jaringan untuk dilakukan perhitungan dengan fungsi-fungsinya. Proses pemberian nilai ke dalam jaringan merupakan tahap feed forward dimana hasilnya akan dibandingkan dengan targetnya / referensi untuk mendapatkan selisih error yang kemudian nilai itu akan dikembalikan untuk menghasilkan suatu nilai bobot yang sesuai pada perhitungan dengan targetnya. Proses pembalikan nilai ini dilakukan pada tahap backward. Hal ini berlangsung terus-menerus secara iteratif sampai jaringan mendapatkan nilai selisih error yang kecil antara data input terhadap data target, kemudian nilai bobot terakhir tersebut disimpan sebagai referensi fungsi untuk tahap evaluasi (testing). Untuk lebih jelasnya tentang proses pelatihan jaringan dapat dilihat pada gambar berikut
47
Gambar 3.3 Proses Pelatihan Jaringan
3.4.1 Penentuan Arsitektur Jaringan Kami mendesain 2 jenis arsitektur output layer, yaitu yang terdiri dari 1 output (high atau low saja) dan 2 output (high dan low sekaligus). Untuk 1 output, digunakan layer input yang mengambil nilai variabel opening, high atau low, close dan tanpa volume, kemudian diteliti juga dengan menggunakan semua variabel yang ada. Untuk 2
48
output, digunakan layer input yang mengambil nilai variabel opening, high, low, close dan volume atau tanpa volume. Pada saat ini, belum ada ketentuan yang menetapkan tentang penggunaan jumlah hidden layer dan jumlah node hidden layer yang paling optimal. Pada penelitian ini, penentuan jumlah node hidden layer didasarkan atas ekperimen / percobaan kisaran pada angka tertentu dan dengan menggunakan angka hasil penelitian yang dilakukan oleh Guang Bin Huang (2004, p274) untuk dua hidden layer. Untuk ANN dengan dua hidden layer, menurut Guang (2003, p280) jumlah node hidden layer satu dan node hidden layer dua dapat ditentukan berkisar antara nilai yang didapat pada rumus :
L1 = √ (( M+2 ) N ) + 2 √ ( N / ( M+2 )) L2 = M √ ( N / ( M+2 ))
L1 = jumlah node hidden layer satu L2 = jumlah node hidden layer dua N = jumlah node input dan output M = jumlah node output
Bila jumlah node input 100 dan jumlah node output sebanyak dua, maka menurut Guang, jumlah node hidden layer satu dan dua dapat diperkirakan sebanyak :
L1 = √ (( M+2 ) N ) + 2 √ ( N / ( M+2 )) L1 = √ (( 2+2 ) 100 ) + 2 √ ( 100 / ( 2 +2 ))
49
L1 = 20 + 10 L1 = 30 node
L2 = 2 √ ( N / ( M+2 )) L2 = 2 √ ( 100 / ( 2+2 )) L2 = 10 node
Jadi pada tahap penentuan arsitektur jaringan pada ANN, penelitian ini mengacu pada penggunaan kisaran nilai perhitungan kedua rumus yang dikemukakan di atas dan jumlah node yang dilakukan secara eksperimental (metode coba). Pada hidden layer pertama akan dicoba dengan menggunakan jumlah node yang sama dengan input node, jumlah node yang lebih banyak 25 buah daripada input node dan jumlah node yang lebih sedikit 25 buah daripada input node. Sementara pada hidden layer kedua digunakan jumlah node pada hidden layer 1 dikurang 25. Sebagai gambaran, salah satu contoh arsitektur jaringan yang digunakan adalah seperti gambar dibawah
50
Gambar 3.4 Arsitektur Jaringan Backpropagation
Arsitektur jaringan, dalam hal ini jumlah hidden layer serta jumlah node di dalamnya, akan mempengaruhi kinerja jaringan tersebut. Arsitektur yang terlalu sederhana tidak akan mampu menemukan pola data yang kompleks, mendapatkan error pelatihan dan error generalisasi yang tinggi. Sedangkan pada arsitektur yang terlalu kompleks dapat menyebabkan jaringan terlalu banyak keragaman nilai dan terpaku pada nilai-nilai data training yang diberikan bukan pola umum dari data-data tersebut. Untuk menghindari kedua kondisi di atas, penentuan jumlah hidden layer serta hidden node di dalam harus dilakukan tidak hanya berdasarkan jumlah epoch (training) dalam pelatihan, tapi juga akurasi dalam pengujian. Karena itu, penentuan arsitektur jaringan tidak dapat terlepas dari proses pengujian dan akan dilakukan secara bersamaan. Untuk mengetahui perbandingan pemakaian arsitektur pada rumusan di atas akan lebih diuraikan pada bab empat tentang pengujian.
51
3.4.2 Pembagian dan Penyekalaan Data Input dan Output Pada tahap ini data dibagi menjadi dua bagian, yang pertama data untuk pelatihan (training set) dan data untuk pengujian / evaluasi (testing set). Dalam training set data terdiri atas 26 rows yang didapat dari jumlah input dan jumlah target output. Jumlah input terdiri dari 25 rows yaitu dari harga index saham 25 hari yang lalu sampai pada hari patokan ( h -25..... h-1) sedangkan sisanya satu rows yang merupakan nilai output yang diharapkan / target output yang merupakan harga high dan low index saham pada hari yang akan diperkirakan. Setiap rows mewakili lima input node yang terdiri dari high, opening, low, close dan volume, kecuali untuk output target hanya dipakai high dan low. Jumlah rows yang akan dilatih sebanyak 597 rows dimana pelatihan pertama akan dipakai data h-800 sampai h-776 sebagai data input dan h-775 sebagai data output target. Selanjutnya untuk pelatihan berikutnya, jumlah hari akan ditambah satu.
52
Tabel 3.2 Pengambilan Data Pelatihan Hari ke H-801
H-800
H-799 H-798 H-797 H-796 H-795 H-794 h-793 H-792 H-791 H-790 … H-777
H-776
selisih opening
35
7 48 20 348 57 -25 -75 27 165 -30 … 152
-54
selisih high
30
32 -38 322 136 -27 -46 -93 200 30 60 … -25
-11
selisih low
-34
74 -17 87 348 22 -67 -116 145 41 52 … -21
40
selisih close
7
48 -4 354 75 -25 -38 -42 197 -30 92 … -66
-64
selisih volume
-240
Keterangan Data awal pelatihan pertama Data awal pelatihan kedua
132 -130 273 -12 53 -187 168 153 68 203 … -1226
-3698
H-775
-174
-217
-249
-245
12013
H-774 H-773
-135 -5
-88 8
-4 -19
-5 -19
-10886 -4214
data akhir pelatihan pertama output target pelatihan pertama
Data akhir pelatihan kedua output target pelatihan kedua
Pada data testing set, data hanya terdiri dari input node yang berjumlah 75,100,125 buah dan 25 rows. Output target tidak dipakai karena dengan data input tersebut jaringan akan mencari output yang sesuai dengan data pelatihan dimana output di sini merupakan hasil dari estimasi ANN berupa harga index saham high dan low.
53
Tabel 3.3 Pengambilan Data Testing hari ke H-801 H-800
selisih opening
selisih high
selisih low
selisih close
selisih volume
35
30
-34
7
-240
H-799 H-798 H-797 H-796 H-795 H-794 h-793 H-792 H-791 H-790 … H-777 H-776
7 48 20 348 57 -25 -75 27 165 -30 … 152 -54
32 -38 322 136 -27 -46 -93 200 30 60 … -25 -11
74 -17 87 348 22 -67 -116 145 41 52 … -21 40
48 -4 354 75 -25 -38 -42 197 -30 92 … -66 -64
132 -130 273 -12 53 -187 168 153 68 203 … -1226 -3698
H-775
-174
-217
-249
-245
12013
H-774 H-773
-135 -5
-88 8
-4 -19
-5 -19
-10886 -4214
Keterangan
Data awal testing
Data akhir testing Hari yang akan diramal
Setelah membagi data input dan output, maka selanjutnya adalah menyekalakan input dan output tersebut dengan skala -1 sampai 1 ( -1 data terkecil dan 1 data terbesar ). Karena nilai tersebut akan dimasukkan ke dalam fungsi aktivasi di mana fungsi tersebut sangat sesuai dalam memetakan nilai yang kecil. Tabel 3.4 Input dan Output Target yang Tidak Terskala input
output
x1
x2
y
250
100
500
500
400
1000
750
800
1400
54
Misal pada contoh di atas merupakan data input dan target output yang belum terskala, apabila dimasukkan ke fungsi aktivasi sigmoid, maka hasilnya semua akan mendekati 1 atau bahkan 1. O = 1 / (1 + e-100) O = 1 / 1+ (1 + 3,72 E -44) O≈1 Maka pada data tersebut dibutuhkan penyekalaan dengan rentang antara -1 sampai 1 agar dapat dipetakan dengan sesuai oleh fungsi sigmoid dan untuk mengecilkan selisih error. Untuk menyekalakan data digunakan rumus sebagai berikut : Nilai = ((nilai aktual – nilai minimum) /(Nilai maksimum – nilai minimum)) x 2 -1 Pada tabel di atas, untuk menyekalakan nilai-nilai tersebut dilakukan langkah berikut : Nilai skala 250 =( 250 – 100 ) x2 -1 = 0,1154 1400 – 100 Nilai skala 500 = 500 – 100 = 0,3077 1400 – 100 Dan seterusnya untuk nilai-nilai lainnya (x1 dan x2) sehingga dapat dituliskan dalam tabel sebagai berikut : Tabel 3.5 Tabel Hasil Penyekalaan input output x1
x2
y
0,1154
0
0,3077
0,3077
0,2308
0,6923
0,5
0,5385
1
55
Untuk mendapatkan hasil peramalan index saham yang sesuai pada tahap pengujian, harus dilakukan penyekalaan ulang (rescaling) supaya hasil peramalan yang terskala tersebut dapat diubah menjadi nilai aktual seperti semula. Misalnya nilai peramalan yang dihasilkan 0,2, maka nilai aktual yang sebenarnya adalah Nilai aktual 0,2 = (1400 – 100) x 0,2 + 100 = 360
3.4.3 Inisialisasi bobot Pada ANN, inisialisasi bobot dibutuhkan sebagai penentuan bobot awal ke jaringan yang kemudian akan dilakukan koreksi bobot itu sendiri pada proses pembelajaran. Inisialisasi bobot awal sangat berpengaruh pada kecepatan proses pembelajaran karena perhitungan input beserta bobotnya akan menentukan ketepatannya pada output yang dihasilkan. Jika output yang dihasilkan jauh berbeda dengan hasil yang diharapkan (selisih error), proses pembelajarannya tentu akan membutuhkan semakin banyak iterasi (epoch). Oleh karena itu, menurut Fausett [1994, p296] inisialisasi bobot dapat dilakukan dengan dua cara, yaitu dengan Random Initialization dan Nguyen Widrow Initialization. Pada Random initialization dilakukan inisialisasi bobot yang cukup kecil, yaitu rentang antara -0,5 sampai 0,5 atau -1 sampai 1. Pada inisialisasi bobot Nguyen Widrow Initialization, dihitung berdasarkan penelitian yang dilakukan Nguyen dan Widrow yang dapat dirumuskan sebagai berikut :
56
β = 0,7 x P(1/n) dimana : β = faktor skala P = Jumlah node hidden layer n = Jumlah node input layer
Algoritma inisialisasi bobot nguyen Widrow adalah : •
Untuk setiap hidden unit (j = 1,2,....,p) : o Inisialisasikan vektor bobotnya dari input node : Vij (lama) = inisialisasi random antara -0,5 dan 0,5 (atau antara –γ dan γ) o Hitung normalisasi vektor ║ Vj(lama) ║ o Inisialisasi ulang : Vij = β Vij (lama) ║ Vj(lama) ║
•
set bias : Voj = angka random antara – β dan β
3.4.4 Tahap Feedforward Feedforward merupakan suatu bagian tahap pelatihan yang menghitung semua nilai input untuk menghasilkan nilai output pada jaringan. Pada perhitungan di sini, mulai digunakan fungsi aktivasi dalam pemetaan nilai dengan berdasarkan bobot dan data input pelatihan. Pada input layer, data input dan bobot interkoneksi diberikan ke
57
layer selanjutnya untuk diproses fungsi aktivasi dan kemudian menuju ke output layer. Nilai pada output layer inilah yang dibandingkan dengan output target atau nilai sebenarnya. Apabila selisih error masih di atas target error, maka dilakukan perbaikan bobot untuk meminimasi selisih error tersebut pada tahap backward yang akan dibahas pada subbab 3.4.5. Pada tahap feedforward, nilai hasil peramalan tidak dibandingkan dengan target error. Oleh karena itu, pada proses feedforward pembelajarannya bersifat statis karena output yang dihasilkan hanya berasal dari vektor data pelatihan. Seperti yang telah disebutkan sebelumnya, feedforward merupakan proses perhitungan nilai kedalam fungsi aktivasi, maka dalam perhitungan tersebut terdapat fungsi matematis yang digunakan dalam melakukan proses feedforward. Fungsi-fungsi tersebut yang akan menghasilkan suatu nilai output pada jaringan. Sebagai contoh, pada desain ANN dua hidden layer jika diterapkan dengan jumlah hidden node layer 1 sebanyak 100 dan layer 2 sebanyak 75. Nilai input dan target output yang dimasukkan misalnya sebagai berikut :
58
Tabel 3.6 Contoh Data Input Pelatihan Sebagai Input pada Input Layer. data ke
selisih opening
selisih high
selisih low
selisih close
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
35 7 48 20 348 57 -25 -75 27 165 -30 81 -145 89 -78 -119 -65 20 147 113 33 -121 59 152 -54
30 32 -38 322 136 -27 -46 -93 200 30 60 -47 -48 55 -141 -69 10 -68 331 -33 -35 -51 159 -25 -11
-34 74 -17 87 348 22 -67 -116 145 41 52 -40 -21 56 -125 -91 26 -45 212 81 -94 9 88 -21 40
7 48 -4 354 75 -25 -38 -42 197 -30 92 -156 89 -58 -139 -71 26 12 248 33 -121 38 185 -66 -64
Tabel 3.7 Contoh Data Input Pelatihan Sebagai Target Output. data ke 26
selisih high -217
selisih low -249
Untuk jumlah data pelatihan tidak dibatas jumlahnya, namun pada penelitian ini jumlah data pelatihan yang digunakan sebanyak 597 hari yang artinya N = 597. Jumlah node pada input layer = 25 hari x 4 variabel = 100 Jumlah node pada hidden layer 1 = 100 Jumlah node pada hidden layer 2 = 75 59
Jumlah node pada output layer = 2 Learning Rate (α) = 0,1 Momentum (μ) = 1 Target error RMS (Root Mean Square) = 0,0001 Bobot awal : -
Bobot awal input layer ke hidden layer 1.
-
Bobot awal hidden layer 1 ke hidden layer 2
60
-
Bobot awal hidden layer 2 ke output layer
Perhitungan : Perhitungan nilai Hidden layer 1 yang berasal dari input dan bobot ke hidden layer : L2.outpi = input1 x w1i + input2 x w2i + input3 x w3i + .... + input100 x w100i + bias1 x w0i
Perhitungan diteruskan untuk output-output lain di hidden layer 1. Kemudian dihitung fungsi aktivasi untuk setiap output pada hidden layer 1. 1 - e-σx f(x) = ———— 1 + e-σx
–1
1 - e0,7511 L2.output1 = ———— = -0,3588 1 + e0,7511
61
Perhitungan diteruskan sampai semua node dihitung fungsi aktivasinya dan diteruskan juga sampai output layer. Setelah mendapatkan fungsi aktivasi pada output layer, tahap feedforward selesai.
3.4.5 Tahap Backward Backward merupakan bagian dari tahap pelatihan ANN dengan melakukan perbaikan / pengoreksian bobot –bobot pada setiap koneksi layer. Perbaikan bobot tersebut didasarkan atas selisih error dari hasil yang didapat pada hasil tahap forward dengan data target error. Pada algoritma backpropagation, setiap kali setelah backward dilakukan, proses feedforward dan backward diulang kembali sampai hasil yang diperoleh dari perbedaan tahap feedforward dan target output sama atau lebih kecil daripada target error. Perhitungan nilai pada tahap backward membutuhkan turunan dari fungsi aktivasi untuk menghitung nilai porsi error δ. Kemudian pada perhitungan koreksi bobot ∆, perhitungan akan menggunakan fungsi konstanta seperti learning rate dan momentum. Untuk jelasnya, contoh pada subbab 3.4.4 akan dihitung perbaikan bobot jaringannya pada tahap backward dengan pemakaian desain ANN dan inisialisasi yang telah diuraikan pada subbab tersebut. Maka proses perhitungan tahap backward untuk jaringan dapat diasumsikan sebagai berikut : Perhitungan pelatihan perbaikan bobot : Pertama dilakukan perhitungan besar error pada setiap node output : l4.err[i] = (targetnode[i] - l4.outp[i]) x (0.5 x (1+l4.outp[i]) x (1-l4.outp[i]))
62
Hitung jumlah dari absolut error : Systemerror = 0,0257 + 0,3283 = 0,354 Lakukan perbaikan bobot setelah mengetahui besar error yang terjadi l4.deltaw[j,i] := alpha x l4.err[i] x l3.outp[j]
Lakukan perhitungan untuk setiap layer yang ada. Kemudian hitung bobot yang baru untuk setiap interkoneksi bobot
63
Iterasi feedforward dan backward diulang untuk pelatihan data berikutnya dan diulang kembali dari data yang pertama. Iterasi berhenti jika error sistem bernilai lebih kecil daripada error target yang ditentukan.
3.5 Proses Pengujian ANN Backpropagation Pada dasarnya proses pengujian hasil pelatihan jaringan adalah dengan menggunakan kembali proses feedforward yang sama seperti subab 3.4.4, hanya pada proses ini tidak dilakukan inisialisasi bobot, tetapi memakai bobot yang telah diperbaiki pada tahap pelatihan. Data yang akan dievaluasi merupakan data pengujian yang akan dicari nilai outputnya setelah melewati jaringan berdasarkan nilai-nilai bobot akhir hasil pelatihan. Tidak diperlukan lagi target output untuk penyesuaian bobot karena nilai-nilai bobot jaringan merupakan hasil yang optimal sesuai dengan target yang diberikan pada proses pelatihan. Pada proses pengujian ini, data evaluasi hanya cukup sekali saja diproses pada tahap feedforward untuk mendapatkan hasil nilai output jaringan yang sesuai dengan nilai bobot-bobot dari pelatihan. Data evaluasi yang digunakan bisa merupakan data input pertihan atau data input di luar data pelatihan. Arsitektur yang dipakai pada pengujian ini sama seperti arsitektur pada tahap pelatihan sehingga apabila ANN dilatih dengan suatu arsitektur jaringan tertentu, maka pada proses pengujiannya menggunakan arsitektur jaringan yang sama.
3.6 Perancangan Layar Berikut perancangan layar yang dibuat sebagai petunjuk bagi user untuk menjalankan program dengan benar. 64
Gambar 3.5 Rancangan Layar
Komponen yang digunakan adalah komponen yang sederhana sehingga user dapat langsung mengenali fungsi dari komponen-komponen tersebut. Tombol Fetch data untuk mengambil data-data yang ada pada file Daily.xls yang berada pada folder yang sama dengan program. Untuk mengambil data dengan benar, masukkan perintah database yang sesuai dengan sumber data yang diinginkan. Jika ingin mengambil data harga index saham harian Hangseng, maka tulis SELECT * FROM [HK$]. HK adalah judul Sheet untuk data Hangseng. Data-data akan muncul pada DBGrid yang disediakan setelah tombol ditekan. Textbox pada jumlah node hidden layer1 dan hidden layer2 berguna untuk mengisi jumlah node hidden layer. Kemudian untuk memasukkan jumlah node tersebut,
65
disediakan tombol set hidden layer. Hidden layer baru akan terbentuk saat tombol sudah ditekan. Kemudian setelah jaringan terbentuk dengan lengkap, diperlukan bobot untuk mengisi interkoneksi antar layer. Ada 2 pilihan untuk pengisian bobot, satu adalah dengan merandom bobot dan dengan load data yang berasal dari hasil save data sebelumnya. Tombol Random untuk merandom bobot dan tombol Load Weight untuk mengambil data dari file data.txt yang sedirektori dengan program. Untuk memulai train, user tinggal menekan tombol train setelah menjalankan langkah-langkah di atas. Untuk melihat informasi tentang parameter yang digunakan, user dapat melihat pada bagian tengah yang berisi textbox-texbox yang berisi informasi jumlah hari yang digunakan sebagai data, alpha, error target, nilai error yang sedang berlangsung, jumlah epoch yang sudah dijalankan, dan hari terakhir yang sudah dilatih. Untuk melihat informasi tentang hasil peramalan dapat dilihat di Listbox hasil peramalan.
66
Gambar 3.6 Tampilan Awal Program
67
Gambar 3.7 Tampilan Program setelah dijalankan
User interface yang dipakai dalam penelitian dan yang digunakan pihak perusahaan (trader) dirancang berbeda karena faktor kenyamanan dan kemudahan dalam mengoperasikan aplikasi. Fungsi yang dapat dipakai di antara keduanya tidak berbeda. Berikut contoh tampilan yang digunakan oleh pihak perusahaan :
68
Gambar 3.8 Tampilan yang dirancang untuk pihak perusahaan
69