i
UJI AKURASI ALGORITMA FUZZY NEURAL NETWORK UNTUK MEMPREDIKSI PERGERAKAN HARGA SAHAM
ABSTRAK
Saat ini minat terhadap investasi pasar saham sangat tinggi. Hal ini
disebabkan keuntungan besar yang bisa diraih dan juga majunya teknologi
informasi yang ada, sehingga banyak sistem yang berhubungan dengan pasar
saham mulai dikembangkan. Dari latar belakang tersebut, maka dilakukan uji
coba terhadap algoritma yang dapat melakukan prediksi terhadap pergerakan
harga saham. Permasalahan yang ingin diselesaikan di sini adalah untuk menguji
algoritma Jaringan Syaraf Tiruan dan Logika Kabur digunakan bersama untuk
melakukan prediksi terhadap harga saham.
Adapun metodologi penelitian yang akan dilakukan adalah dengan
menggunakan data saham dari Indeks Harga Saham Gabungan Indonesia, Saham
Bank BCA, Saham Astra Argo Lestari, dan Saham Gudang Garam. Dari data
tersebut akan diolah pertama kali menggunakan Logika Kabur dan dilakukan
proses pelatihan dan pengujian menggunakan algoritma Backpropagation Jaringan
Syaraf Tiruan.
Hasil akhir yang diperoleh adalah sebuah sistem yang mengandung
algoritma Backpropgation Jaringan Syaraf Tiruan dan Logika Kabur untuk dapat
memprediksi harga saham. Setelah dilakukan pengujian pada sistem didapat
kesimpulan bahwa algoritma ini bekerja dengan baik untuk melakukan prediksi
ii
FUZZY NEURAL NETWORK ALGORITHMS ACCURACY TESTING TO PREDICT STOCK MARKET MOVEMENT
ABSTRACT
Currently the interests of investment stock market is very high .This is
because big gains that can be achieved and upward course information technology
is , so many system that deals with the stock market begin to be developed. From
that background then a test against algorithm that can do a prediction of stock
price movements was done. The problems want to be solved here is to test
algorithms artificial neural network and fuzzy logic be used by to do a prediction
of stock prices.
The research methodology that will be done is using data shares from
Indonesian composite stock price index, bank bca shares , shares of astra argo
lestari , and gudang garam shares. The data will be processed first to use fuzzy
logic and done the process of training and testing using algorithms
backpropagation artificial neural network.
The final results obtained was that a system that containing algorithms
backpropgation artificial neural network and fuzzy logic able to predict stock
prices. Through testing on system obtained the conclusion that these algorithms
UJI AKURASI ALGORITMA FUZZY NEURAL NETWORK
UNTUK MEMPREDIKSI PERGERAKAN HARGA SAHAM
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Disusun oleh
Kevin Aditya Prasetyo
115314041
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
FUZZY NEURAL NETWORK ALGORITHMS ACCURACY
TESTING TO PREDICT STOCK MARKET MOVEMENT
A THESIS
Presented as Partial Fulfillment of the Requirements to Obtain Sarjana Komputer
Degree in Informatic Engineering Study Program
Written by
Kevin Aditya Prasetyo
115314041
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
i
HALAMAN PERSETUJUAN
TUGAS AKHIR
PREDIKSI PERGERAKAN HARGA SAHAM
MEMPERGUNAKAN ALGORITMA FUZZY NEURAL
NETWORK
Oleh :
Kevin Aditya Prasetyo
115314041
Telah disetujui oleh :
Pembimbing,
iii
HALAMAN PERSEMBAHAN
Karya ilmiah ini saya persembahkan kepada :
Tuhan Yesus Kristus, terima kasih telah memberi rahmat dan berkat hingga semua dapat terselesaikan.
Papi, Mami, Ronald, dan semua keluargaku, terima kasih sudah bersabar dan selalu mendukung baik melalui motivasi dan doa.
Pacarku Karin, terima kasih karena selalu mengingatkan dan memotivasi untuk terus giat menyelesaikan studi.
Dosen-dosen Teknik Informatika Sanata Dharma, terima kasih atas bimbingan dari awal hingga akhir proses studi.
iv
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis
tidak mengandung atau memuat hasil karya orang lain, kecuali yang telah
disebutkan dalam daftar pustaka dan kutipan selayaknya karya ilmiah.
Yogyakarta, 30 Agustus 2015
Penulis
v
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata
Dharma Yogyakarta :
Nama : Kevin Aditya Prasetyo
NIM : 115314041
Demi pengembangan ilmu pengetahuan, saya memberikan kepada
perpustakaan Univeristas Sanata Dharma karya ilmiah yang berjudul :
UJI AKURASI ALGORITMA FUZZY NEURAL NETWORK
UNTUK MEMPREDIKSI PERGERAKAN HARGA SAHAM
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada perpustakaan Universitas Sanata Dharma Yogyakarta hak
untuk menyimpan, mengalihkan dalam bentuk media lain, mengelola dalam
bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikan di
internet atau media lain untuk kepentingan akademis tanpa meminta ijin dari saya
maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai
penulis.
Demikian pernyataan yang saya buat dengan sebenarnya.
Dibuat di : Yogyakarta
Pada tanggal : 30 Agustus 2015
Yang menyatakan,
vi
UJI AKURASI ALGORITMA FUZZY NEURAL NETWORK UNTUK MEMPREDIKSI PERGERAKAN HARGA SAHAM
ABSTRAK
Saat ini minat terhadap investasi pasar saham sangat tinggi. Hal ini
disebabkan keuntungan besar yang bisa diraih dan juga majunya teknologi
informasi yang ada, sehingga banyak sistem yang berhubungan dengan pasar
saham mulai dikembangkan. Dari latar belakang tersebut, maka dilakukan uji
coba terhadap algoritma yang dapat melakukan prediksi terhadap pergerakan
harga saham. Permasalahan yang ingin diselesaikan di sini adalah untuk menguji
algoritma Jaringan Syaraf Tiruan dan Logika Kabur digunakan bersama untuk
melakukan prediksi terhadap harga saham.
Adapun metodologi penelitian yang akan dilakukan adalah dengan
menggunakan data saham dari Indeks Harga Saham Gabungan Indonesia, Saham
Bank BCA, Saham Astra Argo Lestari, dan Saham Gudang Garam. Dari data
tersebut akan diolah pertama kali menggunakan Logika Kabur dan dilakukan
proses pelatihan dan pengujian menggunakan algoritma Backpropagation Jaringan
Syaraf Tiruan.
Hasil akhir yang diperoleh adalah sebuah sistem yang mengandung
algoritma Backpropgation Jaringan Syaraf Tiruan dan Logika Kabur untuk dapat
memprediksi harga saham. Setelah dilakukan pengujian pada sistem didapat
kesimpulan bahwa algoritma ini bekerja dengan baik untuk melakukan prediksi
vii
FUZZY NEURAL NETWORK ALGORITHMS ACCURACY TESTING TO PREDICT STOCK MARKET MOVEMENT
ABSTRACT
Currently the interests of investment stock market is very high .This is
because big gains that can be achieved and upward course information technology
is , so many system that deals with the stock market begin to be developed. From
that background then a test against algorithm that can do a prediction of stock
price movements was done. The problems want to be solved here is to test
algorithms artificial neural network and fuzzy logic be used by to do a prediction
of stock prices.
The research methodology that will be done is using data shares from
Indonesian composite stock price index, bank bca shares , shares of astra argo
lestari , and gudang garam shares. The data will be processed first to use fuzzy
logic and done the process of training and testing using algorithms
backpropagation artificial neural network.
The final results obtained was that a system that containing algorithms
backpropgation artificial neural network and fuzzy logic able to predict stock
prices. Through testing on system obtained the conclusion that these algorithms
viii
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yang Maha Esa penulis panjatkan, karena
berkat dan rahmat-Nya penulis dapat menyelesaikan tugas akhir sebagai salah satu
syarat untuk mendapatkan gelar Sarjana Komputer dari Program Studi Teknik
Informatika Universitas Sanata Dharma Yogyakarta.
Pada kesempatan ini pula, penulis ingin mengucapkan terima kasih kepada
beberapa pihak yang telah mendukung dan membantu penulis dalam
menyelesaikan tugas akhir. Penulis mengucapkan terima kasih kepada :
1. Romo Dr. Cyprianus Kuntoro Adi, S.J. M.A., M.Sc., sebagai dosen
pembimbing Tugas Akhir.
2. Papi, Mami, Ronald, dan Karin yang selalu memberi semangat untuk
cepat menyelesaikan Tugas Akhir.
3. Romo Poldo yang selalu siap membantu ketika penulis mengalami
kesulitan dalam penyelesaian Tugas Akhir.
4. Seluruh teman-teman Teknik Informatika 2011 yang telah ikut
memberi dukungan dan doa.
5. Semua pihak yang tidak dapat penulis sebutkan satu per satu yang
telah membantu menyelesaikan Tugas Akhir ini.
Akhir kata penulis berharap semoga Tugas Akhir ini dapat berguna bagi
semua pihak yang membaca.
Penulis,
ix
DAFTAR ISI
HALAMAN PERSETUJUAN………. i
HALAMAN PENGESAHAN..………. ii
HALAMAN PERSEMBAHAN ………...……….. iii PERNYATAAN KEASLIAN KARYA………. iv
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ……….. v
ABSTRAK ………...… vi
1.3Tujuan dan Manfaat Penulisan ……… 3
1.4Batasan Masalah ……… 3
1.5Metodologi Penulisan………. 4
1.6Sistematika Penulisan ……… 5
BAB II LANDASAN TEORI………. 6
2.1 Saham……….. 6
2.2 Analisis Pergerakan Harga Saham ……….. 6
x
2.2.2 Analisis Teknikal………. 7
2.3 Jaringan Syaraf Tiruan………. 7
2.3.1 Arsitektur Jaringan……… 8
2.3.2 Fungsi Aktivasi, Bias, dan Threshold……….. 10
2.3.3 Backpropagation (Propagasi Balik)……… 12
2.3.4 Normalisasi ………14
2.3.5 Denormalisasi……… 15
2.4 Logika Kabur………... 15
2.4.1 Konsep Logika Kabur……….. 15
2.4.2 Fuzzyfikasi………. 16
2.4.3 Fungsi Keanggotaan……….. 16
2.4.4 Representasi Kurva-S………... 16
2.5 Jaringan Syaraf Tiruan dan Logika Kabur……….. 17
BAB III METODOLOGI PENELITIAN……… 18
3.1 Data……… 18
3.2 Metode Penelitian………. 19
3.2.1 Algoritma dan Langkah Penelitian………. 19
3.2.2 Arsitektur Jaringan……….. 20
3.3 Pengujian Sistem……….. 21
3.4 Diagram Blok……… 21
BAB IV IMPLEMENTASI DAN HASIL……… 23
4.1 Implementasi Sistem……… 23
4.2 Pengujian……….. 23
xi
4.2.2 Optimalisasi Delay pada Data……….. 26
4.2.3 Optimalisasi Penggunaan Data Training……… 28
4.2.4 Pengujian Terhadap Sistem………. 29
4.2.5 Optimalisasi Menggunakan Data Pelatihan Lampau… 30 4.2.6 Pengujian Menggunakan Fungsi Keanggotaan Linear 31
4.3 Analisis Hasil……… 32
BAB V PENUTUP………. 36
5.1 Kesimpulan………... 36
5.2 Saran……….. 37
DAFTAR PUSTAKA………. 38
LAMPIRAN……… 40
Daftar Gambar
Gambar 2.1 Jaringan Layar Tunggal ……….. 8Gambar 2.2 Jaringan Layar Jamak ………. 9
Gambar 2.3 Jaringan dengan Bias ……… 11
Gambar 2.4 Arsitektur Jaringan Backpropagation ………... 12
Gambar 2.5 Gambar Kurva-S atau Kurva Sigmoid ………. 17
Gambar 3.1 Arsitektur Jaringan yang Dibangun ……….. 20
Gambar 3.2 Diagram Proses ……… 21
Gambar 4.1 Tampilan Sistem ………... 23
xii
Gambar 4.3 Grafik Akurasi Pengujian Delay ……….. 27
Gambar 4.4 Grafik Pengujian Jumlah Data Train ……… 29
Gambar 4.5 Gambar Tampilan Arsitektur Jaringan dan Pelatihan Optimal …… 33
Gambar 4.6 Gambar Tampilan Salah Satu Hasil Pengujian Data IHSG ………. 33
Daftar Tabel
Tabel 4.1 Tabel Pengujian 1 Neuron ……… 24Tabel 4.2 Tabel Pengujian 2 Neuron ……… 24
Tabel 4.3 Tabel Pengujian Learning Rate ……… 25
Tabel 4.4 Tabel Pengujian Jumlah Neuron dan Learning Rate ………... 25
Tabel 4.5 Tabel Pengujian Metode Train ………. 26
Tabel 4.6 Tabel Pengujian Jumlah Delay ……… 27
Tabel 4.7 Tabel Pengujian Jumlah Data Train ………. 28
Tabel 4.8 Tabel Pengujian Sistem ……… 30
Tabel 4.9 Tabel Pengujian Menggunakan Data Pelatihan Lampau ………. 31
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Dewasa ini minat terhadap investasi sangat tinggi. Pentingnya investasi
dan juga majunya teknologi informasi yang ada berdampak langsung terhadap
pengetahuan akan investasi di khalayak masyarakat.
Investasi sendiri ada banyak macamnya, salah satunya adalah investasi di
pasar modal. Beberapa tahun terakhir ini investasi pasar modal makin banyak
diminati, karena menawarkan keuntungan finansial yang relatif cukup tinggi
dalam waktu yang singkat. Selain itu dengan adanya teknologi informasi yang
berkembang pesat sekarang ini menjadikan investasi pasar modal sangat mudah
untuk dilakukan.
Seiring dengan perkembangan teknologi itulah masyarakat mulai mencari
cara yang dapat membantu mendapatkan keuntungan yang berlipat dari investasi
pasar modal secara tepat dan meminimalisir kerugian. Hal ini dikarenakan
sulitnya melakukan prediksi dengan perhitungan manual terhadap berbagai
macam saham sekaligus dalam rentang waktu yang singkat. Dari sini muncul
berbagai algoritma yang digunakan untuk menciptakan prediksi terhadap harga
saham sehingga dapat diketahui kapan saham akan bergerak naik dan saham akan
bergerak turun. Hal ini dikarenakan pergerakan naik atau turunnya harga saham
sangat penting untuk menentukan waktu membeli atau menjual saham untuk
Hingga saat ini algoritma yang banyak digunakan untuk melakukan
análisis terhadap pergerakan harga saham adalah algoritma dari Jaringan Syaraf
Tiruan. Selain algoritma tersebut juga digunakan algoritma K-Nearest Neighbor,
algoritma genetika, ataupun algoritma Naïve-Bayesian. Namun dari semua
algoritma itu hingga saat ini yang akurasinya paling tinggi adalah algoritma dari
Jaringan Syaraf Tiruan yaitu Propagasi Balik atau Backpropagation. Algoritma ini
digunakan karena dapat dengan efektif membuat prediksi terhadap grafik
pergerakan saham yang relatif cukup akurat. Penelitian terbaru mengenai
pergerakan harga saham dengan menggunakan algoritma Jaringan Syaraf Tiruan
menghasilkan jurnal yang berjudul “Stock Market Prediction Using Artificial
Neural Network” (Chauhan et.al, 2014).
Untuk meningkatkan akurasi dari algoritma Backpropagation ini dapat
dilakukan dengan memperbanyak jumlah layer serta neuron yang digunakan. Di
samping itu juga dapat ditambahkan satu algoritma lagi sebgagai algoritma
pendamping. Salah satunya adalah dengan logika kabur atau fuzzy-logic. Sehingga
algoritma yang digunakan nantinya adalah penggabungan dari algoritma Neural
Networks (Jaringan Syaraf Tiruan) dengan Fuzzy-Logic (Logika Kabur).
Diharapkan dengan algoritma ini dapat menghasilkan akurasi yang lebih baik dari
yang sudah dilakukan sebelumnya.
Oleh karena itu pada penelitian kali ini penulis akan membuat suatu
pengujian akurasi dari penggabungan algoritma Fuzzy Neural Network untuk
memprediksi pergerakan harga saham. Diharapkan hasil dari pengujian nanti
1.2 Rumusan Masalah
1. Bagaimana cara menggabungkan algoritma Jaringan Syaraf Tiruan dengan
Logika Kabur untuk melakukan prediksi harga saham ?
2. Bagaimana cara melakukan prediksi harga saham dengan menggunakan
Algoritma Fuzzy Neural Network ?
3. Bagaimana cara menguji akurasi Algoritma Fuzzy Neural Network dalam
memprediksi pergerakan harga saham?
1.3 Tujuan dan Manfaat Penulisan
Tujuan yang ingin dicapai dari penelitian ini adalah untuk mengetahui
akurasi dari algoritma Fuzzy Neural Network dalam melakukan prediksi harga
saham di Indonesia.
1.4 Batasan Masalah
Mengingat luasnya cakupan dari topik yang akan dibahas, maka penulis
memberi batasan masalah sebagai berikut :
1. Analisa yang dilakukan hanya terhadap Indeks Harga Saham Gabungan
Indonesia, Saham Bank BCA, Saham Gudang Garam, dan Saham Astra
Argo Lestari.
2. Data yang akan digunakan dalam penelitian adalah harga penutupan
saham tiap harinya.
3. Analisa yang dilakukan tidak memperhatikan faktor eksternal seperti
4. Data yang akan digunakan adalah data saham dari tahun 2011 hingga
2014.
5. Hasil yang akan dicari dan dibandingkan akurasinya adalah harga
penutupan saham tiap harinya.
1.5 Metodologi Penulisan
1. Studi Literatur dengan tujuan :
a. Mempelajari dan memahami saham.
b. Mempelajari dan memahami Algoritma Backpropagation Jaringan
Syaraf Tiruan.
c. Mempelajari dan memahami konsep Logika Kabur.
d. Mempelajari dan menggabungkan algoritma Jaringan Syaraf
Tiruan dengan Logika Kabur.
2. Pengumpulan data melalui website Yahoo Finance.
3. Pengujian algoritma dengan perhitungan manual terhadap saham.
4. Perancangan system perhitungan otomatis terhadap pergerakan harga
saham.
5. Implementasi algoritma ke dalam sistem perhitungan saham.
6. Membandingkan hasil perhitungan pergerakan harga saham di dalam
system dengan harga saham nyata.
1.6 Sistematika Penulisan
Dokumen tugas akhir ini terdiri dari 5 bab yaitu :
a. BAB I PENDAHULUAN
Pada bab ini membahas mengenai latar belakang dan gambaran umum
penelitian yang akan dilakukan, rumusan masalah, tujuan, batasan dalam
penelitian, dan metodologi yang digunakan dalam penelitian.
b. BAB II LANDASAN TEORI
Bab ini berisi dasar-dasar teori serta hasil penelitian terdahulu yang akan
digunakan dalam pembahasan tugas akhir ini.
c. BAB III METODOLOGI PENELTIAN
Bab ini membahas mengenai cara kerja algoritma yang digunakan dan
proses yang akan dibangun untuk melakukan perhitungan prediksi harga
saham.
d. BAB IV IMPLEMENTASI DAN ANALISIS HASIL
Bab ini berisi tentang implementasi algoritma dan analisa terhadap hasil
prediksi serta algoritma yang digunakan.
e. BAB V PENUTUP
Bab ini berisi kesimpulan dan saran untuk mengembangkan algoritma
BAB 2
LANDASAN TEORI
Pada bab ini akan berisikan dasar-dasar teori serta hasil penelitian
terdahulu yang akan digunakan dalam proses penyusunan dan pembahasan tugas
akhir. Sehingga bab ini akan berisikan beberapa pengertian dan penjelasan yang
berhubungan dengan saham, Jaringan Syaraf Tiruan, dan Logika Kabur.
2.1 Saham
Saham dapat didefinisikan sebagai tanda penyertaan atau pemilikan
seseorang atau badan dalam suatu perusahaan. Wujud saham adalah selembar
kertas yang menerangkan bahwa pemilik kertas tersebut adalah pemilik
perusahaan yang menerbitkan kertas tersebut (Wira, 2011).
2.2 Analisis Pergerakan Harga Saham
Dalam permainan saham biasa dikenal dengan adanya analisis pergerakan
harga saham. Ada 2 teknik analisis yang biasa dipakai trader untuk mengetahui
dan memprediksi pergerakan harga suatu instrumen finansial yaitu Analisis
Fundamental dan Analisis Teknikal (Wira, 2011).
2.2.1 Analisis Fundamental
Analisis fundamental memperhitungkan berbagai faktor, seperti kondisi
makro, dapat diketahui kondisi ekonomi negara tersebut, apakah masih sehat atau
tidak. Sedangkan dalam skala mikro, analisis fundamental digunakan untuk
mengetahui valuasi suatu instrumen finansial, berapa nominal harga yang layak
bagi suatu mata uang, saham, atau komoditas tertentu. Pada prinsipnya suatu
analisis fundamental digunakan untuk mengetahui apakah suatu harga terlalu
mahal atau terlalu murah (Wira, 2011).
2.2.2 Analisis Teknikal
Analisis teknikal adalah teknik yang menganalisa fluktuasi harga dalam
rentang waktu tertentu atau dalam hubungannya dengan faktor lain misal volume
transaksi. Karena itu analisis teknikal banyak menggunakan grafik. Dari
pergerakan tersebut akan terlihat pola tertentu yang dapat dipakai sebagai dasar
untuk melakukan pembelian atau penjualan. Pada dasarnya analisis teknikal
digunakan untuk menentukan apakah suatu harga sudah jenuh beli atau jenuh jual
(Wira, 2011).
2.3 Jaringan Syaraf Tiruan
Jaringan Syaraf Tiruan adalah system pemroses informasi yang memiliki
karakteristik mirip dengan jaringan syaraf biologi. Jaringan Syaraf Tiruan
dibentuk sebagai generalisasi model matematika dari jaringan syaraf biologi,
dengan asumsi menurut Jong (2009) bahwa :
Pemrosesan informasi terjadi pada banyak elemen sederhana
Sinyal dikirimkan di antara neuron-neuron melalui
penghubung-penghubung.
Penghubung antar neuron memiliki bobot yang akan memperkuat
atau memperlemah sinyal.
Untuk menentukan output, setiap neuron menggunakan fungsi
aktivasi (biasanya bukan fungsi linear) yang dikenakan pada
jumlahan input yang diterima. Besarnya output ini selanjutnya
dibandingkan dengan suatu batas ambang.
2.3.1 Arsitektur Jaringan
Beberapa arsitektur jaringan yang sering digunakan dalam Jaringan Syaraf
Tiruan menurut Jong (2009) antara lain :
a. Jaringan Layar Tunggal (Single Layer Network)
Dalam jaringan ini, sekumpulan input neuron dihubungkan
langsung dengan sekumpulan outputnya. Dalam beberapa model, hanya
ada sebuah unit neuron output.
Gambar di atas menunjukkan arsitektur jaringan dengan n unit
input(X) dan m unit output(Y).
Dalam jaringan ini semua unit input dihubungkan dengan semua
unit output, meskipun dengan bobot yang berbeda. Tidak ada unit input
yang dihubungkan dengan unit input lainnya begitu juga dengan unit
output.
Besaran w menyatakan bobot hubungan antara unit input dengan
unit output. Bobot-bobot ini saling independen. Selama proses pelatihan,
bobot-bobot tersebut akan dimodifikasi untuk meningkatkan keakuratan
hasil. Model semacam ini tepat digunakan untuk pengenalan pola karena
kesederhanaannya.
b. Jaringan Layar Jamak (Multi Layer Network)
Jaringan layar jamak merupakan perluasan dari layar tunggal.
Dalam jaringan ini, selain unit input dan output, ada unit lain yang biasa
disebut layar tersembunyi. Dimungkinkan pula ada beberapa layar
tersembunyi. Sama seperti unit input dan output, unit-unit dalam satu layar
tidak saling berhubungan.
Gambar di atas adalah jaringan dengan n buat unit input(X), sebuah
layar tersembunyi(Z) yang terdiri dari p buah unit, dan m buah unit
output(Y).
Jaringan layar jamak dapat menyelesaikan masalah yang lebih
kompleks dibandingkan dengan layar tunggal, meskipun kadangkala
proses pelatihan lebih kompleks dan lama.
c. Jaringan Reccurent
Model jaringan recurrent mirip dengan jaringan layar tunggal
ataupun ganda. Hanya saja, ada neuron output yang memberikan sinyal
pada unit input atau sering disebut dengan feedback loop.
2.3.2 Fungsi Aktivasi, Bias, dan Threshold
Dalam jaringan syaraf tiruan, fungsi aktivasi dipakai untuk menentukan
keluaran suatu neuron. Argumen fungsi aktivasi adalah net masukan (kombinasi
linear masukan dan bobotnya).
Beberapa fungsi aktivasi yang sering dipakai adalah sebagai berikut :
a. Fungsi Threshold (Batas Ambang)
f(x) = 1 jika x a dan f(x) = 0 jika x < a ( 2.1 )
Untuk beberapa kasus, fungsi threshold yang dibuat tidak berharga
0 atau 1, tapi berharga -1 atau 1 (sering disebut threshold bipolar).
Sehingga :
b. Fungsi Sigmoid
f(x) =
( 2.3 )
Fungsi sigmoid sering dipakai karena nilai fungsinya yang terletak
antara 0 dan 1 dan dapat diturunkan dengan mudah.
f`(x) = f(x) (1-f(x)) ( 2.4 )
c. Fungsi Identitas
f(x) = x ( 2.5 )
Fungsi identitas sering dipakai apabila kita menginginkan keluaran
jaringan berupa sembarang bilangan riil bukan hanya pada range [0,1] atau
[-1,1].
Kadang-kadang dalam jaringan ditambahkan pula sebuah unit masukan
yang nilainya selalu = 1. Unit yang sedemikian itu disebut bias. Bias dapat
dipandang sebagai sebuah unit input yang nilainya = 1. Bias berfungsi untuk
mengubah nilai threshold menjadi 0. Jika melibatkan bias maka keluaran unit
penjumlah adalah net = b + ∑
Fungsi aktivasi threshold menjadi :
f(net) = 1 jika net 0 dan f(net) = -1 jika net < 0
2.3.3 Backpropagation (Propagasi Balik)
Backpropagation merupakan suatu teknik pembelajaran atau pelatihan
jenis supervised learning yang paling banyak digunakan. Metode ini merupakan
salah satu metode yang sangat baik dalam menangani masalah pengenalan
pola-pola kompleks. Di dalam jaringan ini, setiap unit yang berada di lapisan input
berhubungan dengan setiap unit yang ada di lapisan tersembunyi. Sedangkan
setiap unit di lapisan tersembunyi berhubungan dengan setiap unit di lapisan
output. Arsitektur backpropagation termasuk dalam jaringan layar jamak.
Dalam pola pelatihannya, jaringan ini akan diberi inputan yang akan
diteruskan ke dalam layar tersembunyi dan menuju hingga output. Ketika hasil
keluaran ternyata tidak sesuai dengan harapan maka keluaran akan kembali
disebarkan mundur (backward) pada lapisan tersembunyi hingga menuju input.
Tahap selanjutnya adalah dengan melakukan perubahan bobot. Iterasi ini terus
dilakukan hingga ditemukan penyelesaian yang optimal (Jong, 2009).
Algoritma pelatihan jaringan backpropagation terdiri dari 3 tahapan utama
yaitu :
1. Tahap Propagasi Maju
2. Tahap Propagasi Mundur
3. Tahap Perubahan Bobot
Secara terperinci algoritma dari pelatihan jaringan backpropagation adalah
sebagai berikut :
0. Inisialisasi semua bobot dengan bilangan acak kecil
1. Jika kondisi penghentian belum terpenuhi, lakukan langkah 2-9
2. Untuk setiap pasang data pelatihan, lakukan langkah 3-8
3. Tiap unit masukan menerima sinyal dan meneruskannya ke unit
tersembunyi di atasnya
4. Hitung semua keluaran di unit tersembunyi Z
Znet j = + ∑ ( 2.6 )
Zj = f(Z_net j) =
( 2.7 )
5. Hitung semua keluaran jaringan di unit Y
Ynet k = + ∑ ( 2.8 )
Yk = f(Y_net k) =
( 2.9 )
6. Hitung faktor error lapisan output ( ) unit keluaran berdasarkan
kesalahan di setiap unit keluaran Y
= ( - ) (1 - ) ( 2.10 )
merupakan unit kesalahan yang akan dipakai dalam perubahan
Hitung suku perubahan bobot Wkj (yang akan dipakai nanti
merubah bobot Wkj) dengan laju percepatan
= . . Zj ( 2.11 )
7. Hitung faktor error lapisan tersembunyi ( ) unit tersembunyi
berdasarkan kesalahan di setiap unit tersembunyi Z
= ∑ ( 2.12 )
Faktor unit tersembunyi :
j = _net j . Zj (1 – Zj) ( 2.13 )
Hitung suku perubahan bobot Vji (yang akan dipakai nanti
merubah bobot Vji)
= . . Xi ( 2.14 )
8. Hitung semua perubahan bobot
Perubahan bobot garis yang menuju ke unit keluaran :
Wkj (baru) = Wkj (lama) +
Perubahan bobot garis yang menuju ke unit tersembunyi :
Vji (baru) = Vji (lama) +
9. Uji kondisi berhenti (akhir iterasi)
2.3.4 Normalisasi
Normalisasi adalah suatu teknik yang dilakukan untuk mengorganisasi
sekelompok data ke dalam bentuk yang lebih stabil agar kelompok data tersebut
2.3.5 Denormalisasi
Denormalisasi adalah suatu teknik yang memiliki fungsi kebalikan dari
proses normalisasi. Sehingga nilai data yang sudah stabil atau normal kembali
dijabarkan untuk keperluan peningkatan performa dari suatu kelompok data.
2.4 Logika Kabur (Fuzzy Logic)
Logika kabur atau fuzzy logic adalah suatu cara yang tepat untuk
memetakan suatu ruang input ke dalam suatu ruang output. Titik awal dari konsep
modern mengenai ketidak pastian diperkenalkan oleh Lofti A Zadeh di mana dia
memperkenalkan teori yang memiliki banyak obyek dari himpunan fuzzy yang
memiliki batasan yang tidak presisi dan keanggotaan dalam himpunan fuzzy bukan
dalam bentuk logika benar atau salah tapi dinyatakan dalam derajat. Logika kabur
berkenaan dengan semantic dari suatu kejadian, fenomena atau pernyataan itu
sendiri (Susilo, 2006).
2.4.1 Konsep Logika Kabur
Logika kabur memberikan suatu pemecahan masalah terhadap persoalan
yang tidak pasti. Dikarenakan logika konvensional yang hanya berpendapat
bahwa logika benar atau logika salah tidak dapat mengatasi kejadian yang ada di
dunia nyata. Untuk mengatasi masalah tersebut maka dikembangkanlah ilmu
logika kabur. Sehingga bila dinilai dalam bentuk angka, posisi logika kabur ada di
antara 0 dan 1, di mana 0 adalah logika salah dan 1 adalah logika benar (Susilo,
2.4.2 Fuzzyfikasi
Fuzzyfikasi adalah proses yang dilakukan untuk memetakan variabel
nyata ke dalam variabel kabur.. Fuzzyfikasi digunakan ketika variabel yang akan
digunakan belum berada dalam nilai kabur. Pemetaan dilakukan dengan bantuan
model dari fungsi keanggotaan agar dapat diketahui besar masukan tersebut
(derajat keanggotaan) (Kusumadewi, 2010).
2.4.3 Fungsi Keanggotaan
Fungsi keanggotaan adalah suatu kurva yang menunjukkan pemetaan
titik-titik input data ke dalam nilai keanggotaannya. Salah satu cara yang dapat
digunakan untuk mendapatkan nilai keanggotaan adalah dengan melalui
pendekatan fungsi (Kusumadewi, 2010).
2.4.4 Reperesentasi Kurva-S
Kurva-S atau kurva sigmoid adalah kurva yang berhubungan dengan
kenaikan dan penurunan permukaan secara tak linear. Kurva-S untuk
pertumbuhan akan bergerak dari sisi paling kiri dengan nilai keanggotaan = 0 ke
sisi paling kanan dengan nilai keanggotaan = 1. Fungsi keanggotaannya akan
tertumpu pada 50% nilai keanggotaannya. Sedangkan kurva-S untuk penyusutan
akan bergerak dari sisi paling kiri dengan nilai keanggotaan = 1 ke sisi paling
Kurva-S didefinisikan dengan menggunakan 3 parameter, yaitu nilai
keanggotaan nol, nilai keanggotaan lengkap, dan titik infleksi yaitu titik yang
memiliki domain 50% benar (Kusumadewi, 2010).
Gambar 2.5 Gambar Kurva-S atau Kurva Sigmoid (Kusumadewi, 2010)
2.5 Jaringan Syaraf Tiruan dan Logika Kabur
Jaringan Syaraf Tiruan dapat dikembangkan melalui penggabungan
dengan ilmu logika kabur. Sehingga berubah menjadi Jaringan Syaraf Kabur /
Fuzzy Neural Network. Dalam implementasinya, yang digunakan adalah arsitektur
jaringan dari Backpropagation dengan perhitungan di dalamnya melibatkan
BAB 3
METODOLOGI PENELITIAN
Pada bab ini akan dibahas mengenai cara kerja algoritma yang digunakan
dan proses yang akan dibangun untuk melakukan perhitungan prediksi harga
saham.
3.1 Data
Data yang digunakan dalam penelitian ini adalah harga saham penutupan
harian dari tahun 2011 hingga tahun 2014 untuk saham-saham berikut :
1. Indeks Harga Saham Gabungan Indonesia
2. Saham Bank BCA
3. Saham Astra Argo Lestari Tbk
4. Saham Gudang Garam
Seluruh data saham yang digunakan diambil dari website
finance.yahoo.com kemudian diunduh dan disimpan ke dalam format Excel
dengan menghilangkan harga pembukaan, harga tertinggi, dan harga terendah tiap
harinya sehingga siap digunakan.
Data tersebut akan diambil dan akan dibagi ke dalam data yang digunakan
untuk pelatihan dan pengujian dalam jaringan syaraf tiruan. Untuk input dari data
pelatihan akan dilakukan fuzzifikasi harga saham ke dalam nilai kabur dan target
keluaran akan dinormalisasi. Pada saat melakukan pengujian data input juga akan
3.2. Metode Penelitian
3.2.1. Algoritma dan Langkah Penelitian
Pada penelitian ini algoritma yang akan digunakan untuk memprediksi
harga saham adalah algoritma jaringan syaraf tiruan dan logika kabur.
Algoritma jaringan syaraf tiruan yang akan digunakan adalah propagasi balik,
sedangkan logika kabur akan digunakan untuk mengubah harga saham
menjadi nilai kabur dengan menggunakan perhitungan kurva-S.
Langkah penelitian yang akan dilakukan untuk melakukan prediksi
terhadap harga saham adalah sebagai berikut :
1. Memilih Data Saham yang akan digunakan.
2. Menentukan tanggal yang harga sahamnya akan diprediksi melalui
pengujian sistem.
3. Menentukan data input pelatihan, target pelatihan, data input
pengujian.
4. Data input pelatihan diubah ke dalam nilai kabur dengan
perhitungan kurva-S
5. Target pelatihan diubah ke dalam nilai normalisasi.
6. Data pelatihan dimasukkan ke dalam arsitektur jaringan syaraf
tiruan propagasi balik untuk dilakukan pelatihan terhadap input
pelatihan dan target pelatihan.
7. Data input pengujian diubah ke dalam nilai kabur dengan
perhitungan kurva-S.
8. Data pengujian dimasukkan ke dalam arsitektur jaringan syaraf
9. Hasil output dari pengujian akan didapat dan nilai didenormalisasi
sehingga akan didapat nilai hasil prediksi harga saham pada tanggal
yang telah ditentukan di awal.
3.2.2. Arsitektur Jaringan
Berikut ini adalah arsitektur jaringan awal yang akan digunakan untuk
melakukan pengujian terhadap system prediksi harga saham yang dibangun :
Gambar 3.1 Arsitektur Jaringan yang Dibangun
Arsitektur jaringan awal yang akan digunakan dimulai dengan adanya
input 50 data yang akan dimasukkan ke dalam proses fuzzyfikasi dengan
menggunakan kurva-S untuk mendapatkan nilai kabur. Nilai kabur yang 50 Data Input
50 Data Nilai Kabur 50 Neuron
Fuzzyfikasi
Kurva-S
dihasilkan akan dimasukkan ke dalam tahap pelatihan dengan jumlah neuron
50 dan fungsi transfer logsig yang akan menghasilkan 1 nilai output.
3.3. Pengujian Sistem
Dalam penelitian ini dilakukan evaluasi terhadap hasil pengujian dengan
cara membandingkan nilai output hasil dari pengujian di dalam sistem dengan
nilai nyata harga saham yang sudah ada. Sehingga sistem juga akan dapat
membaca nilai nyata harga saham dari tanggal yang sudah ditentukan dan
menghitung selisih nilai dengan output hasil pengujian. Dari selisih nilai tersebut
akan didapat persentase akurasi dari sistem yang ada.
3.4. Diagram Blok
Gambar 3.2 Diagram Proses
Pada proses yang akan dilakukan pada pengujian data yang diinput akan
diubah ke dalam bentuk kabur dengan melalui proses fuzzyfikasi. Nilai kabur
yang didapat akan dimasukkan ke dalam proses backpropagation untuk
mendapatkan nilai output yang tentunya masih dalam bentuk kabur. Output kabur
INPUT DATA FUZZYFIKASI BACKPROPAGATION
yang dihasilkan akan diubah ke dalam nilai normal melalui proses denormalisasi
BAB 4
IMPLEMENTASI DAN ANALISIS HASIL
Pada bab ini berisikan tentang implementasi dari algoritma yang sudah
digunakan serta analisa terhadap hasil prediksi keluaran sistem.
4.1 Implementasi Sistem
Gambar 4.1 Tampilan Sistem
4.2 Pengujian
Pada saat melakukan implementasi sistem dilakukan pula beberapa kali
pengujian untuk mendapatkan hasil yang paling optimal dimulai dari menguji dan
merubah jaringan, delay data, hingga jumlah data train. Semua ini dilakukan
4.2.1 Optimalisasi Jaringan
Pada proses optimalisasi jaringan ini akan digunakan data
pelatihan sebanyak 900 data dengan delay 50 data dan total epoch
1000 kali. Berikut hasil dari proses optimalisasi jaringan yang
dilakukan :
Hidden Layer = 1 ; Fungsi Transfer = Logsig
Metode Train = traingdm ; Learning Rate = 0,1
Tabel 4.1 Tabel Pengujian 1 Neuron
Kombinasi Jumlah Neuron Rataan Akurasi
1 50 85,4 %
2 100 83,8 %
Hidden Layer = 2
Fungsi Transfer Hidden Layer 1 = Tansig
Fungsi Transfer Hidden Layer 2 = Logsig
Metode Train = traingd ; Learning Rate = 0,1
Tabel 4.2 Tabel Pengujian 2 Neuron
Hidden Layer = 2
Neuron Hidden Layer 1 = 50 ; Fungsi Transfer = Logsig
Neuron Hidden Layer 2 = 50 ; Fungsi Transfer = Logsig
Metode Train = traingd
Tabel 4.3 Tabel Pengujian Learning Rate
Kombinasi Learning Rate Rataan Akurasi
5 0,1 86,3 %
6 0,5 76,8 %
7 0,05 86,3 %
8 0,01 87, 4 %
Hidden Layer = 2
Fungsi Transfer Hidden Layer 1 = Logsig
Fungsi Transfer Hidden Layer 2 = Logsig
Metode Train = traincgf
Tabel 4.4 Tabel Pengujian Jumlah Neuron dan Learning Rate
Kombinasi
Neuron Hidden Layer 2 = 100 ; Fungsi Transfer = Logsig
Learning Rate = 0,01
Tabel 4.5 Tabel Pengujian Metode Train
Kombinasi Metode Train Rataan Akurasi 12 trainscg 86,9 %
13 traincgb X
14 traingdm X
15 trainoss X
16 traincgp X
Sehingga dari proses pengujian yang dilakukan didapatkan
hasil dalam bentuk grafik sebagai berikut :
Gambar 4.2 Grafik Akurasi Pengujian Jaringan
4.2.2 Optimalisasi Delay pada Data
Pada proses ini akan dilakukan pengujian terhadap beberapa delay
untuk menemukan delay yang paling optimal untuk system yang akan
digunakan. Hasil yang didapat adalah sebagai berikut :
Hidden Layer = 2
Neuron Hidden Layer 1 = 100 ; Fungsi Transfer = Logsig
Neuron Hidden Layer 2 = 100 ; Fungsi Transfer 2 = Logsig
Metode Training = traingd ; Epoch = 1000 ; Learning Rate = 0,01
Tabel 4.6 Tabel Pengujian Jumlah Delay
Kombinasi Delay Rataan Akurasi
1 10 86,2 %
Dari proses pengujian untuk delay yang dilakukan didapatkan hasil
dalam bentuk grafik sebagai berikut :
Gambar 4.3 Grafik Akurasi Pengujian Delay
0%
Delay 10 Delay 20 Delay 30 Delay 40 Delay 50 Delay 60 Delay 100
Akurasi
4.2.3 Optimalisasi Penggunaan Data Training
Pada proses ini dilakukan pengujian terhadap beberapa
penggunaan data pelatihan atau training untuk menemukan jumlah data
pelatihan atau training yang paling optimal untuk sistem yang akan
digunakan. Hasil yang didapat adalah sebagai berikut :
Hidden Layer = 2
Neuron Hidden Layer 1 = 100 ; Fungsi Transfer = Logsig
Neuron Hidden Layer 2 = 100 ; Fungsi Transfer 2 = Logsig
Metode Training = traingd
Learning Rate = 0,01 ; Epoch = 1000
Delay = 50
Tabel 4.7 Tabel Pengujian Jumlah Data Train
Kombinasi Jumlah Data Train Rataan Akurasi
1 900 93,4 %
2 600 94,3 %
3 500 98,3 %
Dari proses pengujian untuk menentukan jumlah data pelatihan
atau training yang dilakukan didapatkan hasil dalam bentuk grafik sebagai
berikut :
Gambar 4.4 Grafik Pengujian Jumlah Data Train
4.2.4 Pengujian Terhadap Sistem
Dalam proses pengujian ini dilakukan pengujian terhadap sistem
yang bertujuan untuk mengetahui kapabilitas sistem yang dibangun
terhadap beragam data. Pada pengujian ini diambil 500 data untuk proses
pelatihan dan 50 data untuk pengujian. Dalam proses ini akan dilakukan 11
kali pengujian dengan data tes yang berbeda-beda. Hasil dari pengujian
sistem adalah sebagai berikut :
90% 92% 94% 96% 98% 100%
Data Train 900 Data Train 600 Data Train 500 Data Train 400
Akurasi
Tabel 4.8 Tabel Pengujian Sistem
Percobaan Data Pengujian Rataan Akurasi 1 1 hingga 50 98,3 %
2 51 hingga 100 95,4 %
3 101 hingga 150 97,3 %
4 151 hingga 200 97,9 %
5 201 hingga 250 96,6 %
6 251 hingga 300 97,1 %
7 301 hingga 350 96,9 %
8 351 hingga 400 96,7 %
9 401 hingga 450 97,2 %
10 451 hingga 500 95,7 %
11 501 hingga 550 98,5 %
4.2.5 Pengujian Menggunakan Data Pelatihan Lampau
Dalam proses pengujian ini dilakukan pengujian terhadap sistem
dengan menggunakan data pelatihan dan data pengujian yang tidak berurut
serta data pelatihan yang akan digunakan berselisih 1 tahun dengan data
pengujian yang digunakan. Tujuan dari pengujian ini adalah untuk
mengetahui kemampuan sistem untuk melakukan prediksi dengan
menggunakan data pelatihan yang tidak update. Pada pengujian ini diambil
500 data dari awal tahun 2011 untuk proses pelatihan dan 50 data untuk
Tabel 4.9 Tabel Pengujian Menggunakan Data Pelatihan Lampau
Percobaan Akurasi (%)
1 83,2
2 84,9
3 79,7
4 88,4
5 81,6
Rataan Akurasi = 83,6 %
4.2.6 Pengujian Menggunakan Fungsi Keanggotaan Liner
Dalam proses pengujian ini dilakukan pengujian dengan
menggunakan fungsi keanggotaan linear. Tujuan dari pengujian ini adalah
untuk membandingkan hasil yang didapat sistem dengan proses
fuzzyfikasi menggunakan fungsi keanggotaan linear dan fungsi
keanggotaan kurva-S. Sehingga akan didapat kesimpulan mengenai rumus
fuzzyfikasi yang paling sesuai untuk data yang digunakan. Hasil dari
pengujian ini dan perbandingan dengan hasil menggunakan fungsi
Tabel 4.10 Tabel Perbandingan Pengujian Menggunakan
Fungsi Keanggotaan Linear dan Fungsi Keanggotaan Kurva-S
Percobaan
Setelah semua pengujian selesai dilakukan, didapat kombinasi dan
spesifikasi terbaik untuk jaringan yang dibangun yaitu :
Hidden Layer = 2 ; Output = 1
Neuron Hidden Layer 1 = 100 ; Neuron Hidden Layer 2 = 100
Fungsi Transfer Hidden Layer 1 = Logsig
Fungsi Transfer Hidden Layer 2 = Logsig
Fungsi Transfer Output = Purelin
Metode Training = traincgf
Data Train = 500 ; Delay = 50
Gambar 4.5 Gambar Tampilan Arsitektur Jaringan dan Pelatihan Optimal
Hasil yang didapat dari pengujian sangat baik dengan akurasi rata-rata
mencapai 98%. Hasil ini didapat dengan jumlah data pelatihan yang tidak banyak
yaitu hanya 500 data saja. Hal ini dikarenakan data saham pada rentang 500 hari
adalah yang paling optimal. Sehingga data saham tidak terlalu lama yang dapat
mengakibatkan perbedaan / margin yang terlalu besar antara data tertinggi dan
terendah yang akan berdampak pada buruknya hasil fuzzyfikasi. Dan juga data
saham tidak terlalu pendek sehingga Jaringan Syaraf Tiruan masih dapat
membaca pola dengan baik.
Untuk data pengujian didapat hasil optimal dengan 50 delay, sehingga data
pengujian juga menjadi 50 saja. Hal ini disebabkan oleh pergerakan saham yang
cenderung lebih fluktuatif apabila lebih dari 50 data. Bisa dikatakan 50 data
adalah sekitar 2 bulan pergerakan saham. Sehingga melalui 2 bulan saja sistem
sudah dapat membaca pola dan menyesuaikan dengan data pelatihan. Apabila data
yang digunakan kurang dari 50 data atau kurang dari 2 bulan pergerakan saham
terbukti sistem belum bisa membaca secara maksimal, sedangkan apabila lebih
dari 50 data atau 2 bulan maka pola pergerakan saham sudah cenderung berubah
lebih fluktuatif yang mengakibatkan sistem juga mengalami penurunan
kemampuan untuk membaca pola yang ada.
Saat melakukan pengujian terhadap sistem terdapat hal yang menarik.
Ketika data pengujian ada pada awal dan akhir seluruh data maka sistem bekerja
dengan sangat baik dengan memperoleh akurasi yang tinggi. Sedangkan apabila
data pengujian ada tepat sebelum data awal dan data akhir didapat akurasi yang
paling rendah di antara pengujian lainnya. Hal ini bisa jadi disebabkan karena data
pelatihan yang terpotong di awal dan akhir data sehingga tidak terbaca dan tidak
membentuk pola dengan baik. Sebaliknya ketika pengujian ada di awal dan akhir
rangkaian data maka sistem dapat membaca dengan baik, karena pergerakan data
saham yang cenderung bergerak kontinu sehingga ketika data pelatihan sama
sekali tidak mengalami perpotongan maka hasil akan menjadi optimal. Hal ini
dipertegas dengan pengujian yang dilakukan menggunakan data pelatihan lampau.
Hasil dari pengujian dengan data pelatihan lampau menunjukkan kelemahan
untuk pelatihan adalah data yang sudah terlalu lampau dikarenakan pergerakan
saham sudah tidak sama lagi dengan keadaan terbaru.
Terakhir ketika dilakukan pengujian dengan menggunakan proses
fuzzyfikasi yang berbeda yaitu dengan fungsi keanggotaan linear didapat hasil
yang cukup baik namun tetap tidak lebih baik dibandingkan dengan fungsi
keanggotaan kurva-S. Hal ini dikarenakan pergerakan saham yang dinamis dan
sangat berbeda dengan ciri kurva linear yang bergerak cenderung stabil
BAB 5
PENUTUP
5.1 Kesimpulan
Berdasarkan hasil análisis, pengujian, dan implementasi sistem didapatkan
kesimpulan sebagai berikut :
a. Sistem Prediksi Harga Saham Menggunakan Algoritma Fuzzy Neural
Network ini dapat memprediksi harga saham dengan cukup akurat
dengan persentase akurasi mencapai 98%.
b. Kombinasi Backpropagation Jaringan Syaraf Tiruan dengan Logika
Kabur menggunakan fungsi keanggotaan kurva-S dapat menghasilkan
hasil yang memuaskan.
c. Arsitektur optimal untuk sistem yang didapat adalah dengan spesifikasi
jaringan 2 layer tersembunyi masing-masing memiliki 100 neuron
dengan fungsi transfer masing-masing adalah logsig. Metode training
yang digunakan adalah traincgf dengan jumlah epoch 1000 dan learning
rate 0,01. Jumlah data pelatihan yang digunakan adalah 500 data dengan
delay 50 data.
d. Kekurangan sistem ini adalah selisih harga saham hasil prediksi dengan
harga real masih cukup besar apabila dilihat secara nilai real. Hal ini
dikarenakan harga saham yang sudah cukup tinggi sehingga selisih 1%
saja bisa menghasilkan selisih harga di atas 50 poin.
e. Sistem ini lebih bekerja baik digunakan untuk memprediksi pergerakan
saham yaitu naik atau turun dibanding dengan memprediksi harga real
5.2 Saran
Saran yang penulis dapat berikan untuk mengembangkan sistem ini adalah :
a. Pengembangan sistem dapat dilakukan dengan mengubah proses
fuzzyfikasi dengan melakukan fuzzyfikasi di tiap perpotongan delay
bukan secara keseluruhan data pelatihan seperti yang penulis lakukan.
b. Pengembangan dari sisi tampilan juga dapat dilakukan untuk
memudahkan pengguna memilih langsung jenis saham yang ingin
diprediksi.
c. Algoritma Logika Kabur bisa digunakan lebih banyak sehingga
menghilangkan proses normalisasi dan denormalisasi lalu digantikan
DAFTAR PUSTAKA
Brockwell, P. J dan Davis, R. A. (1991), Time Series: Theory and Methods.
Second Editon, New York: Springer.
Chauhan,B., Bidave,U., Gangathade,A., Kale,S. Januari 2014, “Stock Market
Prediction Using Artificial Neural Network”. IJCSI International Journal
of Computer Science Issues. Volume 5, No 1 , 17 Oktober 2014.
Galavi,H. dan Shui,L.T. Mei 2012, “Neuro-Fuzzy Modelling and Forecasting in
Water Resources”. Scientific Research and Essays. Volume 7, No 24, 25
November 2014.
Gately, Edward J. (1996), “Neural Networks for Financial Forecasting”. New
York : John Wiley & Sons.
Granger, C. e Morgenstern, O. (1970), Predictability of Stock Market Prices.
Massachusetts: Health Lexington.
Hagan,M.T., Demuth,H.B., Beale,M.H. (1996). Neural Network Design. Boston:
PWS Publishing Company.
Hemanth,K., Prashanth,K., Nirmala,T., Patil,S.B. Juli 2012, “Neuro Fuzzy based
Techniques for Predicting Stock Trends”. IJCSI International Journal of
Computer Science Issues. Volume 9, No 3, 11 April 2014.
Hendarto, Kusumarsono. (2005). Belajar Trading. Yogyakarta: Andi.
Jong, J.S. (2009). Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan
Matlab. Yogyakarta: Andi.
Kusumadewi, S. dan Hartati, S. (2010). Neuro-Fuzzy Integrasi Sistem Fuzzy dan
Naba, Agus Eng. (2009). Belajar Cepat Fuzzy Logic Menggunakan Matlab.
Yogyakarta: Andi.
Susilo, Frans. (2006). Himpunan dan Logika Kabur Serta Aplikasinya.
Yogyakarta: Graha Ilmu.
Setiawan, Wahyudi, November 2008, “Prediksi Harga Saham Menggunakan
Jaringan Syaraf Tiruan Multilayer Feedforward Network Dengan
Algoritma Backpropagation”. Konferensi Nasional Sistem dan Informatika
2008, 18 November 2014.
Wira, Desmond. (2011). Analisis Teknikal Untuk Profit Maksimal. Jakarta:
LAMPIRAN
1. Kode Program Kelas GUI
function varargout = NeuroFuzzyGUI(varargin)
% NEUROFUZZYGUI MATLAB code for NeuroFuzzyGUI.fig
% NEUROFUZZYGUI, by itself, creates a new NEUROFUZZYGUI or
raises the existing
% NEUROFUZZYGUI('CALLBACK',hObject,eventData,handles,...)
calls the local
% function named CALLBACK in NEUROFUZZYGUI.M with the given
input arguments.
%
% NEUROFUZZYGUI('Property','Value',...) creates a new
NEUROFUZZYGUI or raises the
% existing singleton*. Starting from the left, property
value pairs are
% applied to the GUI before NeuroFuzzyGUI_OpeningFcn gets
called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to NeuroFuzzyGUI_OpeningFcn
via varargin.
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help NeuroFuzzyGUI
% Last Modified by GUIDE v2.5 23-Feb-2015 20:04:29
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% --- Executes just before NeuroFuzzyGUI is made visible.
function NeuroFuzzyGUI_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to NeuroFuzzyGUI (see
VARARGIN)
% Choose default command line output for NeuroFuzzyGUI
handles.output = hObject;
clc;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes NeuroFuzzyGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = NeuroFuzzyGUI_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on selection change in jenisSaham.
function jenisSaham_Callback(hObject, eventdata, handles)
% hObject handle to jenisSaham (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns
jenisSaham contents as cell array
% contents{get(hObject,'Value')} returns selected item from
jenisSaham
% --- Executes during object creation, after setting all
properties.
function jenisSaham_CreateFcn(hObject, eventdata, handles)
% hObject handle to jenisSaham (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles empty - handles not created until after all
CreateFcns called
% Hint: popupmenu controls usually have a white background on
Windows.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function tanggalSaham_Callback(hObject, eventdata, handles)
% hObject handle to tanggalSaham (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of tanggalSaham as
text
% str2double(get(hObject,'String')) returns contents of
tanggalSaham as a double
% --- Executes during object creation, after setting all
properties.
function tanggalSaham_CreateFcn(hObject, eventdata, handles)
% hObject handle to tanggalSaham (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles empty - handles not created until after all
CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in popupmenu2.
function popupmenu2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns
popupmenu2 contents as cell array
% contents{get(hObject,'Value')} returns selected item from
popupmenu2
% --- Executes during object creation, after setting all
properties.
function popupmenu2_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles empty - handles not created until after all
CreateFcns called
% Hint: popupmenu controls usually have a white background on
Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
[hargaCloseIHSG, dataTanggalIHSG] = xlsread('data\IHSG.xlsx');
tanggal=get(handles.tanggalSaham,'String');
index = indexTanggal(tanggal,dataTanggalIHSG);
hargaReal = hargaCloseIHSG(index);
%Train 500 Data | Perpotongan 50
indexAwalTrain550 = index - 550;
n=indexAwalTrain550;
for i = 1 : 550-50
for j = 1 : 50
data_train550(i,j) = hargaCloseIHSG(indexAwalTrain550);
indexAwalTrain550 = indexAwalTrain550+1;
end
target_train550(i) = hargaCloseIHSG(indexAwalTrain550);
indexAwalTrain550 = n+1;
n = n+1;
end
%_________________________________________________________________
______________________________________________________
%Fungsi untuk fuzzyfikasi data train sebelum ke data_train
data_train_min = min(data_train550');
data_train_max = max(data_train550');
titik_rendah = data_train_min + (selisih_nilai/4);
titik_tinggi = data_train_max - (selisih_nilai/4);
titik_tengah = (titik_tinggi + titik_rendah) / 2;
data_train_awal = data_train550';
assignin('base','data_train_min',data_train_min);
assignin('base','data_train_max',data_train_max);
assignin('base','selisih_nilai_train',selisih_nilai);
assignin('base','titik_rendah_train',titik_rendah);
assignin('base','titik_tinggi_train',titik_tinggi);
for x = 1 : 500
for y = 1 : 50
nilai_rendah(x,y) = titik_rendah(x);
end
end
nilai_rendah = nilai_rendah';
for x = 1 : 500
for y = 1 : 50
nilai_tinggi(x,y) = titik_tinggi(x);
end
end
nilai_tinggi = nilai_tinggi';
for x = 1 : 500
for y = 1 : 50
nilai_tengah(x,y) = titik_tengah(x);
end
end
assignin('base','data_train',data_train);
%_________________________________________________________________
_______________________________________________________________
%Fungsi untuk normalisasi target train sebelum ke target_train
[target_train_tes,settings] = mapminmax(target_train550);
assignin('base','target_train',target_train_tes);
%_________________________________________________________________
_______________________________________________________________
indexAwalTest550 = index - 50;
indexAkhirTest550 = index - 1;
data_test550 = hargaCloseIHSG(indexAwalTest550:indexAkhirTest550);
%_________________________________________________________________
________________________________________________________________
%Fungsi untuk fuzzyfikasi data test sebelum ke data_test
data_tes_min = min(data_test550');
data_tes_max = max(data_test550');
selisih_nilai_tes = data_tes_max - data_tes_min;
titik_rendah_tes = data_tes_min + (selisih_nilai_tes/4);
titik_tinggi_tes = data_tes_max - (selisih_nilai_tes/4);
titik_tengah_tes = (titik_rendah_tes + titik_tinggi_tes) / 2;
assignin('base','data_tes_min',data_tes_min);
assignin('base','data_tes_max',data_tes_max);
assignin('base','selisih_nilai_tes',selisih_nilai_tes);
assignin('base','titik_tinggi_tes',titik_tinggi_tes);
for tes = 1 : 50
nilai_rendah_tes(tes) = titik_rendah_tes;
nilai_tinggi_tes(tes) = titik_tinggi_tes;
nilai_tengah_tes(tes) = titik_tengah_tes;
data_tes(a) =
1-(2*(((nilai_tinggi_tes(a)-data_test550(a))/(nilai_tinggi_tes(a)-nilai_rendah_tes(a)))^2));
else
data_tes(a) = 0.5;
end
end
data_tes = data_tes';
assignin('base','data_tes',data_tes);
%_________________________________________________________________
_______________________________________________________
%JST550
fungsi = Neurofuzzy;
[test] =
fungsi.backpropagation(data_train,target_train_tes,data_tes);
assignin('base','test',test);
%Fungsi untuk Denormalisasi Hasil Test
nilai_hasil_test = mapminmax.reverse(test,settings);
set(handles.tabelPrediksi,'Data',nilai_hasil_test);
set(handles.tabelPrediksi,'ColumnName','500 Data Train');
set(handles.tabelPrediksi,'RowName','IHSG');
%_________________________________________________________________
%Akurasi
target_hasil_tes = hargaCloseIHSG(index);
assignin('base','target_hasil_tes',target_hasil_tes);
[akurasi] = fungsi.akurasi(target_hasil_tes,nilai_hasil_test);
assignin('base','akurasi',akurasi);
set(handles.tabelError,'Data',akurasi);
set(handles.tabelError,'ColumnName','Akurasi(%)');
set(handles.tabelError,'RowName','IHSG');
function [index] = indexTanggal(tanggal,dataTanggal)
jumlah = size(dataTanggal,1);
for i=1:jumlah
if strcmp(dataTanggal(i,1),tanggal)
index = i;
end
2. Kode Program Kelas Neurofuzzy
function fungsi = Neurofuzzy
%UNTITLED3 Summary of this function goes here
% Detailed explanation goes here
fungsi.backpropagation=@backpropagation;
fungsi.akurasi=@akurasi;
end
function [ test ] = backpropagation(
data_train,target_train,data_test)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
net=newff(minmax(data_train),[100,100,1],{'logsig','logsig','purel
function [ akurasi ] = akurasi( output_test_target,output_test )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
error = abs(output_test_target-output_test);
akurasi = (1-(error/output_test_target))*100;
%disp(akurasi);
3. Rincian Pengujian Optimalisasi Jaringan
a. Spesifikasi Sistem Kombinasi 1 :
Hidden Layer = 1 ; Neuron = 50 ; Output = 1
Fungsi Transfer Neuron = Logsig
Fungsi Transfer Output = Purelin
Metode Training = traingd
Data Train = 900 ; Delay = 50
Epoch = 1000 ; Learning Rate = 0,1
Hasil :
Percobaan Akurasi (%)
1 85,6
2 86,1
3 84,5
4 85,2
5 85,5
Rata-Rata Akurasi = 85,4%
b. Spesifikasi Sistem Kombinasi 2 :
Hidden Layer = 1 ; Neuron = 100 ; Output = 1
Fungsi Transfer Neuron = Logsig
Fungsi Transfer Output = Purelin
Metode Training = traingd
Data Train = 900 ; Delay = 50
Hasil :
Percobaan Akurasi (%)
1 83,9
2 83,8
3 83,8
4 84,1
5 83,6
Rata-Rata Akurasi = 83,8%
c. Spesifikasi Sistem Kombinasi 3 :
Hidden Layer = 2 ; Output = 1
Neuron Hidden Layer 1 = 50 ; Neuron Hidden Layer 2 = 50
Fungsi Transfer Hidden Layer 1 = Tansig
Fungsi Transfer Hidden Layer 2 = Logsig
Fungsi Transfer Output = Purelin
Metode Training = traingd
Data Train = 900 ; Delay = 50
Epoch = 1000 ; Learning Rate = 0,1
Hasil :
Percobaan Akurasi (%)
1 86,3
2 84,3
3 84,4
5 87,2
Rata-Rata Akurasi = 85,9%
d. Spesifikasi Sistem Kombinasi 4 :
Hidden Layer = 2 ; Output = 1
Neuron Hidden Layer 1 = 100 ; Neuron Hidden Layer 2 = 100
Fungsi Transfer Hidden Layer 1 = Tansig
Fungsi Transfer Hidden Layer 2 = Logsig
Fungsi Transfer Output = Purelin
Metode Training = traingd
Data Train = 900 ; Delay = 50
Epoch = 1000 ; Learning Rate = 0,1
Hasil :
Percobaan Akurasi (%)
1 84
2 84
3 85,6
4 84
5 84
Rata-Rata Akurasi = 84,3%
e. Spesifikasi Sistem Kombinasi 5 :
Hidden Layer = 2 ; Output = 1