Sunday, January 20, 2013

Algoritma Pembelajaran Perceptron


Perceptron termasuk salah satu bentuk jaringan yang cukup sederhana. Algoritma ini sering digunakan untuk mengklasifikasikan input yang bersifat linearly separable. Jaringan syaraf perceptron mempunyai satu layer dan bobot¬bobot sinaptik dan threshold yang bisa diatur. Selama proses pembelajaran, perceptron akan mengatur parameter secara continue selama iterasi, dan akan menghasilkan garis pemisah (Decision Boundar y) yang berfungsi untuk mengklasifikasikan himpunan stimulus yang diaplikasikan secara eksternal x 1, x 2, ... , x nke dalam salah satu dari dua kelas C1 dan C2. Kelas C1 adalah daerah positif dimana nilai = threshold (Φ), sedangkan kelas C2 adalah daerah negatif dimana nilai < threshold (Φ).

Secara teori, persamaan ini berfungsi untuk menciptakan decision boundar y yang membedakan kedua kelas secara akurat. Pengaturan threshold dapat mengatur pergeseran garis batasan keputusan.





Gb. Perceptron dengan decision boundaries untuk mengklasifikasikan dua kelas positif dan negatif.


Algoritma perceptron adalah proses pembelajaran yang melakukan perbaikan bobot-bobotnya pada setiap epoch (proses perulangan 1 kali untuk setiap data set input-output). Pada setiap epoch, jaringan akan mengkalkulasi error yang terjadi, kemudian nilai errorakan dijadikan parameter untuk proses perbaikan bobot sehingga tercipta nilai bobot yang baru. Proses ini akan berhenti jika errorsudah mencapai nilai minimum atau perulangan sudah mencapaimaximum epoch yang sudah ditentukan sebelumnya. Selain itu, proses pelatihan juga dipengaruhi oleh nilai laju pembelajaran(learning rate)
Read More

Fungsi Aktivasi


Fungsi Aktivasi (μ) mendefinisikan nilai output dari sebuah neuron pada level aktivasi tertentu berdasarkan nilai output dari pengombinasi linier. Fungsi ini dipakai untuk menentukan keluaran suatu neuron. Ada beberapa jenis fungsi aktivasi yang sering dipakai, yaitu :

A. Hard Limit (Tangga Biner)
Fungsi ini sering dipakai oleh jaringan dengan lapisan tunggal (single neural network) untuk penyelesaian masalah yang bersifat linier. Output dari fungsi ini adalah pengkonversian input yang bernilai continue menjadi bilangan biner (0 atau 1).

B. Symetric Hard Limit (Bipolar)
Fungsi ini adalah pengembangan dari fungsi Hard Limit, hanya saja fungsi ini mempunyai output antara 1, 0 atau 1.

C. Threshold
Fungsi ini adalah fungsi hasil modifikasi dari fungsi Hard Limit dengan menambahkan nilai threshold ( Ѳ ).

D. Bipolar Threshold
Fungsi hasil pengembangan dari fungsi threshold, dimana fungsi ini memiliki 3 nilai keluaran, yaitu 1, 0 atau 1.

E. Linear (Identity)
Fungsi ini mempunyai nilai keluaran yang sama dengan nalai masukannya (y = x).

F. Sigmoid Biner
Fungsi ini sering digunakan dalam jaringan Backpropagation. Fungsi ini memiliki sifat nonlinear sehingga sangat baik untuk diterapkan dalam penyelesaian masalah yang kompleks. Output dari fungsi Sigmoid Biner berupa bilangan biner (0 atau 1) atau output berupa nilai-nilai yang berada pada interval 0 sampai 1.

G. Sigmoid Bipolar (Symetric Sigmoid)
Fungsi ini fungsi sigmoid yang mempunyai interval nilai antara 1 sampai 1.

Read More

STRUKTUR DASAR JST


Sel syaraf atau neuron terdiri dari 3 elemen penting :
1. Fungsi Aktivasi yang mengatur output dari setiap neuron.
2. Mempunyai jalur / sinapsis yang berhubungan satu dengan yang lain dimana setiap hubungan memiliki weight / bobot.
3. Suatu fungsi tertentu untuk perhitungan nilai input (fungsi aktivasi).

Arsitektur Jaringan

a. Single Layer Network
Model ini adalah teknik matematis yang paling sederhana. Model ini pertama kali diperkenalkan oleh McCulloch dan Pitts.




Gb 1. Single Layer Network dengan 2 layer (input output)

Dalam jaringan ini, beberpa neuron(x) berhubungan langsung dengan layer output (y). Masing-masing input terhubung dengan bobot (w) dan menghasilkan output yang berbeda tergantung dari input yang ada. Selama proses learning, bobot-bobot akan dimodifikasi berdasarkan aturan tertentu guna menghasilkan keakuratan yang tepat. Model ini sangat cocok untuk teknik pengenalan pola dilihat dari tingkat kesederhanaannya.

