Confusion matrix adalah suatu metode yang biasanya digunakan untuk
melakukan perhitungan akurasi pada konsep data mining. Rumus ini
melakukan perhitungan dengan 4 keluaran, yaitu: recall, precision,
acuraccy dan error rate.
- Recall adalah proporsi kasus positif yang diidentifikasi dengan benar.
Rumus dari recall = d/(c+d)
- Precision adalah proporsi kasus dengan hasil positif yang benar.
Rumus dari Precision = d/(b+d)
- Accuracy adalah perbandingan kasus yang diidentifikasi benar dengan jumlah semua kasus
Rumus dari accuracy= (a+c)/(a+b+c+d)
- Error Rate adalah kasus yang diidentifikasi salah dengan sejumlah semua kasus
Rumus dari Error Rate = (b+c)/(a+b+c+d)
Keterangan:
a jika hasil prediksi negatif dan data sebenarnya negatif.
b jika hasil prediksi positif sedangkan nilai sebenarnya negatif.
c jika hasil prediksi negatif sedangkan nilai sebenarnya positif.
d jika hasil prediksi positif dan nilai sebenarnya positif.
Monday, May 26, 2014
K-NN
Algoritma k-nearest neighbor (k-NN atau KNN) adalah sebuah metode untuk melakukan klasifikasi terhadap objek berdasarkan data pembelajaran yang jaraknya paling dekat dengan objek tersebut.
Data pembelajaran diproyeksikan ke ruang berdimensi banyak, dimana masing-masing dimensi merepresentasikan fitur dari data. Ruang ini dibagi menjadi bagian-bagian berdasarkan klasifikasi data pembelajaran. Sebuah titik pada ruang ini ditandai kelas c jika kelas c merupakan klasifikasi yang paling banyak ditemui pada k buah tetangga terdekat titk tersebut. Dekat atau jauhnya tetangga biasanya dihitung berdasarkan jarak Euclidean.
Pada fase pembelajaran, algoritma ini hanya melakukan penyimpanan vektor-vektor fitur dan klasifikasi dari data pembelajaran. Pada fase klasifikasi, fitur-fitur yang sama dihitung untuk data test (yang klasifikasinya tidak diketahui). Jarak dari vektor yang baru ini terhadap seluruh vektor data pembelajaran dihitung, dan sejumlah k buah yang paling dekat diambil. Titik yang baru klasifikasinya diprediksikan termasuk pada klasifikasi terbanyak dari titik-titik tersebut.
Nilai k yang terbaik untuk algoritma ini tergantung pada data; secara umumnya, nilai k yang tinggi akan mengurangi efek noise pada klasifikasi, tetapi membuat batasan antara setiap klasifikasi menjadi lebih kabur. Nilai k yang bagus dapat dipilih dengan optimasi parameter, misalnya dengan menggunakan cross-validation. Kasus khusus di mana klasifikasi diprediksikan berdasarkan data pembelajaran yang paling dekat (dengan kata lain, k = 1) disebut algoritma nearest neighbor.
Ketepatan algoritma k-NN ini sangat dipengaruhi oleh ada atau tidaknya fitur-fitur yang tidak relevan, atau jika bobot fitur tersebut tidak setara dengan relevansinya terhadap klasifikasi. Riset terhadap algoritma ini sebagian besar membahas bagaimana memilih dan memberi bobot terhadap fitur, agar performa klasifikasi menjadi lebih baik.
Terdapat beberapa jenis algoritma pencarian tetangga terdekat, diantaranya:
Data pembelajaran diproyeksikan ke ruang berdimensi banyak, dimana masing-masing dimensi merepresentasikan fitur dari data. Ruang ini dibagi menjadi bagian-bagian berdasarkan klasifikasi data pembelajaran. Sebuah titik pada ruang ini ditandai kelas c jika kelas c merupakan klasifikasi yang paling banyak ditemui pada k buah tetangga terdekat titk tersebut. Dekat atau jauhnya tetangga biasanya dihitung berdasarkan jarak Euclidean.
Pada fase pembelajaran, algoritma ini hanya melakukan penyimpanan vektor-vektor fitur dan klasifikasi dari data pembelajaran. Pada fase klasifikasi, fitur-fitur yang sama dihitung untuk data test (yang klasifikasinya tidak diketahui). Jarak dari vektor yang baru ini terhadap seluruh vektor data pembelajaran dihitung, dan sejumlah k buah yang paling dekat diambil. Titik yang baru klasifikasinya diprediksikan termasuk pada klasifikasi terbanyak dari titik-titik tersebut.
Nilai k yang terbaik untuk algoritma ini tergantung pada data; secara umumnya, nilai k yang tinggi akan mengurangi efek noise pada klasifikasi, tetapi membuat batasan antara setiap klasifikasi menjadi lebih kabur. Nilai k yang bagus dapat dipilih dengan optimasi parameter, misalnya dengan menggunakan cross-validation. Kasus khusus di mana klasifikasi diprediksikan berdasarkan data pembelajaran yang paling dekat (dengan kata lain, k = 1) disebut algoritma nearest neighbor.
Ketepatan algoritma k-NN ini sangat dipengaruhi oleh ada atau tidaknya fitur-fitur yang tidak relevan, atau jika bobot fitur tersebut tidak setara dengan relevansinya terhadap klasifikasi. Riset terhadap algoritma ini sebagian besar membahas bagaimana memilih dan memberi bobot terhadap fitur, agar performa klasifikasi menjadi lebih baik.
Terdapat beberapa jenis algoritma pencarian tetangga terdekat, diantaranya:
- Linear scan
- Pohon kd
- Pohon Balltree
- Pohon metrik
- Locally-sensitive hashing (LSH)
Wednesday, May 21, 2014
Data Outliers
Outliers adalah data yang menyimpang terlalu jauh dari data yang lainnya
dalam suatu rangkaian data. Adanya data outliers ini akan membuat
analisis terhadap serangkaian data menjadi bias, atau tidak mencerminkan
fenomena yang sebenarnya. Istilah outliers juga sering dikaitkan dengan
nilai esktrem, baik ekstrem besar maupun ekstrem kecil. Sebagai
ilustrasi, jika ada empat mahasiswa, mahasiswa pertama mempunyai uang
saku per bulan Rp. 500 ribu, mahasiswa kedua Rp. 600 ribu, mahasiswa
ketiga Rp. 700 ribu, dan mahasiswa keempat karena merupakan anak orang
kaya, mempunyai uang saku per bulan sampai dengan Rp. 5 juta. Secara
sekilas tampak bahwa nilai 5 juta relatif jauh dibandingkan uang saku
ketiga mahasiswa yang lain.
Kalau kita rata-ratakan uang saku keempat mahasiswa tersebut, maka
rata-ratanya adalah sebesar (500 ribu + 600 ribu + 700 ribu + 5 juta)/4=
6,8 juta/4 = 1,7 juta. Tiga mahasiswa yang lain tentunya keberatan jika
dinyatakan bahwa rata-rata uang saku mereka adalah Rp. 1,7 juta per
bulan karena jauh sekali dari nilai yang sebenarnya. Contoh lain
misalnya kita ingin merata-ratakan kekayaan seorang PNS usia 30 tahunan,
dengan memasukkan seorang PNS yang kebetulan mempunyai kekayaan sekitar
Rp. 25 Milliar…he he he he
Penangangan Data Outliers
Harus kita apakah data outliers? Apakah harus kita keluarkan? Atau ada
treatment yang lain. Pengeluaran data outliers memang tidak disalahkan,
akan tetapi harus dikaji dulu, apakah data tersebut merupakan bagian
dari populasi atau bukan? Sebagai contoh, seorang PNS dengan kekayaan
dalam contoh di atas, sebaiknya dikeluarkan dari model penelitian karena
‘tidak’ mewakili fenomena PNS yang sebenarnya (jangan-jangan memang
begitu ya fenomenanya? He he). Dalam contoh keempat mahasiswa di atas,
jika tujuannya adalah untuk melihat apakah perlu menaikkan SPP atau
tidak, ya sebaiknya dikeluarkan karena tentunya 3 orang yang mempunyai
uang saku di bawah 1 juga akan keberatan. Akan tetapi dalam kasus yang
lain, data tersebut boleh saja dipergunakan jika memang mewakili kondisi
subjek penelitian. Misalnya, penelitian perusahaan selama krisis di
mana hampir semua perusahaan mengalami kerugian. Akan tetapi ada satu
atau beberapa perusahaan yang dengan jitu melakukan strategi sehingga
menghasilkan profit. Nah, hasil penelitian akan lebih menarik jika data
outliers tidak dikeluarkan. Dalam hal ini, peneliti bahkan dapat
mengkaji strategi apa yang digunakan sehingga dapat dijadikan rujukan
bagi perusahaan yang lain.
Dalam statistik, data outliers sering menimbulkan hasil yang bias. Oleh
karena itu, harus diberikan perlakuan khusus. Pengeluaran data outliers
atau penggunaan data outliers tidak semata-mata merujuk kepada
statistiknya, tetapi juga adjustment dari peneliti. Jika memang data
outliers tersebut tidak dapat dikeluarkan karena masih merupakan
fenomena subjek penelitian ya sebaiknya tetap dipergunakan. Agar efek
outliers dapat direduksi, maka data dilakukan transformasi data,
misalnya dengan logaritman natural, atau akar kuadrat. Atau juga bisa
menggunakan alat statistik non parametrik, sehingga data outliers tidak
akan nampak sebagai outliers karena data dianggap berskala ordinal.
Sebagai contoh, keempat mahasiswa tadi diubah menjadi data ordinal,
sehingga mahasiswa dengan uang saku Rp. 500 ribu menjadi 1, uang saku
Rp. 600 ribu menjadi 2, uang saku Rp. 700 ribu menjadi 3, dan yang
paling besar menjadi 4. Ini hanya contoh saja, dan sebagai informasi
data dalam bentuk ordinal tidak dapat dirata-ratakan, akan tetapi dapat
digunakan untuk mencari korelasi dengan variabel lain.
SPSS VS RAPIDMINER
Banyak vendor software menyediakan berbagai tool data mining.
Contoh-contoh vendor tersebut adalah SPSS (PASW Modeler, sebelumnya
dikenal sebagai Clementine), SAS (Enterprise Miner), StstSoft
(Statistica Data Miner), Salford (CART, MARS, TreeNet, RandomForest),
Angoss (KnowledgesSTUDIO, KnowledgeSeeker), dan Megaputer (PolyAnalyst).
Seperti bisa dilihat diatas, kebanyakan dari tool-tool popular tersebut
dikembangkan oleh perusahaan-perusahaan software statistic terbesar
(SPSS, SAS, dan StatSoft). Kebanyakan dari vendor-vendor tool ‘business
intelligence (BI)’ (seperti IBM Cognos, Oracle Hyperion, SAP Business
Objects, Microstrategy, Teradata, dan Microsoft) juga memiliki tingkat
kemampuan data mining yang terintegrasi dengan tawaran-tawaran software
mereka.tool-tool BI ini utamanya masih berfokus pada pemodelan
multidimensional dan visualisasi data dan tidak ditujukan untuk menjadi
pesaing langsung dari vendor-vendor tool data minig tersebut.
RAPID MINER
Selain tool-tool komersial tadi, beberapa tool software data mining open source dan/atau fratis juga tersedia di internet. Barangkali tool software data mining gratis (dan open source) yang paling popular adalah Weka, yang dikembangkan oleh sejumlah peneliti dari Universitas Waikato di New Zealand (tool tersebut bisa didownload di cs.waikato.ac.nz/ml/weka/). Weka meliputi banyak sekali algorithma untuk berbagai perkerjaan data mining yang berbeda-beda dan memiliki user interface yang intuitif. Satu lagi yang baru saja dirilis, tool data mining gratis (bagi penggunaan nonkomersial) adalah RapidMiner (yang dikembangkan oleh Rapid-I; dan bisa didownload dari rapid-i.com). GUI (graphical user interface) yang sudah ditingkatkan kemampuannya, penerapan banyak sekali algorithma, dan penyatuan dengan berbagai fitur-fitur visualisasi data membuatnya berbeda dari tool-tool gratisan lainnya. Perbedaan utama antara tool-tool komersialm seperti Enterprise Miner, PASW, dan Statistika, dan tool-tool gratisan, seperti Weka dan RapidMiner, adalah efisiensi komputasionalnya. Pekerjaan data mining yang sama yang melibatkan dataset yang agak besar mungkin saja akan memakan waktu yang jauh lebih lama bila dilakukan oleh software gratisan, dan dalam beberapa kasus mungkin bahkan tidak layak untuk digunakan (misalnya, crash karena penggunaan memori computer yang tidak efisien). Tabel berikut adalah daftar dari beberapa produk utama beserta websitenya.
Apa itu SPSS?
SPSS
adalah sebuah program aplikasi yang memiliki kemampuan analisis
statistik cukup tinggi serta sistem manajemen data pada lingkungan
grafis dengan menggunakan menu-menu deskriptif dan kotak-kotak dialog
yang sederhana sehingga mudah untuk dipahami cara pengoperasiannya.
Beberapa aktivitas dapat dilakukan dengan mudah dengan menggunakan
pointing dan clicking mouse.
SPSS
banyak digunakan dalam berbagai riset pemasaran, pengendalian dan
perbaikan mutu (quality improvement), serta riset-riset sains. SPSS
pertama kali muncul dengan versi PC (bisa dipakai untuk komputer
desktop) dengan nama SPSS/PC+ (versi DOS). Tetapi, dengan mulai
populernya system operasi windows. SPSS mulai mengeluarkan versi windows
(mulai dari versi 6.0 sampai versi terbaru sekarang).
Pada
awalnya SPSS dibuat untuk keperluan pengolahan data statistik untuk
ilmu-ilmu social, sehingga kepanjangan SPSS itu sendiri adalah
Statistikal Package for the Social Sciens. Sekarang kemampuan SPSS
diperluas untuk melayani berbagai jenis pengguna (user), seperti untuk
proses produksi di pabrik, riset ilmu sains dan lainnya. Dengan
demikian, sekarang kepanjangan dari SPSS Statistikal Product and Service
Solutions.
SPSS
dapat membaca berbagai jenis data atau memasukkan data secara langsung
ke dalam SPSS Data Editor. Bagaimanapun struktur dari file data
mentahnya, maka data dalam Data Editor SPSS harus dibentuk dalam bentuk
baris (cases) dan kolom (variables). Case berisi informasi untuk satu
unit analisis, sedangkan variable adalah informasi yang dikumpulkan dari
masing-masing kasus.
Hasil-hasil
analisis muncul dalam SPSS Output Navigator. Kebanyakan prosedur Base
System menghasilkan pivot tables, dimana kita bisa memperbaiki tampilan
dari keluaran yang diberikan oleh SPSS. Untuk memperbaiki output, maka
kita dapat mmperbaiki output sesuai dengan kebutuhan. Beberapa kemudahan
yang lain yang dimiliki SPSS dalam pengoperasiannya adalah karena SPSS
menyediakan beberapa fasilitas seperti berikut ini:
Data
Editor. Merupakan jendela untuk pengolahan data. Data editor dirancang
sedemikian rupa seperti pada aplikasi-aplikasi spreadsheet untuk
mendefinisikan, memasukkan, mengedit, dan menampilkan data.
Viewer.
Viewer mempermudah pemakai untuk melihat hasil pemrosesan, menunjukkan
atau menghilangkan bagian-bagian tertentu dari output, serta memudahkan
distribusi hasil pengolahan dari SPSS ke aplikasi-aplikasi yang lain.
Multidimensional
Pivot Tables. Hasil pengolahan data akan ditunjukkan dengan
multidimensional pivot tables. Pemakai dapat melakukan eksplorasi
terhdap tabel dengan pengaturan baris, kolom, serta layer. Pemakai juga
dapat dengan mudah melakukan pengaturan kelompok data dengan melakukan
splitting tabel sehingga hanya satu group tertentu saja yang ditampilkan
pada satu waktu.
High-Resolution
Graphics. Dengan kemampuan grafikal beresolusi tinggi, baik untuk
menampilkan pie charts, bar charts, histogram, scatterplots, 3-D
graphics, dan yang lainnya, akan membuat SPSS tidak hanya mudah
dioperasikan tetapi juga membuat pemakai merasa nyaman dalam
pekerjaannya.
Database
Access. Pemakai program ini dapat memperoleh kembali informasi dari
sebuah database dengan menggunakan Database Wizard yang disediakannya.
Data
Transformations. Transformasi data akan membantu pemakai memperoleh
data yang siap untuk dianalisis. Pemakai dapat dengan mudah melakukan
subset data, mengkombinasikan kategori, add, aggregat, merge, split, dan
beberapa perintah transpose files, serta yang lainnya.
Electronic
Distribution. Pengguna dapat mengirimkan laporan secara elektronik
menggunakan sebuah tombol pengiriman data (e-mail) atau melakukan export
tabel dan grafik ke mode HTML sehingga mendukung distribusi melalui
internet dan intranet.
Online
Help. SPSS menyediakan fasilitas online help yang akan selalu siap
membantu pemakai dalam melakukan pekerjaannya. Bantuan yang diberikan
dapat berupa petunjuk pengoperasian secara detail, kemudahan pencarian
prosedur yang diinginkan sampai pada contoh-contoh kasus dalam
pengoperasian program ini.
Akses
Data Tanpa Tempat Penyimpanan Sementara. Analisis file-file data yang
sangat besar disimpan tanpa membutuhkan tempat penyimpanan sementara.
Hal ini berbeda dengan SPSS sebelum versi 11.5 dimana file data yang
sangat besar dibuat temporary filenya.
Interface
dengan Database Relasional. Fasilitas ini akan menambah efisiensi dan
memudahkan pekerjaan untuk mengekstrak data dan menganalisnya dari
database relasional.
Analisis
Distribusi. Fasilitas ini diperoleh pada pemakaian SPSS for Server atau
untuk aplikasi multiuser. Kegunaan dari analisis ini adalah apabila
peneliti akan menganalisis file-file data yang sangat besar dapat
langsung me-remote dari server dan memprosesnya sekaligus tanpa harus
memindahkan ke komputer user.
Multiple Sesi. SPSS memberikan kemampuan untuk melakukan analisis lebih dari satu file data pada waktu yang bersamaan.
Mapping.
Visualisasi data dapat dibuat dengan berbagai macam tipe baik secara
konvensional atau interaktif, misalnya dengan menggunakan tipe bar, pie
atau jangkauan nilai, simbol gradual, dan chart.Sunday, May 18, 2014
Kecedasan Buatan
Kecerdasan Buatan adalah salah satu
cabang Ilmu pengetahuan berhubungan dengan pemanfaatan mesin untuk
memecahkan persoalan yang rumit dengan cara yang lebih manusiawi. Hal
Ini biasanya dilakukan dengan mengikuti/mencontoh karakteristik dan
analogi berpikir dari kecerdasan/Inteligensia manusia, dan menerapkannya
sebagai algoritma yang dikenal oleh komputer. Dengan suatu pendekatan
yang kurang lebih fleksibel dan efisien dapat diambil tergantung dari
keperluan, yang mempengaruhi bagaimana wujud dari perilaku kecerdasan
buatan. AI biasanya dihubungkan dengan Ilmu Komputer, akan tetapi juga
terkait erat dengan bidang lain seperti Matematika, Psikologi,
Pengamatan, Biologi, Filosofi, dan yang lainnya. Kemampuan untuk
mengkombinasikan pengetahuan dari semua bidang ini pada akhirnya akan
bermanfaat bagi kemajuan dalam upaya menciptakan suatu kecerdasan
buatan.
Pengertian lain dari kecerdasan buatan
adalah bagian ilmu komputer yang membuat agar mesin komputer dapat
melakukan pekerjaan seperti dan sebaik yang dilakukan manusia. Pada awal
diciptakannya, komputer hanya difungsikan sebagai alat hitung saja.
Namun seiring dengan perkembangan jaman, maka peran komputer semakin
mendominasi kehidupan manusia. Komputer tidak lagi hanya digunakan
sebagai alat hitung, lebih dari itu, komputer diharapkan untuk dapat
diberdayakan untuk mengerjakan segala sesuatu yang bisa dikerjakan oleh
manusia.
Manusia bisa menjadi pandai dalam
menyelesaikan segala permasalahan di dunia ini karena manusia mempunyai
pengetahuan dan pengalaman Pengetahuan diperoleh dari belajar. Semakin
banyak bekal pengetahuan yang dimiliki oleh seseorang tentu saja
diharapkan akan lebih mampu dalam menyelesaikan permasalahan. Namu bekal
pengetahuan saja tidak cukup, manusia juga diberi akal untuk melakukan
penalaran, mengambil kesimpulan berdasarkan pengetahuan dan pengalaman
yang mereka miliki. Tanpa memiliki kemampuan untuk menalar dengan baik,
manusia dengan segudang pengalaman dan pengetahuan tidak akan dapat
menyelesaikan masalah dengan baik. Demikian pula dengan kemampuan
menalar yang sangat baik, namun tanpa bekal pengetahuan dan pengalaman
yang memadai, manusia juga tidak akan bisa menyelesaikan masalah dengan
baik.
Agar komputer bisa bertindak seperti dan
sebaik manusia, maka komputer juga harus diberi bekal pengetahuan dan
mempunyai kemampuan untuk menalar. Untuk itu AI akan mencoba untuk
memberikan beberapa metoda untuk membekali komputer dengan kedua
komponen tersebut agar komputer bisa menjadi mesin pintar.
Lingkup utama kecerdasan buatan:
- Sustem pakar. Komputer digunakan sebagai saran untuk menyimpan pengetahuan para pakar. Dengan demikian komputer akan memiliki keahlian untuk menyelesaikan masalah dengan meniru keahlian yang dimiliki para pakar
- Pengolahan bahasa alami. Dengan pengolahan bahasa alami ini diharapkan user mampu berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari.
- Pengenalan ucapan. Melalui pengenalan ucapan diharapkan manusia mampu berkomunikasi dengan komputer dengan menggunakan suara.
- Robotika dan Sistem sensor
- Computer vision, mencoba untuk dapat mengintrepetasikan gambar atau objek-objek tampak melalui komputer
- Intelligent Computer aid Instruction. Komputer dapat digunakan sebagai tutor yang dapat melatih dan mengajar
Keuntungan Kecerdasan Buatan :
- Kecerdasan buatan lebih bersifat permanen. Kecerdasan alami akan cepat mengalami perubahan. Hal ini dimungkinkan karena sifat manusia yang pelupa. Kecerdasan buatan tidak akan berubah sepanjang sistem komputer dan program tidak mengubahnya.
- Kecerdasan buatan lebih mudah diduplikasi dan disebarkan. Mentransfer pengetahuan manusia dari satu orang ke orang lain butuh proses dan waktu lama. Disamping itu suatu keahlian tidak akan pernah bisa diduplikasi secara lengkap. Sedangkan jika pengetahuan terletak pada suatu sistem komputer, pengetahuan tersebuat dapat ditransfer atau disalin dengan mudah dan cepat dari satu komputer ke komputer lain
- Kecerdasan buatan lebih murah dibanding dengan kecerdasan alami. Menyediakan layanan komputer akan lebih mudah dan lebih murah dibanding dengan harus mendatangkan seseorang untuk mengerjakan sejumlah pekerjaan dalam jangka waktu yang sangat lama.
- Kecerdasan buatan bersifat konsisten. Hal ini disebabkan karena kecerdasan busatan adalah bagian dari teknologi komputer. Sedangkan kecerdasan alami senantiasa berubah-ubah.
- Kecerdasan buatan dapat didokumentasikan. Keputusan yang dibuat komputer dapat didokumentasikan dengan mudah dengan melacak setiap aktivitas dari sistem tersebut. Kecerdasan alami sangat sulit untuk direproduksi.
- Kecerdasan buatan dapat mengerjakan pekerjaan lebih cepat dibanding dengan kecerdasan alami
- Kecerdasan buatan dapat mengerjakan pekerjaan lebih baik dibanding dengan kecerdasan alami.
Keuntungan kecerdasan alami:
- Kreatif. Kemampuan untuk menambah ataupun memenuhi pengetahuan itu sangat melekat pada jiwa manusia. Pada kecerdasan buatan, untuk menambah pengetahuan harus dilakukan melalui sistem yang dibangun
- Kecerdasan alami memungkinkan orang untuk menggunakan pengalaman secara langsung. Sedangkan pada kecerdasan buatan harus bekerja dengan input-input simbolik
- Pemikiran manusia dapat digunakan secara luas, sedangkan kecerdasan buatan sangat terbatas.
Friday, May 16, 2014
Adaptive Neuro-Fuzzy Inference System (ANFIS)
Adaptive Neuro-Fuzzy Inference System (ANFIS) merupakan jaringan adaptif yang berbasis pada sistem kesimpulan fuzzy (fuzzy inference system). Dengan penggunaan suatu prosedur hybrid learning, ANFIS dapat membangun suatu mapping input-output yang keduanya berdasarkan pada pengetahuan manusia (pada bentuk aturan fuzzy if-then) dengan fungsi keanggotaan yang tepat.
Sistem kesimpulan fuzzy yang memanfaatkan aturan fuzzy if-then dapat memodelkan aspek pengetahuan manusia yang kwalitatif dan memberi reasoning processes tanpa
memanfaatkan analisa kwantitatif yang tepat. Ada beberapa aspek dasar
dalam pendekatan ini yang membutuhkan pemahaman lebih baik, secara
rinci:
1. Tidak ada metoda baku untuk men-transform pengetahuan atau pengalaman manusia ke dalam aturan dasar (rule base) dan database tentang fuzzy inference system.
2. Ada suatu kebutuhan bagi metoda efektif untuk mengatur (tuning) fungsi keanggotaan (membership function/MF) untuk memperkecil ukuran kesalahan keluaran atau memaksimalkan indeks pencapaian.
ANFIS dapat bertindak sebagai suatu dasar untuk membangun satu kumpulan aturan fuzzy if-then dengan fungsi keanggotaan yang tepat, yang berfungsi untuk menghasilkan pasangan input-output yang tepat.
Aturan Fuzzy If-Then
Pernyataan aturan fuzzy if-then atau fuzzy conditional adalah
ungkapan dengan format IF A THEN B, di mana A dan B adalah label dari
himpunan fuzzy yang ditandai oleh fungsi keanggotaan yang sesuai. Dalam
kaitan dengan formatnya, aturan fuzzy if-then sering digunakan untuk menangkap “mode”
yang tidak tepat dalam memberi alasan yang digunakan dalam kemampuan
manusia untuk membuat keputusan dalam suatu lingkungan yang tidak pasti
dan tidak tepat.
Suatu contoh yang menguraikan fakta sederhana adalah
If pressure is high, then volume is small
dimana pressure dan volume adalah variabel bahasa (linguistic variables), high dan small adalah linguistic values atau label linguistik yang merupakan karakterisrik dari fungsi keanggotaan.
Melalui penggunaan fungsi keanggotaan dan label bahasa, suatu aturan fuzzy if-then dapat dengan mudah menangkap “peraturan utama” yang digunakan oleh manusia.
Sistem Kesimpulan Fuzzy
Pada
dasarnya suatu sistem kesimpulan fuzzy terdiri atas 5 (lima) blok
fungsional (blok diagram fuzzy inference system digambarkan pada gambar
dibawah:
- sebuah aturan dasar (rule base) yang berisi sejumlah aturan fuzzy if-then
- suatu database yang menggambarkan fungsi keanggotaan dari himpunan fuzzy yang digunakan pada aturan fuzzy;
- suatu unit pengambilan keputusan (decision making-unit) melakukan operasi inference (kesimpulan) terhadap aturan;
- suatu fuzzification interface mengubah bentuk masukan derajat crisp/tingkat kecocokan dengan nilai bahasa;
- suatu defuzzification interface yang mengubah bentuk hasil fuzzy dari kesimpulan ke dalam suatu output crisp.
Sistem
inferensi fuzzy yang digunakan adalah sistem inferensi fuzzy model
Tagaki-Sugeno-Kang (TSK) orde satu dengan pertimbangan kesederhanaan dan
kemudahan komputasi.
Rule 1 : if x is A1 and y is B1 then z1 = ax + by + c
premis konsekuen
Rule 2 : if x is A2 and y is B2 then z2 = px + qy + r
premis konsekuen
Input adalah x dan y. Konsekuen adalah z.
Langkah dari fuzzy reasoning dilakukan oleh sistem kesimpulan fuzzy adalah:
Jaringan Adaptif: Arsitektur dan Algoritma Pembelajaran
Sesuai
dengan namanya, jaringan adaptif merupakan suatu struktur jaringan yang
terdiri dari sejumlah simpul yang terhubung melalui penghubung secara
langsung (directional links). Tiap simpul menggambarkan sebuah unit
proses, dan penghubung antara simpul menentukan hubungan kausal antara
simpul yang saling berhubungan. Semua atau sebagian simpul bersifat
adaptif (bersimbol kotak) dapat dilihat pada gambar 2.8, yang artinya
keluaran dari simpul tersebut bergantung pada parameter peubah yang
mempengaruhi simpul itu.
Arsitektur ANFIS
Simpul-simpul (neuron-neuron) pada arsitektur ANFIS(gambar 2.8):
- Nilai-nilai (Membership function).
- Aturan- aturan (T-norm yang berbeda, umumnya yang digunakan operasi product).
- Normalisasi (Penjumlahan dan embagian aritmatika).
- Fungsi-fungsi (Regresi linier dan pengalian dengan ).
- Output (Penjumlahan aljabar).
Simpul-simpul
tersebut dibentuk dalam arsitektur ANFIS yang terdiri dari 5 (lima)
lapis. Fungsi dari setiap lapis tersebut sebagai berikut:
Lapis 1
Setiap simpul i pada lapis 1 adalah simpul adaptif dengan nilai fungsi simpul sebagai berikut:
O1,i = μAi (X) untuk i=1,2
O1,i = μAi (X) untuk j=1,2
dengan : x dan y adalah masukan simpul ke i.
Ai(x) dan Bj(y)
adalah label linguistik yang terkait dengan simpul tersebut. O1,i dan
O1,j adalah derajat keanggotaan himpunan fuzzy A1, A2, atau B1 B2.
Fungsi keanggotaan untuk A atau B dapat diparameterkan, misalnya fungsi segitiga:
Dengan {a,b,c} adalah himpunan parameter. Parameter dalam lapis ini disebut parameter premis yang adaptif.
Lapis 2
Setiap simpul pada lapis ini adalah simpul tetap berlabel ∏ dengan keluarannya adalah produk dari semua sinyal yang datang.
O2,i = μAi (X) x μBi (X), I = 1,2;
Setiap
keluaran simpul dari lapis ini menyatakan kuat penyulutan (fire
strength) dari tiap aturan fuzzy. Fungsi ini dapat diperluas apabila
bagian premis memiliki lebih dari dua himpunan fuzzy. Banyaknya simpul
pada lapisan ini menunjukkan banyaknya aturan yang dibentuk. Fungsi
perkalian yang digunakan adalah interpretasi operator and.
Lapisan 3
Setiap
simpul pada lapis ini adalah simpul tetap berlabel N. Simpul ini
menghitung rasio dari kuat penyulutan atau fungsi derajat pengaktifan
aturan ke i pada lapisan sebelumnya terhadap jumlah semua kuat penyulut
dari semua aturan pada lapisan sebelumnya.
Keluaran lapis ini disebut kuat penyulut ternormalisasi.
Lapis 4
Setiap simpul pada lapis ini adalah simpul adaptif dengan fungsi simpul:
dengan: wi adalah kuat penyulut ternormalisasi dari lapis 3.
parameter
{pix + qiy + ri} Adalah himpunan parameter dari simpul ini. Parameter pada lapis ini disebut parameter konsekuensi.
Lapis 5
Simpul
tunggal pada lapis ini adalah simpul tetap dengan label Σ yang
menghitung keluaran keseluruhan sebagai penjumlahan semua sinyal yang
datang dari lapisan 4.
Jaringan
adaptif dengan lima lapisan diatas ekivalen dengan sistem inferensi
fuzzy Takagi–Sugeno–Kang (TSK) atau yang lebih dikenal dengan sugeno.
HERLISA EKA PUTRI_113068040
Analisis dan Implementasi ADAPTIVE NEURO-FUZZY INFERENCE SYSTEM (ANFIS) Untuk Mengurangi Impulsive Noise Pada Citra Digital
SSE
Error Sum of Squares (SSE)
SSE is the sum of the squared differences between each observation and its group's mean. It can be used as a measure of variation within a cluster. If all cases within a cluster are identical the SSE would then be equal to 0.
The formula for SSE is:
1.
Where n is the number of observations xi is the value of the ith observation and 0 is the mean of all the observations. This can also be rearranged to be written as seen in J.H. Ward's paper.
2.
At each stage of cluster analysis the total SSE is minimized with SSEtotal = SSE1 + SSE2 + SSE3 + SSE4 .... + SSEn. At the initial stage when each case is its own cluster this of course will be 0.
You can stop reading right here if you are not interested in the mathematical treatment of this in Ward's method. It's really not important in getting Ward's method to work in SPSS.
Used in Ward's Method of clustering in the first stage of clustering only the first 2 cells clustered together would increase SSEtotal. For cells described by more than 1 variable this gets a little hairy to figure out, it's a good thing we have computer programs to do this for us. If you are interested in trying to make your own program to perform this procedure I've scoured the internet to find a nice procedure to figure this out. The best I could do is this: when a new cluster is formed, say between clusters i & j the new distance between this cluster and another cluster (k) can be calculated using this formula:
3.
dk.ij = {(ck + ci)dki + (cj + ck)djk − ckdij}/(ck + ci + cj).
Where dk.ij = the new distance between clusters, ci,j,k = the number of cells in cluster i, j or k; dki = the distance between cluster k and i at the previous stage.
Back at the first stage (the zeroth stage being individual cells) this means that the two closest cells in terms of (usually) squared Euclidean distance will be combined. The SSE will be determined by first calculating the mean for each variable in the new cluster (consisting of 2 cells). The means of each of the variables is the new cluster center. The 'error' from each point to this center is then determined and added together (equation 1).
Remember that distance in 'n' dimensions is:
4.
Dij = distance between cell i and cell j; xvi = value of variable v for cell i; etc.
Squared Euclidean distance is the same equation, just without the squaring on the left hand side:
5.
This of course looks a lot like equation 1, and in many ways is the same. However, instead of determining the distance between 2 cells (i & j) its between cell i (or j) and the vector means of cells i & j.
So, the SSE for stage 1 is:
6.
Sorry, about using the same variable (x) for 2 different things in the same equation. This will determine the distance for each of cell i's variables (v) from each of the mean vectors variable (xvx) and add it to the same for cell j. This is actually the same as saying equation 5 divided by 2 to give:
7.
The '2' is there because it's an average of '2' cells.
This is just for the first stage because all other SSE's are going to be 0 and the SSE at stage 1 = equation 7. For the example data used in this website cells 2 & 19 are joined in the first stage giving an SSE value of 0.278797. This cluster is never going to be broken apart again for the rest of the stages of clustering, only single cells or cells in other clusters may join with it.
Continuing in the example; at stage 2 cells 8 &17 are joined because they are the next closest giving an SSE of 0.458942. Because all SSE's have to be added together at each stage the total SSE2 is going to be 0.737739 (you'll find the same numbers doing the equations in Excel or using Ward's Method hierarchical cluster analysis in SPSS). At the 3rd stage cells 7 & 15 are joined together with a SSE of 0.549566. This again has to be added giving a total SSE3 of 1.287305.
At the 4th stage something different happens. Cell 3 combines with cells 8 & 17 (which were already joined at stage 3). Equation 5 can't be used in this case because that would be like treating the cluster with cells 8 & 17 in it as a single point with no error (SSE) associated with it. This is why equation 3 has to be used. For the purposes of Ward's Method dk.ij is going to be the same as SSE because it is being divided by the total number cells in all clusters to obtain the average (ck + ci + cj; the same as dividing by '2' cells in equation 7). I've calculated this on this Excel spreadsheet here. So dk.ij is 0.573716.
SSE is the sum of the squared differences between each observation and its group's mean. It can be used as a measure of variation within a cluster. If all cases within a cluster are identical the SSE would then be equal to 0.
The formula for SSE is:
1.
Where n is the number of observations xi is the value of the ith observation and 0 is the mean of all the observations. This can also be rearranged to be written as seen in J.H. Ward's paper.
2.
At each stage of cluster analysis the total SSE is minimized with SSEtotal = SSE1 + SSE2 + SSE3 + SSE4 .... + SSEn. At the initial stage when each case is its own cluster this of course will be 0.
You can stop reading right here if you are not interested in the mathematical treatment of this in Ward's method. It's really not important in getting Ward's method to work in SPSS.
Used in Ward's Method of clustering in the first stage of clustering only the first 2 cells clustered together would increase SSEtotal. For cells described by more than 1 variable this gets a little hairy to figure out, it's a good thing we have computer programs to do this for us. If you are interested in trying to make your own program to perform this procedure I've scoured the internet to find a nice procedure to figure this out. The best I could do is this: when a new cluster is formed, say between clusters i & j the new distance between this cluster and another cluster (k) can be calculated using this formula:
3.
dk.ij = {(ck + ci)dki + (cj + ck)djk − ckdij}/(ck + ci + cj).
Where dk.ij = the new distance between clusters, ci,j,k = the number of cells in cluster i, j or k; dki = the distance between cluster k and i at the previous stage.
Back at the first stage (the zeroth stage being individual cells) this means that the two closest cells in terms of (usually) squared Euclidean distance will be combined. The SSE will be determined by first calculating the mean for each variable in the new cluster (consisting of 2 cells). The means of each of the variables is the new cluster center. The 'error' from each point to this center is then determined and added together (equation 1).
Remember that distance in 'n' dimensions is:
4.
Dij = distance between cell i and cell j; xvi = value of variable v for cell i; etc.
Squared Euclidean distance is the same equation, just without the squaring on the left hand side:
5.
This of course looks a lot like equation 1, and in many ways is the same. However, instead of determining the distance between 2 cells (i & j) its between cell i (or j) and the vector means of cells i & j.
So, the SSE for stage 1 is:
6.
Sorry, about using the same variable (x) for 2 different things in the same equation. This will determine the distance for each of cell i's variables (v) from each of the mean vectors variable (xvx) and add it to the same for cell j. This is actually the same as saying equation 5 divided by 2 to give:
7.
The '2' is there because it's an average of '2' cells.
This is just for the first stage because all other SSE's are going to be 0 and the SSE at stage 1 = equation 7. For the example data used in this website cells 2 & 19 are joined in the first stage giving an SSE value of 0.278797. This cluster is never going to be broken apart again for the rest of the stages of clustering, only single cells or cells in other clusters may join with it.
Continuing in the example; at stage 2 cells 8 &17 are joined because they are the next closest giving an SSE of 0.458942. Because all SSE's have to be added together at each stage the total SSE2 is going to be 0.737739 (you'll find the same numbers doing the equations in Excel or using Ward's Method hierarchical cluster analysis in SPSS). At the 3rd stage cells 7 & 15 are joined together with a SSE of 0.549566. This again has to be added giving a total SSE3 of 1.287305.
At the 4th stage something different happens. Cell 3 combines with cells 8 & 17 (which were already joined at stage 3). Equation 5 can't be used in this case because that would be like treating the cluster with cells 8 & 17 in it as a single point with no error (SSE) associated with it. This is why equation 3 has to be used. For the purposes of Ward's Method dk.ij is going to be the same as SSE because it is being divided by the total number cells in all clusters to obtain the average (ck + ci + cj; the same as dividing by '2' cells in equation 7). I've calculated this on this Excel spreadsheet here. So dk.ij is 0.573716.
Now there are these clusters at stage 4 (the rest
are single cells and don't contribute to the SSE):
1. (2 & 19) from stage 1; SSE =
0.278797
2. (8 & 17) from stage 2; SSE =
0.458942
2. (7 & 15) from stage 3; SSE =
0.549566
3. ((8 &17) & 3) from stage
4; SSE = 0.573716
Adding all of these up results in SSE4
= 1.861021
Equation 3 can be used at all stages
it's just that with only 2 cells being joined it is reduced to equation 7. This
obviously becomes quite tedious doing it manually because not only do you do
this addition you have to find the smallest distance at each stage which means
redoing distance matrices. Good thing there are programs already made to take
this tedium out of our lives. But this info should be handy if you want to make
your own program.
The point of doing all of this is to
not only find the nearest cluster pairs at each stage, but also to determine the
increase in SSE at each stage if this is to be used for plotting dendrograms or
determining cutoff points for the number of clusters.
ANFIS
Mengombinasikan sistem fuzzy dengan jaringan syaraf
Jaringan syaraf dan sistem fuzzy memiliki beberapa kesamaan. Jika sudah tidak ada model matematika dari masalah yang diberikan, maka keduanya dapat digunakan untuk memecahkan masalah (misalnya pattern recognition, regression atau density estimation). Jaringan syaraf dan sistem fuzzy hanya mempunyai kelemahan dan kelebihan yang hampir sepenuhnya hilang dengan menggabungkan kedua konsep-konsep tertentu.
Jaringan syaraf hanya dapat ikut berperan jika masalah yang ada diungkapkan oleh contoh yang diamati (dengan jumlah yang cukup). Observasi ini digunakan untuk pelatihan secara black box. Di satu sisi tidak ada pengetahuan tentang masalah ini perlu diberikan. Di sisi lain, bagaimanapun, adalah tidak mudah untuk mengekstrak aturan yang mudah dipahami dari struktur jaringan syaraf tersebut.
Sebaliknya, sistem kabur menuntut aturan linguistik sebagai pengganti contoh pembelajaran sebagai pengetahuan sebelumnya. Selanjutnya variabel input dan output harus dijelaskan secara linguistik/bahasa. Jika pengetahuan tidak lengkap, salah atau bertentangan, maka sistem fuzzy harus disetel(tuned). Karena tidak ada pendekatan formal untuk itu, tuning dilakukan dengan cara heuristik. Hal ini biasanya sangat memakan waktu dan rawan kesalahan.
Definisi ANFIS
Adaptive Neuro-Fuzzy Inference System (ANFIS) adalah penggabungan mekanisme fuzzy inference system yang digambarkan dalam arsitektur jaringan syaraf.
- Sistem inferensi fuzzy yang digunakan adalah sistem inferensi fuzzy model Tagaki-Sugeno-Kang (TSK) orde satu dengan pertimbangan kesederhanaan dan kemudahan komputasi.
Metode adaptive neuro fuzzy inference system (ANFIS) merupakan metode yang menggunakan jaringan syaraf tiruan untuk mengimplementasikan system inferensi fuzzy. Keunggulan system inference fuzzy adalah dapat menerjemahkan pengetahuan dari pakar dalam bentuk aturan-aturan, namun biasanya dibutuhkan waktu yang lama untuk menetapkan fungsi keanggotaannya. Oleh sebab itu dibutuhkan teknik pembelajaran dari jaringan syaraf tiruan untuk mengotomatisasi proses tersebut sehingga dapat mengurangi waktu pencarian, hal tersebut menyebabkan metoda ANFIS sangat baik diterapkan dalam berbagai bidang.
10 Well-Known Algorithm in Data Mining
Salah satu konferensi internasional terbesar tentang data mining, IEEE
ICDM, baru saja berakhir tanggal 22 Desember 2006 yang lalu. Seperti
yang telah saya umumkan pada posting saya yang lalu tentang 10 Well-Known Algorithm in Data Mining,
salah satu feature pada ICDM kali ini adalah identifikasi top 10
algorithms in Data Mining. Dari 18 nominasi algoritma yang dibagi dalam
10 topik, telah diumumkan 10 Algoritma tersebut.
Dari 18 nominasi tersebut dilakukan voting oleh anggota program committee KDD-06, ICDM’06, SDM’06, pemenang ACM KDD Innovation Award, dan pemenang IEEE ICDM Research Contribution Award yang kemudian diperoleh ranking 10 algoritma teratas. Berikut ini adalah hasilnya:
#1: C4.5
#2: K-Means
#3: SVM
#4: Apriori
#5: EM
#6: PageRank
#7: AdaBoost
#7: kNN
#7: Naive Bayes
#10: CART
AdaBost, kNN, dan Naive Bayes memperoleh jumlah voting yang sama.
Ada yang menarik dari hasil ini. Semua nominasi (4 algoritma: C4.5, kNN, Naive Bayes, CART) dari area klasifikasi data masuk dalam top 10. Hal ini menunjukkan bahwa klasifikasi data merupakan task data mining yang paling umum dan paling sering dilakukan. Kemudian, semua nominasi area statistical learning (SVM dan EM) juga masuk dalam 10 ranking teratas. Topik-topik advance seperti sequential patterns, integrated mining, rough sets, graph mining agaknya masih kurang terlalu populer. Hanya PageRank dari area link mining yang masuk dalam top 10 (mungkin, karena terkatrol popularitas Google). Dan yang terakhir, algoritma-algoritma teratas ini merupakan algoritma yang banyak dipakai tidak hanya dalam data mining saja.
Jika dihubungkan dengan kompetisi-kompetisi data mining yang pernah dilakukan, umumnya para pemenangnya menggunakan algoritma-algoritma ada pada daftar ini. Algoritma-algoritma seperti SVM, dan Naive Bayes sangat sering kali digunakan.
Mungkin tidak lama lagi akan segera muncul survey paper untuk algoritma-algoritma ini.
(Presented at ICDM 2006 in Hong Kong by Xindong Wu and Vipin Kumar)
Selalu saja ada hal menarik dari IEEE ICDM (International Conference on Data Mining). Jika tahun lalu IEEE ICDM mengidentifikasi 10 Challenging Problem in Data Mining, maka tahun ini IEEE ICDM mengidentifikasi algoritma data mining yang paling dikenal. Hal inilah yang membedakan IEEE ICDM dengan konferensi lainnya.
Setelah melewati proses seleksi (proses seleksinya dapat dilihat melalui link yang ada pada referensi di bawah), berikut ini adalah nominasi 10 Well-Known Algorithm in Data Mining (berikut dengan perhitungan citation dengan Google Scholar sampai akhir Oktober 2006 yang digunakan sebagai verifikasi) yang terbagi dalam 10 kategori:
Algoritma-algoritma ini adalah yang paling umum digunakan dalam data mining, tentunya dengan masing-masing modifikasi sesuai dengan permasalahan yang dihadapi. Sangat baik jika kita mengenal dengan baik algoritma-algoritma ini.
Menurut saya semakin simpel algoritma tersebut, jelas semakin populer. Banyak orang yang lebih tertarik untuk menggunakannya. Kita tunggu saja, algoritma-algoritma mana yang termasuk 10 Well-Known Algorithm in Data Mining. Dilihat dari nominasinya, 18 algoritma tersebut akan bersaing ketat.
Dari 18 nominasi tersebut dilakukan voting oleh anggota program committee KDD-06, ICDM’06, SDM’06, pemenang ACM KDD Innovation Award, dan pemenang IEEE ICDM Research Contribution Award yang kemudian diperoleh ranking 10 algoritma teratas. Berikut ini adalah hasilnya:
#1: C4.5
#2: K-Means
#3: SVM
#4: Apriori
#5: EM
#6: PageRank
#7: AdaBoost
#7: kNN
#7: Naive Bayes
#10: CART
AdaBost, kNN, dan Naive Bayes memperoleh jumlah voting yang sama.
Ada yang menarik dari hasil ini. Semua nominasi (4 algoritma: C4.5, kNN, Naive Bayes, CART) dari area klasifikasi data masuk dalam top 10. Hal ini menunjukkan bahwa klasifikasi data merupakan task data mining yang paling umum dan paling sering dilakukan. Kemudian, semua nominasi area statistical learning (SVM dan EM) juga masuk dalam 10 ranking teratas. Topik-topik advance seperti sequential patterns, integrated mining, rough sets, graph mining agaknya masih kurang terlalu populer. Hanya PageRank dari area link mining yang masuk dalam top 10 (mungkin, karena terkatrol popularitas Google). Dan yang terakhir, algoritma-algoritma teratas ini merupakan algoritma yang banyak dipakai tidak hanya dalam data mining saja.
Jika dihubungkan dengan kompetisi-kompetisi data mining yang pernah dilakukan, umumnya para pemenangnya menggunakan algoritma-algoritma ada pada daftar ini. Algoritma-algoritma seperti SVM, dan Naive Bayes sangat sering kali digunakan.
Mungkin tidak lama lagi akan segera muncul survey paper untuk algoritma-algoritma ini.
(Presented at ICDM 2006 in Hong Kong by Xindong Wu and Vipin Kumar)
Selalu saja ada hal menarik dari IEEE ICDM (International Conference on Data Mining). Jika tahun lalu IEEE ICDM mengidentifikasi 10 Challenging Problem in Data Mining, maka tahun ini IEEE ICDM mengidentifikasi algoritma data mining yang paling dikenal. Hal inilah yang membedakan IEEE ICDM dengan konferensi lainnya.
Setelah melewati proses seleksi (proses seleksinya dapat dilihat melalui link yang ada pada referensi di bawah), berikut ini adalah nominasi 10 Well-Known Algorithm in Data Mining (berikut dengan perhitungan citation dengan Google Scholar sampai akhir Oktober 2006 yang digunakan sebagai verifikasi) yang terbagi dalam 10 kategori:
Classification #1. C4.5 (Google Scholar Count in October 2006: 6907) #2. CART (Google Scholar Count in October 2006: 6078) #3. Naive Bayes (Google Scholar Count: 498) #4. K Nearest Neighbours (kNN) (Google SCholar Count: 183) Statistical Learning #5. SVM (Google Scholar Count in October 2006: 6441) #6. EM (Google Scholar Count in October 2006: 848) Association Analysis #7. Apriori (Google Scholar Count in October 2006: 3639) #8. FP-Tree (Google Scholar Count in October 2006: 1258) Link Mining #9. PageRank (Google Shcolar Count in October 2006: 2558) #10. HITS (Google Shcolar Count in October 2006: 2240) Clustering #11. K-Means (Google Scholar Count in October 2006: 1579) #12. BIRCH (Google Scholar Count in October 2006: 853) Bagging and Boosting #13. AdaBoost (Google Scholar Count in October 2006: 1576) Sequential Patterns #14. GSP (Google Scholar Count in October 2006: 596) #15. PrefixSpan (Google Scholar Count in October 2006: 248) Integrated Mining #16. CBA (Google Scholar Count in October 2006: 436) Rough Sets #17. Finding reduct (Google Scholar Count in October 2006: 329) Graph Mining #18. gSpan (Google Scholar Count in October 2006: 155)Dari daftar nominasi, algoritma-algoritma yang masuk nominasi merupakan algoritma-algoritma pionir pada masing-masing pendekatan. Dan, banyak pengembangan lebih lanjut dari masing-masing algoritma tersebut. Hal ini dapat dilihat dari banyaknya paper yang mengutip algoritma tersebut. Sebagai informasi, algoritma yang jumlah citation berdasarkan Google Scholar tidak sampai 55 citation sudah tereliminasi.
Algoritma-algoritma ini adalah yang paling umum digunakan dalam data mining, tentunya dengan masing-masing modifikasi sesuai dengan permasalahan yang dihadapi. Sangat baik jika kita mengenal dengan baik algoritma-algoritma ini.
Menurut saya semakin simpel algoritma tersebut, jelas semakin populer. Banyak orang yang lebih tertarik untuk menggunakannya. Kita tunggu saja, algoritma-algoritma mana yang termasuk 10 Well-Known Algorithm in Data Mining. Dilihat dari nominasinya, 18 algoritma tersebut akan bersaing ketat.
Supervised and Unsupervised
JARINGAN SARAF TIRUAN
Jaringan Saraf Tiruan (Artificial Neural Network)
merupakan salah satu sistem pemrosesan informasi yang didesain dengan
menirukan cara kerja otak manusia dalam menyelesaikan suatu masalah
dengan melakukan proses belajar melalui perubahan bobot sinapsisnya.
Jaringan saraf tiruan mampu melakukan pengenalan kegiatan berbasis data
masa lalu. Data masa lalu akan dipelajari oleh jaringan saraf tiruan
sehingga mempunyai kemampuan untuk memberikan keputusan terhadap data
yang belum pernah dipelajari. Selain itu jaringan saraf tiruan merupakan
suatu metode komputasi yang meniru sistem jaringan saraf biologi.
Metode ini menggunakan ini elemen perhitungan non-linear dasar yang
disebut neuron yang diorganisasikan sebagai jaringan yang saling
berhubungan, sehingga mirip dengan jaringan saraf manusia. Jaringan
saraf tiruan dibentuk untuk memecahkan masalah tertentu seperti
pengenalan pola klafikasi karena proses pembelajaran. Layaknya neuron
biologi, jaringan saraf tiruan merupakan sistem yang bersifat “foult tolerant” dalam
2 hal. Pertama dapat mengenali sinyal input yang agak berbeda dari
yang pernah diterima. Kedua tetap mampu bekerja meskipun beberapa
neuronnya tidak mampu bekerja dengan baik. Jika sebuah neuron rusak,
neuron yang lainnya dapat dilatih untuk menggantikan fungsi neuron yang
rusak tersebut.
Jaringan saraf tiruan seperti manusia,
belajar dari suatu contoh karena mempunyai karakteristik yang adaptif,
yaitu dapat belajar dari data-data sebelumnya dan mengenal pola data
yang selalu berubah. Selain itu, jaringan saraf tiruan merupakan sistem
yang terprogram artinya semua keluaran atau kesimpulan yang ditarik oleh
jaringan didasarkan pada pengalamannya selama mengikiuti proses
pembelajaran/pelatihan. Hal yang ingin dicapai dengan melatih jaringan
saraf tiruan adalah untuk mencapai keseimbangan antara kemampuan
memorisasi dan generalisasi. Kemampuan memorisasi adalah kemampuan
jaringan saraf tiruan unutk mengambil kembali secara sempurna sebuah
pola yang dipelajari. Sedangkan kemampuan generalisasi merupakan
kemampuan jaringan saraf tiruan untuk menghasilkan respons yang bisa
diterima terhadap pola-pola input yang serupa (namun tidak identik)
dengan pola-pola yanhg sebelumnya telah dipelajari. Hal ini sangat
bermanfaat bila pada suatu saat ke dalam jarinagn saraf tiruan itu
diinputkan informasi baru yang belum pernah dipelajari, maka jarinagn
saraf tiruan itu masih akan tetap dapat memberikan tanggapan yang baik,
memberikan keluaran yang paling mendekati.
Cara pembelajaran atau pelatihan
jaringan saraf tiruan dikelompokkan menjadi beberapa bagian, 2
diantaranya supervised learning dan unsupervised learning.
A. SUPERVISED LEARNING 1
Supervised learning merupakan suatu
pembelajaran yang terawasi dimana jika output yang diharapkan telah
diketahui sebelumnya. Biasanya pembelajaran ini dilakukan dengan
menggunakan data yang telah ada. Pada metode ini, setiap pola yang
diberikan kedalam jaringan saraf tiruan telah diketahui outputnya. 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. Nah, apabila
terjadi perbedaan antara pola output hasil pembelajaran dengan pola
output target, maka akan muncul error. Dan apabila nilai error ini masih
cukup besar, itu berarti masih perlu dilakukan pembelajaran yang lebih
lanjut. Contoh algoritma jaringan saraf tiruan yang mernggunakan metode
supervised learning adalah hebbian (hebb rule), perceptron, adaline,
boltzman, hapfield, dan backpropagation.
Pada kesempatan ini saya akan membahas tentang metode hebb rule dan perceptron.
v Hebb rule merupakan metode
pembelajaran dalam supervised yang paling sederhana, karena pada metoode
ini pembelajaran dilakukan dengan cara memperbaiki nilai bobot
sedemikian rupa sehingga jika ada 2 neuron yang terhubung, dan keduanya
pada kondisi hidup (on) pada saat yang sama, maka bobot antara kedua
dinaikkan. Apabila data dipresentasiakn secara bipolar, maka perbaikan
bobotnya adalah
wi(baru)=wi(lama)+xi*y
Keterangan:
wi : bobot data input ke-i;
xi : input data ke-i;
y : output data.
Misalkan kita menggunakan pasangan
vektor input (s) dan vektor output sebagai pasangan vektor yang akan
dilatih. Sedangkan vektor yang hendak digunakan sebagai testing adalah
vektor (x).
Algoritma pasangan vektor diatas adalah sebagai berikut:
0. Insialisasi semua bobot dimana:
wij=0;
i =1,2……n;
j =1,2…..m
1. Pada pasangan input-output(s-t), maka terlebih dahulu dilakukan langkah-langkah sebagai berikut:
a. Set input dengan nilai yang sama dengan vektor inputnya:
xi=si; (i=1,2……,n)
b. Set outputnya dengan nilai yang sam dengan vektor outputnya:
yj=tj; (j=1,2,…..,m)
c. Kemudian jika terjadi kesalahan maka perbaiki bobotnya:
wij(baru)=wij(lama)+xi*yj;
(i=1,2,….,n dan j=1,2,….,m)
sebagai catatan bahwa nilai bias selalu 1.
Contoh:
Sebagaimana yang kita ketahui dalam
fungsi OR jika A & B= 0 maka “OR” 0, tetapi jika salah satunya
adalah 1 maka “OR” 1, atau dengan kata lain jika angkanya berbeda maka
hasilnya 1. Misalkan kita ingin membuat jaringan syaraf untuk melakukan
pembelajaran terhadap fungsi OR dengan input dan target bipolar sebagai
berikut:
Input Bias Target
-1 -1 1 -1
-1 1 1 1
1 -1 1 1
1 1 1 1
X= T= Bobot awal=
-1 -1 -1 w=
-1 1 1 0
1 -1 1 0
1 1 1 b=0
(catatan penting: bobot awal dan bobot bias kita set=0)
Data ke-1
w1 = 0+1=1
w2 =0+1=1
b =0-1=-1
Data ke-2
w1 = 1-1=0
w2 =1+1=2
b =0+1=1
Data ke-3
w1 = 0+1=1
w2 =2-1=1
b =0+1=1
Data ke-4
w1 = 1+1=2
w2 =1+1=2
b =1+1=2
Kita melakukan pengetesan terhadap
salah satu data yang ada, misal kita ambil x=[-1-1] dan kita masukkan
pada data ke-4 maka hasilnya adalah sebagai berikut:
y=2+(-1*2)+(-1*2)=-2
karena nilai yin=-2, maka y=f(yin)=f(-2)=-1 (cocok dengan output yang diberikan)
Perceptron merupakan salah satu bentuk
jaringan syaraf tiruan yang sederhana. Perceptron biasanya digunakan
untuk mengklasifikasikan suatu tipe pola tertentu yang sering dikenal
dengan pemisahan secara linear. Pada dasarnya, perceptron pada jaringan
syaraf dengan satu lapisan memiliki bobot yang bisa diatur dan suatu
nilai ambang(thershold). Algoritma yang digunakan oleh aturan
perceptron ini akan mengatur parameter-parameter bebasnya melalui proses
pembelajaran. Nilai thershold( pada fungsi aktivasi adalah
non negatif. Fungsi aktivasi ini dibuat sedemikian rupa sehingga terjadi
pembatasan antara daerah positif dan daerah negatif.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan yaitu:
w1x1+ w2x2+b >
Sedangkan garis pemisah antara daerah negatif dengan daerah nol memiliki pertidaksamaan:
w1x1+ w2x2+b < -
Misalkan kita gunakan pasangan vektor input (s) dan vektor output (t) sebagai pasangan vektor yang akan dilatih.
Algoritmanya adalah:
0. Inisialisasi semua bobot dan bias:
(agar penyelesaiannya jadi lebih sederhana maka kita set semua bobot dan bias sama dengan nol).
Set learning rate( ): (0< 1).
1. Selama kondisi berhenti bernilai false. Lakukan langkah-langkah sebagai berikut:
(i) Untuk setiap pasangan pembelajaran s-t, maka:
a. Set input dengan nilai sama dengan vektor input:
xi=si;
b. Hitung respon untuk unit output:
yin=b+y-
c. Perbaiki bobot dan bias jika terjadi error:
jika y≠t maka:
wi(baru)=wi(lama)+
b(baru)=b(lama)+
jika tidak, maka:
wi(baru)= wi(lama)
b(baru)=b(lama)
Selanjutnya lakukan tes kondisi berhenti: jika tidak terjadi perubahan pada bobot pada (i) maka kondisi berhenti adalah TRUE, namun jika masih terjadi perubahan pada kondisi berhenti maka FALSE.
Nah, algoritma seperti diatas dapat
digunakan baik untuk input biner maupun bipolar, dengan tertentu, dan
bias yang dapat diatur. Pada algoritma tersebut bobot-bobot yang
diperbaiki hanyalah bobot-bobot yang berhubungan dengan input yang
aktif (xi≠0) dan bobot-bobot yang tidak menghasilkan nilai y yang benar.
Sebagai contoh, misalkan kita ingin
membuat jaringan syaraf yang melakukan pembelajaran terhadap fungsi AND
dengan input biner dan target bipolar sebagai berikut:
Input Bias Target
1 1 1 1
1 0 1 -1
0 1 1 -1
0 0 1 -1
Bobot awal : w=[0,0 0,0]
Bobot bias awal : b=[0,0]
Learning rate( ) : 0,8
Thershold(tetha) : 0,5
Epoh ke-1(siklus perubahan bobot ke-1)
Data ke-1
yin=0,0+0,0+0,0=0,0
Hasil aktivasi= 0(-0,5 < yin < 0,5)
Target = 1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*1,0=0,8
w2= 0,0+0,8*1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,8
Data ke-2
yin=0,8+0,8+0,0=1,6
Hasil aktivasi= 1(yin > 0,5)
Target = -1
Bobot baru yang diperoleh:
w1= 0,8+0,8*-1,0*1,0=0,8
w2= 0,8+0,8*-1,0*1,0=0,0
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,0
Data ke-3
yin=0,0+0,0+0,8=0,8
Hasil aktivasi= 1( yin > 0,5)
Target = -1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*0,0=0,0
w2= 0,8+0,8*-1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,0+0,8*-1,0=-0,8
Data ke-4
yin=-0,8+0,0+0,0=-0,8
Hasil aktivasi= -1( yin < – 0,5)
Target = -1
Epoh ke-10(siklus perubahan bobot ke-10)
Data ke-1
yin=-3,2+1,6+2,4=0,8
Hasil aktivasi=-1(yin >0,5)
Target = 1
Data ke-2
yin=-3,2+1,6+0,0=-1,6
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Data ke-3
yin=-3,2+0,0+2,4=-0,8
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Data ke-4
yin=-3,2+0,0+0,0=-3,2
Hasil aktivasi=-1(yin <-0,5)
Target = -1
Siklus perubahan setiap bobot tersebut
terus diulangi sampai tidak terjadi perubahan bobot lagi. Nah pada
algoritma ini perubahan bobot(epoh) sudah tidak terjadi pada langkah
ke-10 sehingga pembelajaran dihentikan. Dan hasil yang diperoleh adalah:
Nilai bobot(w1)=1,6
Nilai bobot(w2)=2,4
Bobot bias(b) =-3,2.
Dengan demikian garis yang membatasi daerah positif dan daerah nol memenuhi pertidaksamaan:
1,6x1+2,4x2-3,2 > 0,5
Sedangkan garuis yang membatasi antara daerah negatif dan daerah nolnya memenuhi pertidaksamaan:
1,6x1+2,4x2-3,2 < – 0,5
B. UNSUPERVISED LEARNING 1
Unsupervised learning merupakan
pembelajan yang tidak terawasi dimana tidak memerlukan target output.
Pada metode ini tidak dapat ditentukan hasil seperti apa yang diharapkan
selama proses pembelajaran, nilai bobot yang disusun dalam proses range
tertentu tergantung pada nilai output yang diberikan. Tujuan metode
uinsupervised learning ini agar kita dapat mengelompokkan unit-unit yang
hampir sama dalam satu area tertentu. Pembelajaran ini biasanya sangat
cocok untuk klasifikasi pola. Contoh algoritma jaringan saraf tiruan
yang menggunakan metode unsupervised ini adalah competitive, hebbian,
kohonen, LVQ(Learning Vector Quantization), neocognitron.
Pada kali ini saya akan membahas
tentang metode kohonen. Jaringan syaraf self organizing, yang sering
disebut juga topology preserving maps, yang mengansumsikan sebuah
struktur topologi antar unit-unit cluster. Jaringan syaraf self
organizing ini pertama kali diperkenalkan oleh Tuevo Kohonen dari
University of Helsinki pada tahun 1981. Jaringan kohonen SOM(Self
Organizing Map) merupakan salah satu model jaringan syaraf yang
menggunakan metode pembelajaran unsupervised. Jaringan kohonen SOM
terdiri dari 2 lapisan(layer), yaitu lapisan input dan lapisan
output. Setiap neuron dalalm lapisan input terhubung dengan setiap
neuron pada lapisan output. Setiap neuron dalam lapisan output
merepresentasikan kelas dari input yang diberikan.
Penulisan istilah yang ada pada struktur jaringan kohonen Self Organizing Map adalah sebagai berikut:
X : vektor input pembelajaran.
X=(x1, x2,…, xj,…..,xn)
: learning rate
: radius neighborhood
X1 : neuron/node input
w0j : bias pada neuron output ke-j
Yj : neuron/node output ke-j
C : konstanta
Berikut ini adalah tahapan Algoritma dari kohonen self organizing map adalah sebagai berikut :
Langkah 1. Inisialisasikan bobot wij. Set parameter-parameter tetangga dan set parameter learning rate.
Langkah 2. Selama kondisi berhenti masih bernilai salah, kerjakan langkah-langkah berikut ini :
a. Untuk masing-masing vektor input x, lakukan :
Titik Pusat
(0,0) x,y
b. Untuk masing-masing j, lakukan perhitungan :
D(j)= )
c. Tentukan J sampai D( j) bernilai minimum.
d. Untuk masing-masing unit j dengan spesifikasi tetangga tertentu pada j dan untuk semua I, kerjakan :
wij(baru)=(wij)lama+ [xi –wij( lama)]
e. Perbaiki learning rate ( )
f. Kurangi radius tetangga pada waktu-waktu tertentu.
g. Tes kondisi berhenti.
Sebagai contohnya, data yang digunakan
adalah penelitian berupa realisasi penerimaan keuangan daerah tingkat
II suatu propinsi serta jumlah penduduk pertengahan tahunnya dalam
sebuah kabupaten/kota. Atribut-atribut yang digunakan dalam penelitian
ini adalah:
a. X1 = Jumlah penduduk
b. Pendapatan Daerah Sendiri(PDS) yang terdiri dari:
1. Pendapatan Asli Daerah(PDA) yang berupa:
ü X2 = Pajak Daerah
ü X3 = Retribusi Daerah
ü X4 = Bagian laba usaha daerah
ü X4 = Penerimaan lain-lain
2. Bagian pendapatan dari pemerintah dan instansi yang lebih tinggi yang berupa:
ü X6 = Bagi hasil pajak
ü X7 = Bagi hasil bukan pajak
ü X8 = Subsidi daerah otonom
ü X9 = Bantuan pembangunan
ü X10= Penerimaan lainnya
3. Pinjaman pemerintah daerah
ü X11= Pinjaman Pemerintah Pusat
ü X12= Pinjaman Lembaga Keuangan Dalam Negeri
ü X13= Pinjaman Dari Luar Negeri
Data set yang digunakan sebagai input tersebut dinormalkan dengan nilai rata-rata sebagai acuan yang analog dengan persamaan:
f(x)-
Berdasarkan data yang tesebut maka
akan terlihat untuk masing-masing atribut memiliki nilai terendah, nilai
tertinggi, dan nilai rata-rata. Selanjutnya dari nilai rata-rata
tersebut maka akan menjadi acuan untuk menentukan input dari data menuju
ke input pada jaringan saraf tiruan kohonen dengan pengkodean 1 dan
0. Kemudian data-data input tersebut akan diproses oleh JST sehingga
menghasilkan output berupa kelompok daerah tingkat II berdasarkan
penerimaan daerah. Jaringan kohonen SOM ini akan menghubungkan antara
neuron input dan neuron output dengan koneksi bobot, yang mana bobot ini
selalu diperbaiki pada proses iterasi pelatihan jaringan. Kemudian
aliran informasi system JST ini akan mengelompokan tingkat kesejahteraan
daerah tingkat II, diawali dengan dimasukkannya data penerimaan daerah.
Data-data inilah yang akan berfungsi sebagai input awal selain
parameter input berupa learning rate( ), dan radius neighborhood(R).
C. ALGORITMA DAN BAHASA PEMROGRAMAN
Sebelum membahas lebih jauh tentang
algoritma terlebih dahulu kita harus tahu tentang pengertian algoritma.
Algoritma berasal dari nama Abu Ja’far Ibn Musa Al-Kwarizmi, seorang
ilmuan yang berasal dari Persia menulis sebuah buku “Aljabar wal
muqabala(rule of restoration end reduction)” yang dalam bukunya
menjelaskan langkah-langkah dalam menyelesaikan berbagai persoalan
aritmetika. jadi algoritma merupakan tekhnik penyusunan langkah-langkah
dalam menyelesaikan masalah dalam bentuk kalimat dengan jumlah kata yang
terbatas, tetapi tersusun secara logis dan sistematis. Sedangkan
menurut saya sendiri, algoritma adalah sebuah alur cerita yang
terstruktur dengan baik atau langkag-langkah yang logis dalam
menyelesaikan suata masalah tertentu.
Jenis Proses Algoritma
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Sifat algoritma
1. Input dimana suatu algoritma
memilki input atau masukan atau bisa juga disebut sebagai kondisi awal
sebelum algoritma dilaksanakan.
2. Output adalah suatu algoritma akan
menghasilkan output yang merupakan keluaran atau hasil dari input yang
telah diproses melalui algoritma.
3. Definiteness yaitu langkah-langkah
yang dituliskan dalam algoritma yang terdefinisi dengan jelas sehingga
mudah mudah dilaksanakan oleh penggunanya.
4. Finiteness dimana suatu algoritma harus mempunyai kondisi akhir atau output setelah melakukan langkah awal atau input.
5. Effectiveness yaitu suatu langkah
dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu
sehingga pada akhirnya memberi solusi yang diharapkan.
6. Generality yaitu langkah-langkah
algoritma berlaku untuk setiap himpunan yang sesuai dengan persoalan
yang akan kita berikan, tidak hanya untuk himpunan tertentu.
Struktur dalam algoritma
Agar algoritma dapat ditulis teratur maka sebaiknya dibagi kedalam beberapa bagian yaitu:
· Bagian kepala(header) memuat nama algoritma serta informasi atau keterangan tentang algoritma yang ditulis.
· Bagian deklarasi/definisi variabel
memuat definisi tentang nama variabel, nama tetapan, nama prosedur, nama
fungsi, tipe data yang akan digunakan dalam algoritma.
· Bagian deskripsi/rincian laangkah
memuat langkah-langkah penyelesaian masalah, termasuk beberapa perintah
seperti baca data, tampilkan, ulangi, yang mengubah data input meenjadi
output, dan sebagainya.
Dalam bidang komputer, algoritma
sangat diperlukan dalam menyelesaikan berbagai masalah pemrograman,
terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik
maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak
efisien. Pelaksana algoritma adalah Komputer. Manusia dan
komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah
kepada komputer berupa instruksi-instruksi yang disebut program.
Nah, alat yang digunakan untuk membuat program tersebut adalah bahasa
pemrograman. Bahasa pemrograman adalah kumpulan instruksi-instruksi
tersendiri yang biasanya disebut source code yang dibuat oleh programmer
itu sendiri. Bahasa pemrograman sangat bermacam-macam diantaranya
adalah C, C++, Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++ dan
masih banyak bahasa lainnya. Dari berbagai bahasa pemrograman cara
memberikan instruksinya berbeda-beda namun bertujuan menghasilkan output
yang sama. Dalam makalah ini kita akan membuat algoritma dengan
menggunakan bahasa pascal.
Paradigma Pemrograman:
1. Pemrograman Prosedural
�� Berdasarkan urutan-urutan, sekuensial
�� Program adalah suatu rangkaian
prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi
yang dikerjakan secara berurutan.
�� Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2. Pemrograman Fungsional
�� Berdasarkan teori fungsi matematika
�� Fungsi merupakan dasar utama program.
3. Pemrograman Terstruktur
�� Secara berurutan dan terstrukrtur.
�� Program dapat dibagai-bagi menjadi prosedur dan fungsi.
�� Contoh: PASCAL dan C
4. Pemrograman Modular
�� Pemrograman ini membentuk banyak modul.
�� Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
�� Sebuah program dapat merupakan kumpulan modul-modul.
�� Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek
�� Pemrograman berdasarkan prinsip
obyek, dimana obyek memiliki data/variabel/property dan
method/event/prosedur yang dapat dimanipulasi
�� Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
�� Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.
�� Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
�� Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
�� Contoh: PROLOG
Langkah-langkah dalam pemrograman komputer
· Mendefinisikan masalah
Ini merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy (oleh Henry Ledgard):
“Semakin cepat menulis program, akan
semakin lama kita dapat menyelesaikannya”. Hal tersebut berlaku untuk
permasalahan yang kompleks. Tentukan masalahnya, apa saja yang harus
dipecahkan dengan menggunakan komputer, dan apa inputan serta outputnya.
· Menemukan solusi
Setelah masalah didefinisikan, maka
langkah berikutnya adalah menentukan solusi. Jika masalah terlalu
kompleks, maka ada baiknya masalah tersebut dipecah menjadi modul-modul
kecil agar lebih mudah diselesaikan.
· Memilih algoritma
Pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
· Menulis program
Pilihlah bahasa yang mudah dipelajari,
mudah digunakan, dan lebih baik lagi jika sudah dikuasai, memiliki
tingkat kompatibilitas tinggi dengan perangkat keras dan platform
lainnya.
· Menguji program
Setelah program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan yang ada, termasuk error-handlingnya sehingga program tersebut akan benar-benar handal dan layak digunakan.
· Menulis dokumentasi
Menulis dokumentasi sangat penting
agar pada suatu saat jika kita akan melakukan perubahan atau membaca
source code yang sudah kita tulis dapat kita ingat-ingat lagi dan kita
akan mudah membacanya. Caranya adalah dengan menuliskan
komentar-komentar kecil tentang apa maksud kode tersebut, untuk apa,
variabel apa saja yang digunakan, untuk apa, dan parameter-parameter
yang ada pada suatu prosedur dan fungsi.
· Merawat program
Program yang sudah jadi perlu dirawat
untuk mencegah munculnya bug yang sebelumnya tidak terdeteksi. Atau
mungkin juga pengguna membutuhkan fasilitas baru yang dulu tidak ada.
Setelah membahas tentang algoritma dan bahasa pemrograman khususnya bahasa pascal, kita juga harus tahu yang dimaksud dengan FLOWCHART.
Flowchart merupakan bentuk atau gambaran suatu langkah-langkah atau
urutan prosedur dari sebuah program. Flowchart berfungsi membantu
programmer atau orang yang menjalankan program agar mampu menganalisa
dan memecahan masalah ke dalam segmen-segmen yang lebih kecil dalam
bentuk gambar atau bagan serta untuk menganalisa suatu alternative lain
dalam system pengoperasian.
Dalam membuat flowchart seseorang
tidak boleh menggambarkannya begitu saja, karena terdapat langka-langkah
yang harus diperhatikan diantaranya:
Ø Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
Ø Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
Ø Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
Ø Setiap langkah dari aktivitas harus
diuraikan dengan menggunakan deskripsi kata kerja, misalkan kita akan
membuat program “MENGHITUNG KONVERSI WAKTU”.
Ø Setiap langkah aktivasi harus berada pada urutan yang benar.
Ø Lingkup dan range dari aktifitas
yang sedang digambarkan harus ditelusuri dengan hati-hati.
Percabangan-percabangan yang memotong aktivitas tidak perlu digambarkan
pada flowchart yang sama. Symbol konektor harus digunakan dan
percabangannya diletakkan pada halaman yang terpisah atau hilangkan
seluruhnya bila percabangannya tidak berkaitan dengan system.
Ø Gunakan simbol-simbol flowchart yang standar.
Contoh algoritma dengan mengunakan bahasa pemrograman yaitu pascal:
Ø Algoritma Sapa.
Algoritma_Sapa
{Algoritma ini menunjukkan pemakaian
instruksi pilihan sapa 1 menggunakan Bahasa Jerman dan pilihan sapa 2
menggunakan Bahasa Korea}
Deklarasi
integer pilihan;
Deskripsi
write(‘masukkan angka 1 atau 2’);
read;
IF pilihan=1
then write(“Halo, Guten Morgen”);
else write (“Wie gehts?”);
endif
IF pilihan=2
then write (“Halo, joheun achimeyo”);
else write (“ottokhe jinaeseyo?”);
endif
endif.
FLOWCHART
START
|
Pilihan
|
1: Halo, Guten Morgen
Wie gehts?
2: Halo, joheun achimeyo
Ottokhe jinaeseyo?
|
END
|
Masukkan angka 1 atau 2
1. Halo, Guten Morgen
Wie gehts?
2. Halo, Joheun achimaeyo?
Ottokhe jinaeseyo
|
PROSES
|
Algoritma diatas menunjukkan IF=
pilihan yaitu 1 dan 2, dimana pilihan 1 menggunakan bahasa Jerman dan
pilihan 2 menggunakan bahasa Korea. Pertama-tama kita memasukkan kaliamt
sapa menggunakan bahasa Jerman, kemudian memasukkan kalimat sapa dengan
menggunakan bahasa Korea. Setelah itu data akan diproses, jika kita
menekan angka 1 lalu menekan tombol enter pada program pascalnya maka
kalimat yang muncul adalah bahasa Jerman yaitu: (“Halo, guten morgen”)
dan (“Wie gehts?”). Sementara jika kita menekan angka 2 maka maka
kalimat yang muncul adalah (“Halo, joheun achimeyo”) dan (“Ottokhe
jinaeseyo?”).
Ø Algoritma Konversi_waktu
Algoritma konversi_waktu
{Algoritma ini menunjukkan konversi waktu meliputi jam, menit dan detik}
Deklarasi
Real f,c;
Deskripsi
write(“Program konversi waktu”);
write(“masukkan jumlah jam:”);
read;
write(“masukkan jumlah menit:”);
read;
write(“masukkan jumlah detik:”);
read;
write;h:=(j*3600)+(m*60)+d;
read;
write(“jadi hasil konversi:’,h,’detik”);
read;
end.
START
|
Var: j, m, d
|
OUTPUT
|
END
|
Masukkan jumlah jam
Masukkan jumlah menit
Masukkan jumlah detik
|
PROSES
h=(j*3600)+(m*60)+d
|
Algoritma diatas menunjukkan proses
konversi dari jam ke menit dan detik. Pertama-tama kita memasukkan
jumlah jam, kemudian jumlah menit dam yang terakhir jumlah detiknya.
Jika kita kita menekan “enter” pada program yang kita buat maka kita
akan diperintahkan untuk memasukkan jam, setelah itu tekan kembali enter
dan kita akan diminta untuk memasukkan jumlah menit, dan jika kita
menekan enter maka yang selanjutnya muncul adalah masukkan jumlah detik.
Nah, setelah semua data diinput maka hasil yang akan keluar adalah
hasil konversi dari jam, menit dan detik.
Subscribe to:
Posts (Atom)