Monday, May 26, 2014

confusion Matrix

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.

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:
  • Linear scan
  • Pohon kd
  • Pohon Balltree
  • Pohon metrik
  • Locally-sensitive hashing (LSH)
Algoritma k-NN ini memiliki konsistensi yang kuat. Ketika jumlah data mendekati tak hingga, algoritma ini menjamin error rate yang tidak lebih dari dua kali Bayes error rate (error rate minimum untuk distribusi data tertentu).

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:
  1. 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
  2. Pengolahan bahasa alami. Dengan pengolahan bahasa alami ini diharapkan user mampu berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari.
  3. Pengenalan ucapan. Melalui pengenalan ucapan diharapkan manusia mampu berkomunikasi dengan komputer dengan menggunakan suara.
  4. Robotika dan Sistem sensor
  5. Computer vision, mencoba untuk dapat mengintrepetasikan gambar atau objek-objek tampak melalui komputer
  6. Intelligent Computer aid Instruction. Komputer dapat digunakan sebagai tutor yang dapat melatih dan mengajar
Keuntungan Kecerdasan Buatan :
  1. 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.
  2. 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
  3. 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.
  4. Kecerdasan buatan bersifat konsisten. Hal ini disebabkan karena kecerdasan busatan adalah bagian dari teknologi komputer. Sedangkan kecerdasan alami senantiasa berubah-ubah.
  5. 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.
  6. Kecerdasan buatan dapat mengerjakan pekerjaan lebih cepat dibanding dengan kecerdasan alami
  7. Kecerdasan buatan dapat mengerjakan pekerjaan lebih baik dibanding dengan kecerdasan alami.
Keuntungan kecerdasan alami:
  1. 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
  2. Kecerdasan alami memungkinkan orang untuk menggunakan pengalaman secara langsung. Sedangkan pada kecerdasan buatan harus bekerja dengan input-input simbolik
  3. 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:
Fuzzy Inference System.JPG
- 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:
Mekanisme aturan fuzzy if-then dan fuzzy reasoning untuk model Sugeno.JPG

Jaringan Adaptif: Arsitektur dan Algoritma Pembelajaran
Jaringan adaptif.JPG
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
Arsitektur ANFIS.JPG
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:
Fungsi Keanggotaan Segitiga.JPG
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.
Persamaan Lapis 3.JPG
Keluaran lapis ini disebut kuat penyulut ternormalisasi.

Lapis 4
Setiap simpul pada lapis ini adalah simpul adaptif dengan fungsi simpul:
Persamaan Lapis 4.JPG
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.
Persamaan Lapis 5.JPG
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.
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

Pengertian Fuzzy Neural Network
Fuzzy Neural Network  atau Jaringan Syaraf Kabur atau sistem neuro-fuzzy adalah mesin belajar yang menemukan parameter sistem kabur (yaitu, himpunan fuzzy, aturan fuzzy) dengan memanfaatkan teknik pendekatan dari jaringan syaraf.
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.
Langkah-langkah ANFIS
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:
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
FLOWCHART
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.