b. Multi Layer Network
Jaringan ini merupakan pengembangan dari single layer network. Pada Model ini, jaringan mempunyai layer tambahan atau yang sering disebut dengan hidden layer. Keunggulan model ini adalah kemampuannya yang lebih untuk menghasilkan output yang lebih akurat dari model pertama. Tentunya dengan penambahan jumlah layer, teknik matematisnya pun akan semakin kompleks.





Gb 2. Multi Layer Network dengan 3 layer (input – hidden output)

c. Recurrent Networks
Arsitektur ini mempunyai alur untuk mengembalikan nilai output untuk memberikan sinyal ke layer input (feedback loop). Model ini setidakny harus memiliki minimal satu feedback loop. Recurrent Networks bisa ditingkatkan akurasinya dengan menambahkan hidden layer.

d. Competitive Layer Network
Arsitektur jaringan ini mempunyai bentuk yang unik, dimana semua neuron saling terhubung satu dengan yang lain.


Gb 4. Competitive Layer Network

Read More

Pengantar JST (Jaringan Saraf Tiruan)


Jaringan Syaraf Tiruan (JST) atau dalam bahasa inggris disebut Artificial Neural Networks (ANN) adalah sebuah metode yang sering diterapkan untuk teknik optimasi atau pengenalan pola (pattern recognition) dalam usaha untuk memecahkan suatu permasalahan. 

JST adalah salah satu metode yang termasuk dalam beberapa metode yang sudah diperkenalkan dalam bidang Soft Computing (SC). 

JST adalah suatu arsitektur jaringan yang terinspirasi oleh sistem kerja syaraf manusia (otak) dalam melaksanakan tugas. Para ilmuwan terinspirasi dengan sistem kerja otak yang mampu menangani berbagai permasalahan mulai dari yang sederhana sampai permasalahan yang kompleks dimana sebuah kemampuan learning yang efektif sangat dibutuhkan. Otak manusia dipenuhi selsel yang disebut neuron yang terhubung satu dengan yang lain. Manusia dewasa memiliki sekitar 100 milyar sel syaraf dan setiap sel syaraf terhubung dengan sekitar seribu hingga seratus ribu sel syaraf yang lain (sumber Tettamanzi.A, Tommasini.M, 2001, “Soft Computing”, Germany). Sistem syaraf yang sangat rumit ini mampu memberikan manfaat yang luar biasa bagi manusia. Sebagai contoh, manusia mampu mengenali sesuatu hanya dengan mendengar suaranya saja, atau hanya dengan melihat sebagian saja dari objek (informasi tidak lengkap). Kemudian, otak mempunyai “memori” yang mampu dibangkitkan kembali utuk mengenali objek-objek yang telah lalu.

Read More

Saturday, January 19, 2013

Mencari Bilangan Prima Menggunakan Pemrograman JAVA

Bilangan prima termasuk bilangan yang cukup unik, kita sudah mempelajari bilangan ini sejak masuk sekolah dasar.  

Beberapa referensi yang penulis dapat menyatakan bahwa bilangan prima merupakan bilangan positif yang hanya bisa dibagi oleh tepat 2 pembagi, yaitu angka 1 dan angka tersebut sendiri. Ada juga yang menyatakan sebagai suatu bilangan yang hanya bisa dibagi oleh dirinya sendiri tanpa menyertakan angka 1. 


Contoh: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 dan seterusnya.


Dalam logika pemrograman, kita cuma perlu memperhatikan mulai angka 2 dan seterusnya. Angka 0 jelas tidak mungkin, karena bilangan ini dibagi angka berapapun akan menghasilkan angka 0. Dan angka 1 juga kita abaikan saja, sebab angka 1 hanya bisa dibagi oleh dirinya sendiri, padahal bilangan prima itu syarat utamanya bisa dibagi oleh 2 bilangan natural yang nyata, yaitu angka 1 dan dirinya sendiri. (Note: bisa dibagi ini dalam artian menghasilkan bilangan bulat positif, bukan bilangan pecahan.)
Berikutnya akan penulis ilustrasikan contoh pembagiannya, dimana kita sepakati bahwa angka pembagi tidak melibatkan angka 1.

2: hanya bisa dibagi 2.
3: hanya bisa dibagi 3.
4: bisa dibagi 2 dan 4 (lebih dari 1 pembagian, maka tidak termasuk bilangan prima).
5: hanya bisa dibagi 5.
6: bisa dibagi 2,3, dan 6 (bukan bilangan prima).
Dan seterusnya.

