BAB 2 LANDASAN TEORI
2.1.
Peramalan Pada bagian ini diberikan beberapa definisi tentang peramalan dan teori-teori
mengenai metode peramalan yang digunakan. 2.1.1 Definisi Peramalan Menurut
Assauri
(1984,p1),
peramalan
merupakan
kegiatan
untuk
memperkirakan apa yang terjadi pada masa yang akan datang. Sedangkan peramalan atau forecasting menurut Levine et al. (2002, p654) adalah sebuah teknik yang dapat membantu perencanaan untuk kebutuhan masa depan berdasarkan pengalaman atau data masa lalu yang relevan. 2.1.2 Kegunaan dan Peran Peramalan Menurut Makridakis et al. (2000, p229), perencanaan adalah suatu tugas yang dilakukan sebelum mengambil tindakan. Perencanaan biasanya merupakan pengambilan keputusan yang dilakukan lebih awal, walaupun tidak semua bentuk pengambilan keputusan merupakan perencanaan. Assauri (1984,p2) menerangkan bahwa, dalam usaha mengetahui atau melihat perkembangan pada masa depan, peramalan sangat dibutuhkan untuk menentukan kapan suatu peristiwa akan terjadi atau suatu kebutuhan akan timbul. Jika perbedaan waktu dalam kegiatan tersebut panjang, dapat dipersiapkan kebijakan dan tindakan-tindakan yang perlu dilakukan. Dengan demikian dapat dikatakan bahwa peramalan merupakan dasar untuk penyusunan rencana.
8 Kegunaan dari peramalan terlihat pada saat pengambilan keputusan. Keputusan yang baik adalah keputusan yang didasarkan atas pertimbangan apa yang akan terjadi pada waktu keputusan itu dilaksanakan. Apabila kurang tepat ramalan yang disusun atau yang dibuat, maka makin kurang baiklah keputusan yang diambil. Oleh karena itu, dalam suatu perusahaan, ramalan dibutuhkan untuk memberikan informasi kepada pimpinan sebagai dasar untuk membuat suatu keputusan dalam berbagai kegiatan, seperti penjualan, permintaan dan persediaan keuangan. Dengan demikian dapat dilihat bahwa peramalan memiliki peranan yang sangat penting, baik dalam penelitian, perencanaan maupun dalam pengambilan keputusan. Tetapi dapat diperhatikan bahwa peramalan memiliki tujuan untuk memperkecil kemungkinan kesalahan. Baik tidaknya suatu ramalan sangat tergantung pada unsure atau faktor data dan metode yang digunakan. 2.1.3 Jenis-Jenis Peramalan Menurut Assauri (2002,pp. 3-4), peramalan dapat dibedakan dari berbagai segi tergantung dari cara melihatnya. Apabila dilihat dari cara penyusunannya, maka peramalan dapat dibedakan menjadi dua macam, sebagai berikut. a.
Peramalan yang subjektif, yaitu peramalan yang didasarkan atas perasaan atau intuisi dari orang yang menyusunnya. Dalam hal ini, pandangan dari orang yang menyusunnya sangat menentukan baik atau tidaknya hasil ramalan tersebut.
b. Peramalan yang objektif, adalah peramalan yang didasarkan atas data yang relevan pada masa lalu, dengan menggunakan teknik-teknik dan metodemetode dalam penganalisisan data tersebut.
9 Dilihat dari jangka waktu ramalan yang disusun, maka peramalan dapat dibedakan atas dua macam sebagai berikut. a.
Peramalan jangka panjang, yaitu peramalan yang dilakukan untuk menyusun hasil ramalan yang jangka waktunya lebih dari satu setengah tahun atau tiga semester.
b. Peramalan jangka pendek, yaitu peramalan yang dilakukan untuk penyusunan hasil ramalan dengan jangka waktu yang kurang dari satu setengah tahun, atau tiga semester. Umumnya peramalan jangka pendek didasarkan pada analisis deret waktu. Oleh karena itu, peramalan jangka pendek menggunakan teknik analisis hubungan di mana satu-satunya variabel yang mempengaruhi adalah waktu. Dalam peramalan jangka pendek selalu ditemui adanya pola musiman. Dapat terjadi bulan-bulan atau triwulan yang sama setiap tahun mempunyai nilai variabel cukup tinggi, dan pada bulan-bulan atau triwulan tertentu lainnya mempunyai nilai variabel yang cukup rendah. Oleh karena itu maka dalam peramalan jangka pendek perlu ditinjau dulu apakah deret data yang ada memiliki pola musiman. Berdasarkan sifat ramalannya, menurut Assauri (2002,pp. 3-4), ada dua pendekatan umum yang dipakai sebagai berikut. a.
Peramalan kualitatif, yaitu peramalan yang didasarkan atas data kualitatif pada masa lalu atau dengan kata lain peramalan yang didasarkan atas permikiran yang bersifat intuisi, judgement atau pendapat, dan pengetahuan serta pengalaman dari penyusunnya. Metode ini penting saat data historis tidak tersedia.
10 b. Peramalan kuantitatif, yaitu peramalan yang didasarkan pada data historis. Tujuan metode ini adalah mempelajari apa yang terjadi pada masa lalu untuk prediksi nilai-nilai yang akan datang. 2.1.4 Metode Peramalan Kuantitatif Menurut Makridakis et al. (1999, pp.19-20), metode peramalan kuantitatif dapat dibagi sebagai berikut. a.
Metode peramalan yang didasarkan atas penggunaan analisis pola hubungan antara variabel yang akan diperkirakan dengan variabel waktu, yang merupakan deret waktu atau ”time series”.
b. Metode peramalan yang didasarkan atas penggunaan analisis pola hubungan antara variabel yang akan diperkirakan dengan variabel lain yang mempengaruhinya, yang bukan waktu atau sering disebut sebagai motede korelasi atau model regresi (”causal methods”). c.
(Rosadi,2006,p1) Panel atau Pooled data, yakni tipe data yang dikumpulkan menurut urutan waktu dalam suatu rentang waktu tertentu pada sejumlah individu atau kategori.
2.1.5 Deret Waktu (Time Series) Data
time series adalah data yang dikumpulkan, dicatat atau diobservasi
berdasarkan urutan waktu, yang secara umum bertujuan untuk menemukan bentuk pola variasi dari data dimasa lampau dan menggunakan pengetahuan ini untuk melakukan peramalan terhadap sifat-sifat dari data dimasa yang akan datang (Rosadi,2005, p16). Peramalan dengan menggunakan analisis deret waktu, mendasarkan hasil ramalan yang disusun atas pola hubungan antara variabel yang dicari atau
11 diramalkan dengan variabel waktu yang merupakan satu-satunya variabel yang mempengaruhi atau bebas. Dalam peramalan dengan analisis deret waktu, dilakukan usaha untuk menemukan pola deret data historis dan kemudian mengekstrapolasikan pola tersebut untuk masa yang akan datang. Suatu langkah yang penting dalam memilih metode analisis deret waktu adalah mempertimbangkan jenis pola yang terdapat dari data observasi (Assauri,1984,p45). Menurut Rosadi (2005,p16), di dalam pola deret waktu terdapat komponen-komponen yang membangun pola data dan dikelompokan dalam empat komponen utama sebagai berikut. a.
Trend : bentuk penurunan atau pertambahan data.
b. Musiman (seasonal) : bentuknya berupa fluktuasi berulang (dan beraturan) atau naik-turunnya variabel dalam jangka waktu periode yang sama, yang ditemui setiap tahun. c.
Siklikal (cyclical) : berupa pola siklus, umumnya periode waktu relatif lebih panjang dibanding musiman.
d. Komponen tak beraturan (irregular atau random) : berupa pola acak. Sedangkan pola yang dibentuk dari komponen tersebut dapat dikelompokkan lagi ke dalam empat jenis pola data antara lain (Assauri,1984,p46): a.
Pola horizontal atau stationary, bila nilai-nilai dari data observasi berfluktuasi di sekitar nilai konstan rata-rata. Dengan demikian dapat dikatakan pola ini sebagai stationary pada rata-rata hitungnya (means). Pola jenis ini terdapat pada suatu produk yang mempunyai jumlah penjualan yang tidak menaik atau menurun selama beberapa waktu atau periode, seperti terlihat pada gambar 2.1.
12
Gambar 2.1 Pola Data Horizontal (Assauri,1984,p46) b. Pola Musiman atau seasonal, bila suatu deret waktu dipengaruhi oleh faktor musim (seperti kuartalan, bulanan, mingguan dan harian). Banyak produk yang penjualannya menunjukkan pola musiman, seperti minuman segar, ice cream, jasa angkutan, obat-obatan tertentu, dan ban mobil. Contoh pola musiman kwartalan seperti terlihat pada gambar 2.2.
Gambar 2.2 Pola Data Musiman (Assauri,1984,p46) c.
Pola siklus atau cyclical bila data observasi dipengaruhi oleh fluktuasi ekonomi jangka panjang yang berkaitan atau tergabung dengan siklus usaha (business cycle). Ada beberapa produk yang penjualannya menunjukkan pola siklus, seperti mobil sedan, besi baja, dan perkakas atau peralatan bengkel. Pola dari jenis ini seperti terdapat pada gambar 2.3.
Gambar 2.3 Pola Data Siklus (Assauri,1984,p47)
13 d. Pola trend bila ada pertambahanataukenaikan atau penurunan dari data observasi untuk jangka panjang. Pola trend ini dapat dilihat pada gambar 2.4.
Gambar 2.4 Pola Data Trend (Assauri,1984,p47) Oleh karena itu, harus dilakukan penyaringan adaptasi dengan metode yang dapat menyesuaikan pola data yang ada (Assauri,1984,p169). Menurut Levine et. al. (2002,p655), metode peramalan deret waktu melibatkan proyeksi nilai yang akan datang dari sebuah variabel berdasarkan pada pengamatan masa lalu dan sekarang dari variabel tersebut. Metode peramalan deret waktu dapat dibagi menjadi beberapa metode sebagai berikut. a. Metode smoothing. Metode ini digunakan untuk melakukan pemulusan terhadap suatu deret berkala dengan membuat rata-rata tertimbang dari sederetan data yang lalu. Metode ini sangat efektif untuk peramalan jangka pandek dan tidak membutuhkan banyak data. b. Metode Box Jenkins. Metode ini menggunakan dasar deret waktu dengan model matematis dan hanya cocok untuk jangka pendek.
14 c.
Metode Proyeksi Trend. Metode ini berdasarkan garis trend untuk suatu persamaan matematis. Cocok untuk jangka pendek maupun jangka panjang. Makin banyak data yang tersedia, hasilnya akan makin baik.
d. Metode Dekomposisi. Metode ini memisahkan tiga komponen yaitu trend, siklis, dan musiman. Metode ini cocok bagi rencana jangka pendek dan semakin banyak data yang tersedia akan semakin baik hasil peramalannya. 2.1.6 Pemilihan Metode Peramalan Deret Waktu Pola atau karakteristik data mempengaruhi teknik peramalan yang dipilih. Seringkali, pola data tersebut merupakan karakteristik inherent dari kegiatan yang sedang diteliti. Hubungan antar data dengan jangka waktu semakin jelas dengan mengamati bahwa pola trend merupakan kecenderungan jangka panjang. Sedangkan variasi musiman menunjukkan pola data yang berulang dalam satu tahun. Teknik regresi cocok untuk hampir semua pola yang dapat diidentifikasi. Dalam mengevalusi teknik-teknik yang dikaitkan dengan pola data, dapat saja diterapkan lebih dari satu teknik untuk data yang sama. Misalnya, teknik-teknik tertentu mungkin lebih akurat dalam memprediksi titik balik, sedangkan lainnya terbukti lebih handal dalam peramalan pola perubahan yang stabil. Dapat terjadi beberapa model meramalkan terlalu tinggi (overestimate) atau terlalu rendah (underestimate) dalam situasi tertentu. Selain itu, mungkin juga terjadi bahwa prediksi jangka pendek dari suatu model lebih baik dari model lain yang memiliki prediksi jangka panjang yang lebih akurat. Hakim (2001,p372) dan Rosadi (2005,pp.16-17) menggambarkan sebuah bagan seperti pada gambar 2.5 yang berisi
15 pemilihan metode peramalan deret berkala yang tepat sesuai dengan situasi dan jenis plot data yang ada.
Gambar 2.5 Pemilihan Metode Peramalan Deret Berkala (Sumber: Rosadi,2005,pp.16-17).
16 2.2 ARIMA (Autoregressive Integrated Moving Average) ARIMA merupakan model yang dikembangkan secara intensif oleh George Box dan Gwilyn Jenkins sehingga nama mereka sering disinonimkan dengan proses BoxJenkins yang diterapkan untuk analisis dan peramalan data runtun waktu (time series). Dalam membentuk model ARIMA ada beberapa langkah yang digunakan adalah sebagai berikut. a. Identifikasi model, menggunakan grafik, statistik, dan alat lainnya untuk mengenali suatu pola dan komponen model. b. Estimasi parameter dan diagnosis model, menentukan koefisien dari suatu fungsi yang tepat dan penentuan apakah suatu model akan digunakan jika valid dan pengulangan langkah dari identifikasi hingga diagnosis jika suatu model tidak valid untuk mendapatkan suatu model yang benar-benar valid. c. Aplikasi, penggunaan model yang telah diterima atau valid dalam proses peramalan.
17
Gambar 2.6 Metode Peramalan Box-Jenkins (Sumber :Assauri,1984,p128) Langkah-langkah dalam membentuk suatu model peramalan tersebut juga secara umum digunakan untuk metode-metode peramalan lainnya. Persamaannya untuk bentuk paling sederhana ARIMA(p,d,q) sebagai berikut. (1 − φ1 B)(1 − B)Yt = (1 − θ1 B)ε t
(2.2. 1)
Sedangkan bentuk umumnya untuk orde yang lebih tinggi adalah sebagai berikut.
(1 − φ1 B1 − ... − φ p B p )(1 − B) d Yt = (1 − θ1 B1 − θ 2 B 2 − ... − θ q B q )ε t
(2.2.2)
Pada persamaan (2.2.1) dapat ditulis secara simbolik dalam bentuk yang lebih compact sebagai berikut.
φ p ( B)∇ d Yt = θ q ( B)ε t ,
(2.2.3)
φ p = 1 − φ1 B1 − φ 2 B 2 − ... − φ p B p ,
(2.2.4)
dengan
18 dan
θ q = 1 − θ1 B1 − θ 2 B 2 − ... − θ q B q ,
(2.2.5)
∇ d = (1 − B) d
(2.2.6)
dan
, di mana B adalah back shift operator dan ∇ d Yt adalah diferensiasi Yt sebanyak d. Bentuk umum model ARIMA(p,d,q) menghasilkan variasi yang sangat beragam pada pola ACF dan PACF. Pada aplikasinya di dunia nyata, yang sering digunakan adalah model-model dengan nilai p, d, atau q berkisar antara 0, 1, atau 2. Karena dengan range nilai yang sangat kecil untuk p, d, atau q, sudah dapat mencakup berbagai situasi peramalan praktis. Secara umum model ARIMA dinotasikan dengan notasi ARIMA(p,d,q) dengan ordo p,d dan q di mana berturut- turut sebagai berikut. a. Ordo pertama p menunjukkan derajat dari autoregressive (AR). b. Ordo kedua d menunjukkan derajat dari integrasi atau pembeda. c. Ordo ketiga q menunjukkan derajat dari moving average (MA). 2.2.1 Model AR orde-p Secara umum, model ARIMA(p,0,0) sama dengan model AR(p) dan persamaannya dapat ditulis sebagai berikut. Yt = φ1Yt −1 + φ 2Yt − 2 + ... + φ p Yt − p + ε t
(2.2.7)
dengan notasi backshift persamaan tersebut dapat dituliskan sebagai berikut.
(1 − φ1 B1 − ... − φ p B p )Yt = ε t
(2.2.8)
19 2.2.2 Model MA orde-q Secara umum, model ARIMA(0,0,q) sama dengan model MA(q) dan persamaannya dapat ditulis sebagai berikut. Yt = ε t + θ 1ε t −1 + θ 2 ε t − 2 + ... + θ q ε t − q
(2.2.9)
dengan notasi backshift persamaan tersebut dapat dituliskan sebagai berikut.
Yt = (1 − θ1 B1 − θ 2 B 2 − ... − θ q B q )ε t
(2.2.10)
2.2.3 Model ARMA Gabungan model AR(1) dengan model MA(1), disebut model ARMA(1,1)
atau
ARIMA(1,0,1).
Model
ARMA
seharusnya
mampu
menghasilkan hasil ramalan yang lebih akurat daripada model AR maupun MA secara terpisah karena model ARMA kedua model tersebut. Model ARMA(1,1) atau model ARIMA(1,0,1) dapat dituliskan dalam persamaan berikut. Yt = φ1Yt −1 + ε t − θ1ε t −1
(2.2.11)
Dengan notasi backshift persamaan tersebut dapat dituliskan sebagai berikut. (1 − φ1 B)Yt = (1 − θ1 )ε t
(2.2.12)
Sedangkan untuk ARMA dengan orde yang lebih tinggi (ARMA (p,q) atau ARIMA(p,0,q)), persamaannya sebagai berikut. Yt = φ1Yt −1 + φ 2Yt − 2 + ... + φ p Yt − p + ε t − θ 1ε t −1 − ... − θ q ε t − q
(2.2.13)
Atau dengan operator backshift sebagai berikut.
(1 − φ1 B − φ 2 B 2 − ... − φ p B p )Yt = (1 − θ1 B − θ 2 B 2 − .... − θ q B q )ε t (2.2.14) Jika bentuk non-stasioner ditambahkan pada model ARMA, maka model umum untuk ARIMA(p,d,q) diperoleh.
20 2.3 Identifikasi Model Dalam membentuk suatu model ARIMA terdapat beberapa langkah yang dilakukan sebagai berikut. a. Pengidentifikasian model, yang dapat dilakukan dengan statistik, grafik, dan alat lainnya dalam mengenali pola. b. Estimasi parameter dan diagnosis model dari suatu fungsi yang tepat dalam menentukan apakah model yang digunakan valid atau tidak. c. Pengaplikasian dari model yang sudah diterima dalam proses peramalan. Identifikasi model untuk pemodelan data deret waktu menggunakan metode ini memerlukan perhitungan dan penggambaran dari hasil fungsi autokorelasi (ACF) dan fungsi autokorelasi parsial (PACF). Hasil perhitungan ini untuk menentukan model ARIMA apakah yang sesuai. 2.3.1 Fungsi Autokorelasi (ACF) Korelasi merupakan hubungan antara satu variabel dengan variabel lainnya. Nilai korelasi dinyatakan oleh koefisien yang nilainya bervariasi antara +1 hingga – 1. Nilai koefisien tersebut menyatakan apa yang akan terjadi pada suatu variabel jika terjadi perubahan pada variabel lainnya. Nilai koefisien yang bernilai positif menunjukkan hubungan antar variabel yang bersifat positif, yakni jika satu variabel meningkat nilainya, variabel lainnya juga akan meningkat nilainya. Sedangkan nilai koefisien yang bernilai negatif menunjukkan hubungan antar variabel yang bersifat negatif, yakni jika satu variabel meningkat nilainya, variabel lainnya akan menurun nilainya, dan sebaliknya. Bila suatu koefisien bernilai nol, berarti variabel-variabel tersebut tidak memiliki
21 hubungan. Jika terjadi peningkatan atau penurunan terhadap suatu variabel, variabel lainnya tidak akan terpengaruh oleh perubahan nilai tersebut. Koefisien autokorelasi memiliki makna yang hampir sama dengan koefisien korelasi, yakni hubungan antara dua atau lebih variabel. Pada korelasi, hubungan tersebut merupakan dua variabel yang berbeda pada waktu yang sama, sedangkan pada autokorelasi, hubungan tersebut merupakan dua variabel yang sama dalam rentang waktu yang berbeda. Autokorelasi dapat dihitung menggunakan fungsi autokorelasi (AutoCorrelation Function), ACF(k), yang dapat dinotasikan sebagai berikut. n
ACF (k ) =
∑ (Y
t =1+ k
t
− Y )(Yt − k − Y )
n
∑ (Y t =1
t
(2.3.1) −Y )
2
Secara umum, ACF digunakan untuk melihat apakah ada sifat Moving Average (MA), dari suatu deret waktu, yang dalam persamaan ARIMA direpresentasikan oleh besaran q. Besar nilai q dinyatakan sebagai banyaknya nilai ACF sejak lag 1 hingga lag ke-k secara berurut yang terletak di luar selang kepercayaan Z. Jika terdapat sifat MA, q pada umumnya bernilai 1 atau 2, sangat jarang ditemui suatu model dengan nilai q lebih dari 2. Nilai d, sebagai derajat pembeda (differencing) untuk menentukan stasisoner atau tidaknya suatu deret waktu, juga ditentukan dari nilai ACF. Bila ada nilai-nilai ACF setelah time lag ke-k untuk menentukan nilai q berada di luar selang kepercayaan Z, maka deret tersebut tidak stasioner, sehingga nilai d tidak sama dengan nol (d > 0), biasanya antara 1 atau 2, sedangkan bila nilai-nilai ACF tersebut
22 berada dalam selang kepercayaan Z, maka deret tersebut dapat dibilang stasioner, sehingga nilai d sama dengan nol (d = 0). Selang kepercayaan Z, yang besarnya ditentukan oleh derajat bebas dan selang kepercayaan (α ), dinyatakan sebagai berikut. −z
1 1 ≤ ACF (k ) ≤ z . n n
(2.3.2)
Galat standar dari ACF tersebut adalah se ACF ( k ) = 1
n
(2.3.3)
dengan n merupakan banyak pengamatan dalam deret. 2.3.2 Fungsi Autokorelasi-Parsial (PACF) Fungsi autokorelasi parsial pada lag-p adalah suatu korelasi di antara Yt dan Yt + k . PACF digunakan untuk mengidentifikasikan ada atau tidaknya sifat AR yang dinotasikan dengan p. Jika terdapat sifat AR, pada umumnya nilai PACF bernilai 1 atau 2, jarang ditemukan sifat AR bernilai lebih besar dari 2. Misalkan {Yt } adalah suatu model autoregressive yang stasioner dengan ratarata nol dan Yt + k dapat ditulis dalam model linier Yt + k = φ k 1Yt + k −1 + φ k 2Yt + k − 2 + ... + φ kk Yt + ε t + k
(2.3.4)
di mana φ ki adalah parameter ke-i dari persamaan regresi dan ε t + k adalah eror yang tidak berkorelasi dengan Yt + k − j untuk j ≥ 1 . Kalikan Yt + k − j pada kedua sisi kemudian ambil nilai ekspektasinya, maka diperoleh
γ ( j ) = φ k1γ ( j − 1) + φ k 2 γ ( j − 2) + ... + φ kk γ ( j − k ) kemudian bagi kedua sisi dengan γ (0) , sehingga diperoleh
(2.3.5)
23
ρ ( j ) = φ k1 ρ ( j − 1) + φ k 2 ρ ( j − 2) + ... + φ kk ρ ( j − k ).
(2.3.6)
Untuk j = 1,2,..., k maka diperoleh suatu sistem persamaan
ρ (1) = φ k1 ρ (0) + φ k 2 ρ (1) + ... + φ kk ρ (k − 1),
(2.3.7)
ρ (2) = φ k1 ρ (1) + φ k 2 ρ (2) + ... + φ kk ρ (k − 2),
(2.3.8)
M
ρ (k ) = φ k1 ρ (k − 1) + φ k 2 ρ (k − 1) + ... + φ kk ρ (0).
(2.3.9)
Sehingga fungsi PACF dapat dituliskan sebagai berikut:
ρ k = φ1 ρ (k − 1) + φ 2 ρ (k − 2) + ... + φ p ρ (k − p ).
(2.3.10)
di mana: k adalah time lag, dengan k =1,..., p. ρ adalah nilai dari fungsi autokorelasi (ACF). φ adalah nilai dari fungsi autokorelasi parsial (PACF). Koefisien autokorelasi parsial ber-orde n didefinisikan sebagai suatu koefisien autoregressive terakhir dari model autoregressive dengan ordo-p yaitu AR(1), AR(2), AR(3),…, AR(p) yang ditunjukkan dalam hubungan Yt = φ1Yt −1 + ε t ,
(2.3.11)
Yt = φ1Yt −1 + φ 2Yt − 2 + ε t ,
(2.3.12)
Yt = φ1Yt −1 + φ 2Yt − 2 + φ3Yt −3 + ε t ,
(2.3.13)
M Yt = φ1Yt −1 + φ 2Yt − 2 + ... + φ p −1Yt − p +1 + ε t ,
(2.3.14)
Yt = φ1Yt −1 + φ 2Yt − 2 + ... + φ p −1Yt − p +1 + φ p Yt − p + ε t ,
(2.3.15)
Misalkan {Yt } adalah model autoregressive dengan ordo-1
24 Yt = φ1Yt −1 + ε t , ε t ~ WN (0, σ 2 )
(2.3.16)
di mana AR(1) selalu bersifat dapat dibalik (invertible) yang ditunjukkan dalam Yt − φ1Yt −1 = ε t , ε t ~ WN (0, σ 2 )
dan bersifat kausal jika akar atau
(2.3.17)
1 > 1 atau | φ1 |< 1 . Maka φ1 , φ 2 ,..., φ p −1 , φ p | Z1 |
dapat dicari dengan mengalikan Yt − k pada kedua sisinya. Yt Yt − k = φ1Yt −1Yt − k + ε t Yt − k ,
(2.3.18)
Untuk keadaan kausal penerapan nilai ekspektasi E pada persamaan (2.3.18) berlaku E (Yt Yt − k ) = φ1 E (Yt −1Yt − k ) + E (Yt − k ε t ),
(2.3.19)
γ (k ) = φ1γ (k − 1), k ≥ 1
(2.3.20)
dan
sehingga diperoleh fungsi autokorelasinya
ρ (k ) = φ1 ρ (k − 1), k ≥ 1.
(2.3.21)
Dari ρ (0) = 1 diperoleh dari substitusi secara berulang ρ (k ) = a1k , k ≥ 1 , fungsi yang meluruh menuju nol untuk k → ∞ . Penetapan fungsi autokorelasi pertama dilakukan dengan membagi persamaan (2.3.20) dengan γ (k − 1) , sehingga diperoleh
φ1 = γ (k ) / γ (k − 1) ,
(2.3.22)
Sebagai contoh untuk mendapatkan nilai PACF pada time lag 1, k bernilai 1 diperoleh
ρ (1) = φ1 ρ (0), dengan ρ (0) = 1 sehingga ρ (1) = φ1 .
25 Dengan melihat hubungan dari ρ1 = φ1 , maka ρ1 = γ (k ) / γ (k − 1) merupakan cara dalam menetapkan autokorelasi pertamanya. φ1 = ρ1 dapat diartikan bahwa autokorelasi parsial yang pertama sama dengan autokorelasi yang pertama dengan nilai parameter ρ1 tidak diketahui dan nilai φ1 ditaksir dalam sampel dengan r1 (koefisien autokorelasi dengan lag-1 periode). Sedangkan untuk memperoleh nilai PACF pada time lag 2 digunakan persamaan (2.3.12) dengan k=2, diperoleh
ρ (1) = φ1 + φ2 ρ (1) dan ρ (2) = φ1 ρ (1) + φ 2
(2.3.23)
Dengan mensubtitusikan φ1 ke dalam persamaan (2.3.23) maka didapat
φ 22
ρ (1) ⎤ ⎡ 1 φ1 ⎤ ⎡ 1 ⎢ ρ (1) ρ (2)⎥ ⎢φ φ 2 ⎥ ρ (2) − ρ (1) 2 1 1 ⎦ ⎦ ⎣ ⎣ = , = = ρ (1)⎤ ⎡ 1 φ1 ⎤ 1 − ρ (1) 2 ⎡ 1 ⎢ ρ (1) 1 ⎥⎦ ⎢⎣φ1 1 ⎥⎦ ⎣
dengan cara yang sama berlaku φ kk = 0, k ≥ 2 . Untuk k= 3 dengan menggunakan persamaan (2.3.13) diperoleh
ρ (1) = φ1 + φ 2 ρ (1) + φ3 ρ (2) ρ (2) = φ1 ρ (1) + φ 2 + φ3 ρ (1)
(2.3.24)
ρ (3) = φ1 ρ (2) + φ 2 ρ (1) + φ3 Demikian seterusnya untuk time lag selanjutnya. Rumus PACF tersebut juga dapat dituliskan sebagai berikut dengan r menyatakan nilai ACF (seperti ρ pada persamaan sebelumnya dari suatu lag k)
φ11 = r1
(2.3.25)
26
φ 22
[r − r ] = [1 − r ] 2
2 1 2 1
(2.3.26)
φ k j = φ k −1, j − φ kk φ k −1,k − j ; k = 2,...; j = 1,2,..., k − 1
(2.3.27)
k −1
φ kk =
rk − ∑ φ k −1 , j rk − j j =1
k −1
1 − ∑ φ k −1 , j r j
; k = 3,...
(2.3.28)
j =1
Untuk menentukan besar nilai p yang menyatakan derajat AR, maka diperlukan perbandingan nilai PACF pada selang kepercayaan z. Selang kepercayaan tersebut mempunyai persamaan. −z
1 1 ≤ PACF (k ) ≤ z . n n
(2.3.29)
Galat standar dari PACF tersebut adalah sePACF ( k ) = 1
n
(2.3.30)
Gambar 2.7 Nilai ACF dan PACF Teoritis untuk Model AR(1) (Sumber :Assauri,1984,p149)
27
Gambar 2.8 Nilai ACF dan PACF Teoritis untuk Model MA(1) (Sumber :Assauri,1984,p150)
Proses AR(1)
AR(p)
Tabel 2.1 Pola Umum ACF dan PACF untuk Model AR dan MA Sederhana (Sumber: Box, G.E.P., Jenkins, G.M., and Reinsel, G.C,1994,p84) ACF PACF
Penurunan secara eksponensial;
Puncak di lag 1, lalu turun ke nol;
pada sisi positif jika φ1 > 0 dan
puncak positif jika φ1 > 0 , negatif
terbalik pada sisi negatif jika φ1 < 0 .
jika φ1 < 0 .
Penurunan secara eksponensial atau
Puncak di lag 1 hingga p, lalu turun ke nol.
Gelombang sinus yang dimampatkan. Pola tepatnya bergantung pada tanda dan besar φ1 ,..., φ p .
MA(1)
Puncak di lag 1 lalu turun ke nol; puncak positif jika θ1 < 0 , negatif jika θ1 > 0 .
MA(q)
Penurunan secara eksponensial; pada sisi negatif jika θ1 > 0 dan berbalikbalik tanda mulai dari sisi positif jika θ1 < 0 .
Puncak di lag 1 hingga q, lalu turun Penurunan secara eksponensial atau ke nol. Gelombang sinus yang dimampatkan. Pola tepatnya bergantung pada tanda dan besar θ 1 ,..., θ q .
28 2.3.3 Notasi Backshift
Model ARIMA secara umum adalah sulit untuk dituliskan. Model ini berhubungan dengan variabel dependen atau bergantung pada unsur rentang atau lag itu sendiri dan kesalahan rentang atau lag. Karena itu dibutuhkan penggunaan suatu notasi yang menyederhanakan bentuk suatu persamaan, sehingga lebih sederhana dan lebih mudah bila dikerjakan secara aljabar. Sebuah notasi yang sangat berguna yakni operator backward shift, B, dinyatakan sebagai berikut. ( B)Yt = Yt −1
(2.3.31)
Dengan kata lain, B, digunakan pada Yt, memiliki efek menggeser data mundur satu periode. Dua aplikasi dari B terhadap Yt memundurkan data dua periode sebagai berikut. B ( BYt ) = B 2Yt
(2.3.32)
Operator ini memudahkan untuk menggambarkan proses diferensiasi. Diferensiasi pertama atau turunan tingkat satu dapat dituliskan sebagai berikut. '
Yt = Yt − Yt −1 = Yt − BYt = (1 − B)Yt Secara serupa, turunan tingkat dua dapat dituliskan sebagai berikut. Y " t = (Y ' t − Y ' t −1 ) = (Yt − Yt −1 ) − (Yt −1 − Yt − 2 )
= Yt − 2Yt −1 + Yt − 2 = (Yt − 2 BYt + B 2Yt ) = (1 − 2 B + B 2 )Yt = (1 − B) 2 Yt Secara umum, turunan tingkat-d dapat dituliskan sebagai berikut.
(2. 3.33)
29 (1 − B ) d Yt
(2.3.34)
2.3.4 Estimasi Parameter dan Diagnosis Model
Setelah diperoleh model dari perhitungan pada bagian sebelumnya maka langkah selanjutnya adalah menentukan nilai parameter yang menyertai model tersebut. Berbagai langkah yang dapat dilakukan untuk mengestimasi nilai parameter adalah sebagai berikut. a.
Menggunakan metode
“trial and error”, di mana metode ini dilakukan
dengan cara mencoba- coba dalam penentuan nilai parameternya. b. Melakukan proses iterasi dengan menggunakan program komputer untuk memperoleh nilai yang lebih akurat, karena apabila perhitungan dilakukan secara manual akan membutuhkan waktu yang tidak sedikit. Setelah nilai parameter diperoleh proses dilanjutkan dengan pengujian apakah model sudah representatif atau tidak. Suatu model dapat dikatakan sudah cukup representatif apabila deret dari residunya (sisaan atau error) terdistribusi secara acak di sekitar nol. Suatu model dikatakan sesuai apabila terdapat nilai nol dalam selang autokorelasi sisaannya. Selang autokorelasi sisaan dinyatakan dalam persamaan berikut. 2
re (k ) ± 2SE
(2.3.35)
, di mana SE (standard error) di dapat dari persamaan (2.3.30) dengan k merupakan time-lag dan re merupakan nilai autokorelasi sisaan.
Cara lain yang dapat digunakan adalah dengan menggunakan statistik uji ChiSquare dengan persamaan sebagai berikut.
30 k
Q = ( N − d )∑ re (k ) 2
(2.3.36)
k =1
, di mana re merupakan nilai autokorelasi sisaan dari suatu time-lag k, d sebagai derajat pembeda dan N merupakan banyak periode waktu. Berdasarkan statistik hitung di atas, suatu model dapat dikatakan sesuai apabila model tersebut memenuhi kriteria sebagai berikut.
Q ≤ X α2 ( k − p − q )
(2.3.37)
Model dikatakan tidak sesuai apabila sebagai berikut.
Q > X α2 ( k − p −q )
(2.3.38)
2.4 Ketepatan Metode Peramalan
Dalam statistik, untuk menghitung besar kesalahan peramalan dapat dilakukan dengan menghitung selisih antara nilai asli dengan nilai peramalannya. Percentage Error: PE t =
(Yt − Yˆt ) × 100% Yt
(2.4.1)
n
Mean Percentage Error: MPE =
∑ PE i =1
t
(2.4.2)
n n
Mean Absolute Percentage Error: MAPE =
Mean Squared Error: MSE =
∑ | PE i =1
n
1 n ( y t − yˆ t ) 2 ∑ n i =1
, di mana :
n
adalah jumlah sampel.
Yt
adalah nilai pengamatan pada periode ke-i.
t
| (2.4.3)
(2.4.4)
31
Yˆt
adalah nilai pendugaan pada periode ke-i. Persamaan yang biasa digunakan untuk mengetahui kesalahan peramalan adalah
MAPE dan MSE. Semakin kecil nilai yang dihasilkan oleh persamaan tersebut, semakin baik dan akurat metode tersebut. 2.5 Jaringan Syaraf Tiruan
Jaringan syaraf tiruan merupakan teknologi yang lahir dari upaya manusia untuk mencari tahu bagaimana suatu sistem koordinasi hewan terjadi, bagaimana syaraf bekerja, mengoptimasi diri, dan mampu menjadi pusat segala sistem hayati hewan. Suatu jaringan saraf tiruan memproses sejumlah besar informasi secara paralel dan terdistribusi, yang terinspirasi oleh model kerja otak biologis. Terdapat beberapa definisi tentang jaringan saraf tiruan adalah sebagai berikut. a. Jaringan syaraf tiruan
adalah suatu struktur pemroses informasi yang
terdistribusi dan bekerja secara paralel, terdiri atas elemen pemroses (yang memiliki memori lokal dan beroperasi dengan informasi lokal) yang diinterkoneksi bersama dengan alur sinyal searah yang disebut koneksi. Setiap elemen pemroses memiliki koneksi keluaran tunggal yang bercabang (fan out) ke sejumlah koneksi kolateral yang diinginkan (setiap koneksi membawa sinyal yang sama dari keluaran elemen pemroses tersebut). Keluaran dari elemen pemroses tersebut dapat merupakan sembarang jenis persamaan matematis yang diinginkan. Seluruh proses yang berlangsung pada setiap elemen pemroses harus benar-benar dilakukan secara lokal, yaitu keluaran hanya bergantung pada nilai masukan pada saat itu yang diperoleh melalui koneksi dan nilai yang tersimpan dalam memori lokal (Hecht-
32 Nielsend, 1988). b. Sebuah jaringan saraf adalah sebuah prosesor yang terdistribusi paralel dan mempuyai
kecenderungan
untuk
menyimpan
pengetahuan
yang
didapatkannya dari pengalaman dan membuatnya tetap tersedia untuk digunakan. Hal ini menyerupai kerja otak dalam dua hal yaitu pengetahuan diperoleh oleh jaringan melalui suatu proses belajar dan kekuatan hubungan antar sel saraf yang dikenal dengan bobot sinapsis digunakan untuk menyimpan pengetahuan (Haykin, S, 1994). c. Jaringan syaraf tiruan sebagai sistem saraf tiruan atau jaringan saraf tiruan merupakan sebuah sistem dalam pemrosesan informasi yang memiliki suatu kemampuan karakteristik umum sama seperti syaraf biologi (Laurene, 1994, p3). Neuron adalah unit pemroses informasi yang menjadi dasar dalam pengoperasian jaringan syaraf tiruan. Neuron terdiri atas tiga elemen pembentuk (Laurene, 1994, p3) sebagai berikut. a. Himpunan unit-unit yang dihubungkan dengan jalur koneksi. Jalur-jalur tersebut memiliki bobot atau kekuatan yang berbeda-beda. Bobot yang bernilai positif akan memperkuat sinyal dan yang bernilai negatif akan memperlemah sinyal yang dibawanya. Jumlah, struktur, dan pola hubungan antar unit-unit tersebut akan menentukan arsitektur jaringan dan juga model jaringan yang terbentuk. b. Suatu unit penjumlah yang akan menjumlahkan input-input sinyal yang sudah dikalikan dengan bobotnya. c. Fungsi aktivasi yang akan menentukan apakah sinyal dari input neuron akan
33 diteruskan ke neuron lain atau tidak. Gambar skematik tipikal neuron dapat dilihat pada gambar 2.8.
Gambar 2.9 Saraf Biologis (Sumber : Fausset, Laurene, 1994,p6)
Teknologi jaringan syaraf tiruan memberikan perubahan epistemologis pada sistem pemrograman dibandingan pemrograman tradisional. Jaringan syaraf tiruan memproses informasi dengan cara yang sangat berbeda dengan cara konvensional. Perbedaan pemrograman jaringan syaraf tiruan dan cara konvensional disajikan pada tabel 2.2. Tabel 2.2 Perbedaan Pemrograman Jaringan Syaraf Tiruan dan Pemrograman Tradisional (Sumber : Situngkir dan Surya 2003b diringkas) Jaringan syaraf tiruan Pemrograman Tradisional
Komputasi dilakukan secara paralel dan terdistribusi dalam unit pemrosesan data dengan jumlah yang banyak.
Komputasi dilakukan secara serial.
Informasi terdistribusi dalam jaringan syaraf tiruan.
Informasi teralokasi dalam tempat tertentu.
Disebut teknologi pemroses paralel terdistribusi (Parallel distributed processing).
34 Pemrosesan informasi dalam jaringan syaraf tiruan dapat disingkat sebagai berikut. a. Sinyal (baik berupa aksi maupun potensial) yang muncul sebagai masukan unit (sinapsis). b. Kemudian efek dari tiap sinyal ini dinyatakan sebagai bentuk perkalian dengan sebuah nilai bobot untuk mengindikasikan kekuatan dari sinapsis. Semua sinyal yang diberi pengali bobot ini kemudian dijumlahkan satu sama lain untuk menghasilkan unit aktivasi. Jika aktivasi ini melampaui sebuah batas ambang tertentu maka unit tersebut akan memberikan keluaran dalam bentuk respon terhadap masukan. Unit aktivasi ini kemudian dibandingkan dengan sebuah nilai ambang, dan hasilnya dimasukkan ke dalam fungsi transfer (fungsi non-linier) yang akan menghasilkan sebuah keluaran. Secara ringkas proses tersebut dapat digambarkan dalam gambar 2.9.
Gambar 2.10 Neuron Buatan McCulloch-Pitts Ssebagai Operator Matematis (Sumber : Fausset, Laurene, 1994,p26)
Aktivasi dari unit masukan diatur dan diteruskan melalui jaringan hingga nilai dari keluaran dapat ditentukan. Jaringan berperan sebagai fungsi vektor yang mengambil
35 satu vektor pada masukan dan mengeluarkan satu vektor lain pada keluaran. Model jaringan syaraf tiruan dapat memiliki sebuah lapisan bobot, di mana masukan dihubungkan langsung dengan keluaran, atau beberapa lapisan yang di dalamnya terdapat beberapa lapisan tersembunyi. Karena berada tersembunyi diantara neuron masukan dan keluaran jaringan syaraf tiruan menggunakan unit tersembunyi untuk menghasilkan representasi pola masukan secara internal. Fungsi transfer (non-linier) yang digunakan dalam tiap neuron (baik dilapisan masukan, keluaran atau lapisan tersembunyi) dapat berupa fungsi nilai ambang, fungsi linier, fungsi sigmoid maupun fungsi gaussian, tergantung dari karakter neuron sesuai keinginan. Hal ini dapat dilihat pada gambar 2.10.
Gambar 2.11 Tipikal Sebuah Jaringan Syaraf Tiruan (Sumber: Situngkir dan Surya 2003b) 2.5.1 Komponen Jaringan Syaraf
Terdapat beberapa tipe jaringan syaraf, hampir semuanya memiliki komponenkomponen yang sama. Seperti halnya otak manusia, jaringan syaraf juga terdiri atas
36 beberapa neuron dan ada hubungan antar neuron tersebut. Neuron-neuron tersebut akan mentransformasikan informasi yang diterima melalui sambungan keluaran menuju ke neuron-neuron yang lain. Pada jaringan syaraf, hubungan ini dikenal dengan nama bobot. Informasi tersebut disimpan pada suatu nilai tertentu pada bobot tersebut. Neuron ini sebenarnya mirip dengan sel neuron biologis. Neuron-neuron buatan tersebut bekerja dengan cara yang sama pula dengan neuron biologis. Informasi atau input akan dikirim ke neuron dengan bobot kedatangan tertentu. Input ini akan
diproses oleh suatu fungsi perambatan yang akan menjumlahkan nilai-nilai semua bobot yang datang. Hasil penjumlahan ini kemudian akan dibandingkan dengan suatu nilai ambang (threshold) tertentu melalui fungsi aktivasi setiap neuron. Apabila input tersebut melewati suatu nilai ambang tertentu, maka neuron tersebut akan diaktifkan, tapi kalau tidak, maka neuron tersebut tidak akan diaktifkan. Apabila neuron tersebut diaktifkan, maka neuron tersebut akan mengirimkan output melalui bobot-bobot outputnya ke semua neuron yang berhubungan dengannnya. (Kusumadewi, 2003) Pada jaringan syaraf, neuron-neuron akan dikumpulkan dalam lapisan (layer) yang disebut dengan lapisan neuron (neuron layer). Neuron-neuron pada satu lapisan akan dihubungkan dengan lapisan-lapisan sebelum dan sesudahnya (kecuali lapisan input dan lapisan output). Informasi yang diberikan pada jaringan syaraf akan dirambatkan dari lapisan ke lapisan. Mulai dari lapisan input sampai ke lapisan output melalui lapisan lainnya, yang sering disebut sebagai lapisan tersembunyi (hidden layer).
37 2.5.2 Arsitektur Jaringan Syaraf Tiruan A. Jaringan Lapisan Tunggal (single layer net)
Jaringan dengan lapisan tunggal hanya memiliki satu lapisan dengan bobot-bobot terhubung. Jaringan ini hanya menerima input kemudian secara langsung akan mengolahnya menjadi output tanpa harus melalui lapisan tersembunyi. B. Jaringan Banyak Lapisan (multilayer net)
Jaringan dengan banyak lapisan memiliki satu atau lebih lapisan yang terletak di antara lapisan input dan lapisan output (memiliki satu atau lebih lapisan tersembunyi). Umumnya, ada lapisan bobot-bobot yang terletak antara dua lapisan yang bersebelahan. Jaringan dengan banyak lapisan ini dapat menyelesaikan permasalahan yang lebih sulit daripada jaringan dengan lapisan tunggal, tentu saja dengan pembelajaran yang lebih rumit. Namun demikian, pada banyak kasus, pembelajaran pada jaringan dengan banyak lapisan ini lebih sukses dalam menyelesaikan masalah meski membutuhkan waktu yang lebih lama. 2.5.3 Fungsi Aktivasi
Ada beberapa fungsi aktivasi yang sering digunakan dalam jaringan syaraf tiruan salah satunya adalah fungsi Sigmoid Bipolar. Fungsi sigmoid bipolar mempunyai output dengan jarak antara 1 sampai -1. Fungsi sigmoid bipolar dirumuskan sebagai berikut. y = f ( x) =
1 − e−x . 1 + e −x
38 dengan f ' ( x) =
σ 2
[1 +
f ( x)][1 − f ( x)].
(2.5.1)
Fungsi ini sangat dekat dengan fungsi hyperbolic tangent. Keduanya memiliki jarak antara -1 sampai 1. Untuk fungsi hyperbolic tangent, dirumuskan sebagai berikut. tanh( x) = f ( x) =
e x − e−x e x + e−x
(2.5.2)
1 − e −2 x 1 + e −2 x
(2.5.3)
atau tanh( x) = f ( x) =
dengan f ' ( x) = [1 + f ( x)][1 − f ( x)] .
(2.5.4)
2.5.4 Proses Pembelajaran
Kelemahan dari jaringan syaraf tiruan dengan menggunakan layar tunggal membuat perkembangan jaringan syaraf tiruan menjadi terhenti sekitar tahun 1970an. Penemuan backpropagation yang terdiri atas beberapa lapisan membuka kembali cakrawala (Siang, 2005). Jaringan syaraf tiruan dengan layar tunggal memiliki keterbatasan dalam pengenalan pola. Kelemahan ini dapat ditanggulangi dengan menambahkan satu atau beberapa lapisan tersembunyi diantara layar masukan dan keluaran. Meskipun penggunaan lebih dari satu lapisan tersembunyi memiliki kelebihan manfaat untuk beberapa kasus, tetapi pelatihannya memerlukan waktu yang lama. Pada umumnya pelatihan dimulai dengan mencoba sebuah lapisan tersembunyi lebih dahulu. Jaringan syaraf tiruan
yang akan digunakan adalah jaringan syaraf tiruan
propagasi balik. Kusumadewi (2004) menjelaskan, propagasi balik menggunakan error output untuk mengubah nilai bobot-bobotnya dalam arah mundur (backward).
39 Untuk mendapatkan error ini, tahap perambatan maju (forward propagation) harus dikerjakan terlebih dahulu. Input yang akan digunakan dalam pelatihan ini adalah angka penjualan pada data historis. Diberikan satu buah lapisan tersembunyi dengan memiliki q unit tersembunyi di dalamnya. Lapisan output berisi nilai perhitungan peramalan. Terdapat dua tipe pembelajaran dalam jaringan syaraf tiruan sebagai berikut (Kusumadewi, 2003). A. Pembelajaran Terawasi (supervised learning)
Metode pembelajaran pada jaringan syaraf tiruan disebut terawasi jika output yang diharapkan telah diketahui sebelumnya. Pada proses pembelajaran,
satu pola input akan diberikan ke satu neuron pada lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan pola output yang nantinya akan dicocokkan dengan pola output targetnya. Apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola target, maka akan muncul error. Apabila nilai error ini masih cukup besar, mengindikasikan bahwa masih perlu dilakukan lebih banyak pembelajaran lagi. Terdapat berbagai tipe pembelajaran terawasi beberapa di antaranya Hebb Rule, Perceptron, Delta Rule, Backpropagation, Heteroassociative Memory, Bidirectional Associative Memory (BAM), Learning Vector Quantization
(LVQ). Dalam pembahasan ini hanya akan digunakan propagasi balik (backpropagation) sebagai metode pembelajaran.
40 B. Pembelajaran Tak Terawasi (unsupervised learning)
Pembelajaran tak terawasi tidak memerlukan target output. Pada metode ini, tidak dapat ditentukan hasil yang seperti apakah yang diharapkan selama proses pembelajaran. Selama proses pembelajaran, nilai bobot disusun dalam suatu range tertentu tergantung pada nilai input yang diberikan. Tujuan pembelajaran ini adalah mengelompokkan unit-unit yang hampir sama dengan suatu area tertentu. Pembelajaran ini biasanya sangat cocok untuk pengelompokan (klasifikasi) pola. 2.5.5 Standard Backpropagation Backpropagation adalah suatu algoritma pembelajaran terawasi dan biasanya
digunakan oleh perceptron dengan banyak lapisan untuk mengubah bobot-bobot yang terhubung dengan neuron-neuron yang ada pada lapisan tersembunyinya. Pembelajaran network dengan backpropagation meliputi tiga langkah yaitu feedforward sebagai pola pembelajaran input, propagasi dari kesalahan dan
penetapan bobot. Backpropagation mempunyai peranan dalam mengembangkan metode yang
sangat efektif yaitu training pada multilayer networks. Metode tersebut dikenal dengan backpropagation (of error) atau generalized delta rule. Pada dasarnya merupakan gradient descent method yang meminimumkan total squared error dari output yang dihitung oleh networks.
Algoritma backpropagation ada dua yaitu sebagai berikut. 1. Algoritma untuk training yang terdiri dari dua fase yaitu feedforward dan backward. Algoritma training digunakan untuk menyimpan pasangan-pasangan pola ke dalam backpropagation networks.
41 2. Algoritma untuk aplikasi yang hanya terdiri dari satu fase saja yaitu feedforward. Algoritma dari backpropagation adalah sebagai berikut. Langkah 0: Inisialisasi bobot (ambil bobot awal dengan nilai random yang cukup
kecil). Langkah 1: Kerjakan langkah-langkah berikut selama kondisi berhenti bernilai salah
lakukan langkah 2-9. Langkah 2: Untuk tiap-tiap pasangan elemen yang akan dilakukan pembelajaran,
kerjakan: Feedforward : Langkah 3: Tiap-tiap unit input (Xi, i=1,2,3,...,n) menerima sinyal input xi dan
meneruskan sinyal tersebut ke semua unit pada lapisan yang ada pada lapisan atasnya (lapisan tersembunyi). Langkah 4: Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) menjumlahkan sinyal-sinyal
input terbobot sebagai berikut. n
z _ in j = v0 j + ∑ xi vij i =1
Gunakan fungsi aktivasi untuk menghitung sinyal outputnya sebagai berikut. Zj = f(z_inj)
Lalu kirimkan sinyal tersebut ke semua unit pada lapisan atasnya (unit-unit output). Langkah 5: Tiap-tiap unit output (Yk, k=1,2,3,...,m) menjumlahkan sinyal-sinyal
input terbobot. p
y _ in j = w0 k + ∑ z i w jk i =1
42 Gunakan fungsi aktivasi untuk menghitung sinyal outputnya sebagai berikut. yk=f(y_ink)
Lalu kirimkan sinyal tersebut ke semua unit pada lapisan atasnya (unit-unit output). Backward: Langkah 6: Tiap-tiap unit output (Yk, k=1,2,3,...,m) menerima target pola yang
berhubungan dengan pola input pembelajaran, hitung informasi error nya sebagai berikut.
δ k = (t k − y k ) f ′( y _ in k ) Kemudian hitung koreksi bobot (yang nantinya akan digunakan untuk memperbaiki nilai wjk) sebagai berikut. ΔW jk = αδ k z j
Hitung juga koreksi bias (yang nantinya akan digunakan untuk memperbaiki nilai w0k ) sebagai berikut. Δw0 k = αδ k Kirimkan δk ini ke unit-unit yang ada pada lapisan bawahnya. Langkah 7: Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) menjumlahkan delta
inputnya (dari unit-unit yang berada pada lapisan di atasnya) sebagai berikut. m
δ _ in j = ∑ δ k w jk i =1
Kalikan nilai ini dengan turunan dari fungsi aktivasinya untuk menghitung informasi error sebagai berikut.
δ j = δ _ in j f ′( z _ in j )
43 Kemudian hitung koreksi bobot (yang nantinya akan digunakan untuk memperbaiki nilai vij) sebagai berikut. Δv jk = αδ j xi
Kemudian hitung koreksi bias (yang nantinya akan digunakan untuk memperbaiki nilai v0j) sebagai berikut. Δv 0 j = αδ j
Langkah 8: Tiap-tiap unit output (Yk, k=1,2,3,...,m) memperbaiki bias dan bobotnya
(j=0,1,2,...,p) sebagai berikut. w jk (baru ) = w jk (lama ) + Δw jk
Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) memperbaiki bias dan bobotnya (i=0,1,2,...,n) sebagai berikut. vij (baru ) = vij (lama ) + Δwij
Langkah 9: Tes Kondisi berhenti. A. Penentuan Bobot dan Bias
Pemilihan inisial bobot dan bias akan mempengaruhi apakah net mencapai global minima atau lokal minima dari error. Pembaharuan nilai bobot di antara dua buah unit bergantung pada produk dari fungsi aktivasi unit yang berada di atasnya atau di bawahnya. Oleh karena itu, sangat penting untuk menghindari penginisialisasian bobot yang dapat membuat nilai aktivasi atau produk aktivasi menjadi nol. Nilai dari inisial bobot tidak boleh terlalu besar atau inisial sinyal input ke setiap unit tersembunyi atau output akan mempunyai nilai turunan fungsi sigmoid yang kecil. Jika terlalu kecil maka net
44 input pada lapisan tersembunyi akan mendekati nol yang mana akan
berdampak pada lamanya proses pembelajaran. Sebuah prosedur umum dalam penginisialisasian nilai awal bobot biasanya merupakan nilai acak antara -0,5 dan 0,5 atau antara -1 dan 1. Nguyen-Widrow mengembangkan sebuah modifikasi dalam penginisialisasian
bobot yaitu sebagai berikut.
β = 0,7( p)1 / n = 0,7 n p
(2.5.5)
dengan n adalah jumlah input. p adalah jumlah unit tersembunyi.
β adalah scale factor. Penginisialisasian bobot dari unit input ke unit tersembunyi didesain untuk meningkatkan kemampuan pembelajaran dari unit tersembunyi. Prosedur tersebut terdiri dari langkah sederhana sebagai berikut. Untuk setiap unit tersembunyi (j=1,...,p): a.
Inisialisasi vektor bobot (dari unit input):
vij (lama ) = nilai acak antara -0,5 dan 0,5 atau antara - γ dan γ .
b.
Hitung nilai dari || v j (lama ) || . Reinisialisasi bobot: vij =
βvij (lama ) || v j (lama ) ||
.
c.
Pengaturan bias:
v 0 j = nilai acak antara - β dan β .
(2.5.6)
Analisis Nguyen-Widrow ini berdasarkan pada fungsi aktivasi
45 tanh( x) =
e x − e−x e x + e−x
(2.5.7)
yang memiliki kesamaan dengan fungsi aktivasi sigmoid bipolar. B. Waktu yang Diperlukan untuk Pembelajaran Net
Untuk mendapatkan sebuah keseimbangan antara respon yang tepat dalam melatih sebuah pola yang baru (keseimbangan antara mengingat dan menggeneralisasi), tidak perlu melanjutkan pembelajaran hingga total squared error mencapai minimum. Menurut Hecht-Nielsen (1990), menganjurkan agar
menggunakan dua buah set data selama pembelajaran yaitu sebuah set training patterns dan sebuah set training-testing patterns.
Banyaknya training patterns yang cukup, akan membuat net mampu untuk menggeneralisasi dengan maksimal. Untuk mendapatkan training patterns yang akurat ditentukan oleh kondisi sebagai berikut. W = e , P
(2.5.8)
W e
(2.5.9)
atau P=
dengan P adalah jumlah training patterns yang mungkin. W adalah nilai bobot yang akan dilatih. e adalah akurasi dari klasifikasi yang diharapkan.
Pengaturan nilai bobot didasarkan pada training patterns dan kesalahan yang diperoleh dari perhitungan dengan training-testing patterns selama pembelajaran berlangsung. Saat kesalahan mulai meningkat maka net akan
46 mulai mengingat training patterns secara spesifik dan akan kehilangan kemampuan untuk menggeneralisasi dan proses pembelajaran akan dihentikan. C. Momentum
Pada backpropagation dengan momentum, perubahan bobot merupakan gabungan antara gradient sekarang dengan sebelumnya. Merupakan modifikasi dari gradient descent (sebuah teknik matematika untuk optimasi yang menjadi dasar bagi algoritma backpropagation) yang memberi keuntungan apabila terdapat data yang sangat berbeda dengan data utama bahkan jika data tersebut tidak benar. Momentum memungkinkan untuk menggunakan learning rate yang kecil untuk menghindari masalah utama dalam pembelajaran yaitu saat suatu training patterns yang tidak biasa digunakan. Dalam penggunaan momentum, bobot yang sudah diperbaharui dari training patterns sebelumnya akan disimpan. Sebagai contoh, sebuah bobot
baru pada pembelajaran t+1 didasarkan pada bobot pada pembelajaran t dan t1. Maka formula pembaharuan bobotnya dengan momentum adalah sebagai
berikut. w jk (t + 1) = w jk (t ) + αδ k z j + μ[ w jk (t ) − w jk (t − 1)],
atau Δw jk (t + 1) = αδ k z j + μΔw jk (t ),
dan vij (t + 1) = vij (t ) + αδ j xi + μ[vij (t ) − vij (t − 1)],
atau Δvij (t + 1) = αδ j xi + μΔvij (t ),
47 di mana parameter dari momentum μ berkisar antara 0 hingga 1. D. Prosedur Aplikasi
Setelah pembelajaran, backpropagation neural net akan diaplikasikan dengan fase feedforward dari algoritma training. Prosedur dari aplikasi ini adalah sebagai berikut. Langkah 0 Inisialisasi bobot (dari algoritma training) Langkah 1 Untuk setiap input vektor, lakukan langkah 2-4 Langkah 2 Untuk i=1,....,n:tetapkan aktivasi untuk input xi; n
Langkah 3 Untuk j=1,...,p, z _ in j = v 0 j + ∑ xi vij ; Zj = f(z_inj)
i =1
p
Langkah 4 Untuk k=1,...,m , y _ in j = w0 k + ∑ z i w jk ; yk=f(y_ink) i =1
2.6
Perancangan Program Simulasi
Perancangan program merupakan salah satu langkah terpenting dalam pembuatan aplikasi. Perancangan diperlukan untuk membuat sebuah bentuk dasar dan langkahlangkah yang akan dilakukan dalam pembuatan sebuah aplikasi. 2.6.1
Rekayasa Piranti Lunak
Rekayasa Piranti Lunak menurut Fritz Bauer (Pressman, 2005, p23) adalah penetapan dan pemakaian prinsip-prinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu terpecaya dan bekerja efisien pada mesin (komputer). Menurut Pressman (2005, p24), rekayasa piranti lunak mencakup 3 elemen yang mampu mengontrol proses pengembangan piranti lunak,yaitu:
48 1. Metode-metode (methods) Menyediakan cara-cara teknis untuk membangun piranti lunak. 2. Alat-alat bantu (tools) Mengadakan dukungan otomatis atau semi otomatis untuk metodemetode seperti CASE (Computer Aided Software Engineering) yang mengkombinasikan software, hardware, dan software engineering database.
3. Prosedur-prosedur (procedures) Merupakan pengembangan metode dan alat bantu. Dalam perancangan software dikenal istilah software life cycle yaitu serangkaian kegiatan yang dilakukan selama masa perancangan software. Pemakaian jenis software life cycle yang cocok salah satunya ditentukan oleh jenis bahasa pemrograman yang cocok. Contohnya, Waterfall Model merupakan model yang paling umum dan paling dasar pada software life cycle. Rapid Application Development (RAD) dan Joint Application Development (JAD)
cocok untuk software berbasis objek (OOP), sedangkan Sync+Stabilize dan Spiral Model yang merupakan pengembangan model waterfall dengan
komponen prototyping cocok untuk sebuah aplikasi yang rumit dan cenderung mahal pembuatannya. Menurut Dix (1997, p180), visualisasi dari kegiatan pada software life cycle model waterfall adalah sebagai berikut.
49 1. Spesifikasi kebutuhan (Requirement specification) Pada
tahap
ini,
pihak
pengembang
dan
konsumen
mengidentifikasi apa saja fungsi-fungsi yang diharapkan dari sistem dan
bagaimana
sistem
memberikan
layanan
yang
diminta.
Pengembang berusaha mengumpulkan berbagai informasi dari konsumen. 2. Perancangan arsitektur (Architectural design) Pada tahap ini, terjadi pemisahan komponen-komponen sistem sesuai dengan fungsinya masing-masing. 3. Detailed design Setelah memasuki tahap ini, pengembang memperbaiki deskripsi dari komponen-komponen dari sistem yang telah dipisah-pisah pada tahap sebelumnya. 4. Coding and unit testing Pada tahap ini, disain diterjemahkan ke dalam bahasa pemrograman untuk dieksekusi. Setelah itu komponen-komponen dites apakah sesuai dengan fungsinya masing-masing. 5. Integration and testing Setelah tiap-tiap komponen dites dan telah sesuai dengan fungsinya, komponen-komponen tersebut disatukan lagi. Lalu sistem dites untuk memastikan sistem telah sesuai dengan kriteria yang diminta konsumen.
50 6. Pemeliharaan (maintenance) Setelah sistem diimplementasikan, maka perlu dilakukannya perawatan terhadap sistem itu sendiri. Perawatan yang dimaksud adalah
perbaikan
error
yang
ditemukan
setelah
sistem
diimplementasikan.
Gambar 2.12 Waterfall Model untuk Sistem Software Life-cycle (Sumber: Dix. 1997, p181) 2.6.2 Interaksi Manusia dan Komputer
Menurut Shneiderman (2005, p4), Interaksi manusia dan komputer merupakan disiplin ilmu yang berhubungan dengan, perancangan, evaluasi, dan implementasi sistem komputer interaktif untuk digunakan oleh manusia, serta studi fenomena-fenomena besar yang berhubungan dengannya. Pada interaksi manusia dan komputer ditekankan pada pembuatan antarmuka pemakai (user interface), dimana user interface yang dibuat diusahakan sedemikian rupa sehingga seorang user dapat dengan baik dan nyaman menggunakan aplikasi perangkat lunak dibuat. Antar muka pemakai
51 (user interface) adalah bagian sistem komputer yang memungkinkan manusia berinteraksi dengan komputer. Tujuan antar muka pemakai adalah agar sistem komputer dapat digunakan oleh pemakai (user interface), istilah tersebut digunakan untuk menunjuk kepada kemampuan yang dimiliki oleh piranti lunak atau program aplikasi yang mudah dioperasikan dan dapat membantu menyelesaikan suatu persoalan dengan hasil yang sesuai dengan keinginan pengguna atau biasa disebut user friendly. Pedoman untuk menghasilkan suatu rancangan antar muka program yang user friendly adalah dengan menggunakan pedoman Eight Golden Rules. Eight Golden
Rules
tersebut
menjelaskan
mengenai
beberapa
aturan
yang
diperbolehkan dan tidak diperbolehkan sebagai pedoman untuk merancang antar muka program. Kedelapan aturan tersebut antara lain sebagai berikut. a. Strive for consistency, konsistensi dalam perancangan antar muka. b. Enable frequent user to use shorcuts, memungkinkan pengguna menggunakan shortcuts secara berkala. c. Offer informative feed back, memberikan umpan balik yang informative. d. Design
dialogs
to
yield
closure,
merancang
dialog
untuk
menghasilkan keadaan akhir. e. Offer simple error handling, memberikan penanganan kesalahan yang sederhana.
52 f. Permit easy reversal of actions, mengijinkan pembalikkan aksi dengan mudah. g. Support internal locus of control, mendukung pengguna menguasai system yang dibuat. h. Short-term memory load, mengurangi beban jangka pendek kepada pengguna. 2.7
Microsoft Visual C#
Bahasa pemograman C# (dibaca C sharp) adalah sebuah bahasa pemograman modern yang bersifat general purpose, berorientasi objek yang dikembangkan oleh Microsoft sebagai inisiatif kerangka .NET Framework. Bahasa pemograman ini
dicipatakan berbasiskan bahasa C++ yang telah dipengaruhi oleh aspek-aspek maupun fitur bahasa yang terdapat pada bahasa-bahasa pemrograman lainnya seperti Java, Delphi, dan Visual Basic dengan beberapa penyederhanaan. Bahasa pemrograman ini
dikembangkan oleh sebuah tim pengembang di Microsoft yang dipimpin oleh Anders Hejlsberg, seseorang yang telah lama berpengalaman di dunia pengembangan bahasa pemrograman karena memang ialah yang membuat Borland Turbo Pascal, Borland Delphi, dan juga Microsoft J++.
Menurut standar ECMA-334 C# Language Specification, nama C# terdiri atas sebuah huruf Latin C (U+0043) yang diikuti oleh tanda pagar yang menandakan # (U+0023). Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik (U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres dalam seni musik tidak terdapat di dalam keyboard standar.
53 2.7.1 Sejarah C#
Pada akhir dekade 1990-an, Microsoft membuat program Microsoft Visual J++ sebagai sebuah langkah percobaan untuk menggunakan Java di dalam sistem operasi Windows untuk meningkatkan antarmuka dari Microsoft Component Object Model
(COM). Akan tetapi, akibat masalah dengan pemegang hak cipta bahasa pemrograman Java, Sun Microsystems, Microsoft pun menghentikan pengembangan J++, dan beralih untuk membuat pengganti J++, kompilernya dan mesin virtualnya
sendiri dengan menggunakan sebuah bahasa pemrograman yang bersifat generalpurpose. Untuk menangani proyek ini, Microsoft merekrut Anders Helsberg, yang
merupakan mantan karyawan Borland yang membuat bahasa Turbo Pascal, dan Borland Delphi, yang juga mendesain Windows Foundation Classes (WFC) yang
digunakan di dalam J++. Sebagai hasil dari usaha tersebut, C# pun pertama kali diperkenalkan pada bulan Juli 2000 sebagai sebuah bahasa pemrograman modern berorientasi objek yang menjadi sebuah bahasa pemrograman utama di dalam pengembangan di dalam platform Microsoft .NET Framework. C# didesain untuk memenuhi kebutuhan akan sintaksis C++ yang lebih
ringkas dan Rapid Application Development yang 'tanpa batas' (dibandingkan dengan RAD yang 'terbatas' seperti yang terdapat pada Delphi dan Visual Basic). Seperti halnya bahasa Java, bahasa C# telah membuang beberapa fitur berbahaya dari bahasa C. Memang, pointer belum sepenuhnya "dicabut" dari C#, tetapi sebagian besar pemrograman dengan menggunakan bahasa C# tidak membutuhkan pointer secara ekstensif, seperti halnya C dan C++. Persamaan lainnya antara Java
dan C# mencakup peran dari kompiler. Pengalaman Helsberg sebelumnya dalam pendesain bahasa pemrograman seperti Visual J++, Delphi, Turbo Pascal) dengan
54 mudah dilihat dalam sintaksis bahasa C#, begitu pula halnya pada inti Common Language Runtime (CLR). Untuk menjalankan suatu program C#, di komputer atau
alat elektronik lain yang bersangkutan harus tersedia CLR (Common Language Runtime).
Jalannya sebuah program C# akan dikelola sepenuhnya oleh CLR, oleh karena itu program C# dikatakan sebagai program yang managed. Sedangkan programprogram klasik yang langsung berinteraksi dengan operating system maupun hardware tertentu disebut program unmanaged. Biasanya, kompiler menerjemahkan kode sumber (berkas teks yang berisi bahasa pemrograman tingkat tinggi) ke dalam kode mesin. Kode mesin tersebut membentuk sebuah berkas yang dapat dieksekusi (executable atau EXE), yang berupa sebuah berkas yang siap untuk dijalankan kapan saja secara langsung oleh komputer. Tetapi, karena kode mesin hanya diasosiasikan dengan sebuah jenis mesin tertentu saja, berkas yang dapat dieksekusi tersebut hanya dapat berfungsi di atas satu jenis komputer saja. Inilah sebabnya mengapa program yang sama tidak berfungsi di atas sistem operasi Windows di atas sistem operasi GNU atau Linux, Apple Macintosh atau sistem operasi lainnya, dan begitu pula
sebaliknya. Alat bantu kompiler yang digunakan oleh C# tidak menerjemahkan kode sumber ke dalam kode mesin, tetapi hanya menerjemahkan ke dalam sebuah bahasa perantara atau Intermediate Language (disingkat menjadi IL), yang merupakan sebuah jenis kode mesin yang telah digeneralisasikan. Ketika program dijalankan di atas sebuah mesin, maka IL akan diterjemahkan ke dalam kode mesin secara keseluruhan. Dilihat dari perspektif pengguna, proses translasi ini tidak terlihat. Tetapi, dalam teorinya, ternyata di balik itu terdapat proses dua langkah rumit yang
55 mengizinkan program dengan bahasa IL yang sama untuk berjalan di atas mesin yang berbeda. Selain itu, sebuah program dalam bentuk IL dapat diuji lebih mudah oleh sistem operasi dari keberadaan kode yang merusak atau kode yang mencurigakan. Kemampuan ini telah menjadi lebih penting saat program tersebut dipertukarkan melalui jaringan publik, seperti halnya Internet. Bahasa C, C++, Java dan C# kini dikenal dengan sebutan "keluarga besar bahasa pemrograman C" atau "bahasa pemrograman berbasis bahasa C". C++ mengandung semua hal yang dimiliki oleh C tetapi memiliki fitur yang tidak dimiliki oleh C. Java dan C# meskipun masih berbasis bahasa C, keduanya tidaklah sertamerta merupakan pengganti dari bahasa C. Bahasa Java dan C# memiliki kesamaan dalam berbagai bidang, walaupun mirip dengan bahasa C++. Meskipun demikian, semuanya menggunakan banyak sintaksis yang mirip, seperti void, int, struct dan lain sebagainya. 2.7.2 Tujuan Desain C#
Standar European Computer Manufacturer Association (ECMA) mendaftarkan beberapa tujuan desain dari bahasa pemrograman C#, sebagai berikut. a. Bahasa pemrograman C# dibuat sebagai bahasa pemrograman yang bersifat general-purpose (untuk tujuan jamak), berorientasi objek, modern, dan
sederhana. b. Bahasa pemrograman C# ditujukan untuk digunakan dalam mengembangkan komponen perangkat lunak yang mampu mengambil keuntungan dari lingkungan terdistribusi. c. Kemudahan programmer sangatlah penting, khususnya bagi programmer yang telah lama menggunakan bahasa pemrograman C dan C++.
56 d. C# ditujukan agar cocok digunakan untuk menulis program aplikasi baik mulai dari program aplikasi yang sangat besar yang menggunakan sistem operasi yang canggih hingga kepada program aplikasi yang sangat kecil yang memiliki fungsi-fungsi tertentu. e. Meskipun aplikasi C# ditujukan agar bersifat 'ekonomis' dalam hal kebutuhan pemrosesan dan memori komputer, bahasa C# tidak ditujukan untuk bersaing secara langsung dengan kinerja dan ukuran program aplikasi yang dibuat dengan menggunakan bahasa pemrograman C dan bahasa rakitan. f. Bahasa C# harus mencakup pengecekan jenis (type checking) yang kuat, pengecekan larik (array), pendeteksian percobaan terhadap penggunaan variabel-variabel yang belum diinisialisasikan dan kemudahan kode sumber.
Pada bab 2 ini telah dibahas mengenai berbagai metode dan teori yang akan digunakan sebagai dasar untuk membuat aplikasi Forecasting. Metode dan teori tersebut dijelaskan sesuai dengan batasan dalam pembuatan aplikasi ini. Forecasting adalah sebuah konsep time series yang dapat dibentuk dengan berbagai metode, namun dalam penulisan di bab 2 ini hanya metode tertentu saja yang digunakan untuk membuat aplikasi yang akan dibuat.