Misalkan diketahui sebuah bilangan X, bagaimana cara menentukan bahwa bilangan X itu termasuk bilangan prima atau bukan?

Asumsi: X adalah bilangan yang lebih besar dari 2
Berarti bilangan-bilangan yang akan menjadi pembagi adalah mulai angka 2sampai X-1.
Jika bilangan X bisa dibagi oleh minimal salah satu dari bilangan-bilangan mulai 2 sampai X-1, maka dapat dikatakan bahwa bilangan X adalah bukan bilangan prima.

Contoh: 9 Bilangan sebagai pembagi adalah 2 3 4 5 6 7 8
Untuk mengetahui bahwa suatu bilangan bisa dibagi atau tidak, paling mudah kita menggunakan bantuan mod, yang menyatakan sisa hasil bagi. Jika sisa hasil bagi 0 berarti bisa dibagi.

Kembali ke contoh.

9 mod 2 = 1 (hasil bukan 0, artinya tidak habis/bisa dibagi), lanjutkan,
9 mod 3 =0 (sudah cukup untuk menyimpulkan bahwa 9 adalah bukan bilangan prima.)
Tidak perlu kita uji dengan membagi 9 dengan angka 4 dan seterusnya.
Contoh lain: 11
11 mod 2 = 1
11 mod 3 = 2
11 mod 4 = 3
11 mod 5 = 1
11 mod 6 = 5
11 mod 7 = 4
11 mod 8 = 3
11 mod 9 = 2
11 mod 10 = 1

Tidak ada yang menghasilkan angka 0, berarti 11 termasuk bilangan prima. 

Flowchart Untuk Program mencari Bilangan Prima Sebagai Berikut :


Source Code Program Pencarian Bilangan Prima

public class Prima {
    public static void main(String[] args){
        {
       //initialisasi variabel4
       String angka[]={"0","1","2","3","4","5","6","7","8","9"};
       String inputan="";
       boolean hasil = false;
       boolean prima=false;
       String genap_ganjil="";

       int nilai = 0; //memasukan inputan berupa tipe int

       boolean lompat=false;
       boolean cekAngka=false;
       //end initialisasi
      
        //objek buffered reader untuk inputan
        InputStreamReader keyreader=new InputStreamReader(System.in);
        BufferedReader input=new BufferedReader(keyreader);
        //end objek
        try {
        System.out.print("Input -> ");
        inputan=input.readLine();
         } catch (Exception e) {
         }
        
         //int panjang=inputan.length();
        
         for (int i=0;i<inputan.length();i++){
           if (lompat)break;
           char chr= inputan.charAt(i);
                for (int j=0;j<angka.length;j++){
                if (chr==angka[j].charAt(0))
                   {
                    cekAngka=true;
                    lompat=false;
                    break;
                   }else{
                       
                        }
                    if (j==angka.length-1);
                        cekAngka=false;
                        lompat=true;
                }
         }

        if (!cekAngka)
             System.out.print("Output -> Bukan Bilangan"+"\n");
        else
        {
        nilai=Integer.valueOf(inputan.toString());
        //memeriksa bilangan itu ganjil atau genap
        if (nilai%2==0)genap_ganjil=" Genap ";  
        else genap_ganjil=" Ganjil ";

        if (nilai==2)prima=true;
        else
        {
           for(int i = 2; i <= nilai ; i++) {
                                                if(nilai % i == 0) {
                        if (nilai==i){prima=true;break;}
                        else
                        break;
                         }
                     }

        }

        if (prima)
        System.out.print("Output -> Benar, "+inputan.toString() + " adalah bilangan"+genap_ganjil+ "dan Prima"+"\n");
        else{
        if (nilai%2!=0)genap_ganjil=" Genap ";else genap_ganjil=" Ganjil ";
        System.out.print("Output -> Bukan Prima dan bukan"+genap_ganjil+ "\n");
       
        } 
        }
    }
    }
}



OUTPUT :


Jika Kita Menginputkan Yang Benar



Jika Kita menginputkan Bilangan Yang salah



SOURCE CODE DAPAT DI DOWNLOAD DISINI

Read More

SORTING


Pengertian Algoritma Pengurutan (sorting)
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:

  1. urut naik (ascending) : Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar 
  2. urut turun (descending) : Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.

Metode-metode sorting yang akan saya bahas kali ini meliputi:

  1. Insertion Sort (Metode Penyisipan)
  2. Selection Sort (Metode Seleksi)
  3. Bubble sort(Metode Gelembung)
  4. Shell Sort (Metode Shell)
  5. Quick Sort (Metode Quick)
  6. Merge Sort (Metode Penggabungan)

Disini Saya Sudah Membuat Source Code Sorting Sederhana Menggunakan Bahasa Pemrograman Java, Yang dapat di download DISINI
Read More