Implementasi Decision Tree Untuk Penjurusan Siswa SMA Menggunakan Matlab

Pohon keputusan atau lebih kerennya decision tree merupakan salah satu teknik populer dalam kajian data mining. Decision tree berfungsi untuk menentukan keputusan suatu kasus. Metode decision tree tergolong cukup mudah karena tidak memerlukan proses pengelolaan pengetahuan terlebih dahulu dan dapat menyelesaikan dengan sederhana kasus-kasus yang memiliki dimensi besar. Keuntungan yang didapatkan dari metode ini adalah tingkat akurasinya yang sangat baik, asalkan data yang dijadikan rujukan benar-benar data yang valid.

Nyatanya, metode ini banyak diaplikasikan dalam berbagai bidang, antara lain kesehatan, financial, astronomi hingga pendidikan. Ataupun bidang-bidang lain yang saya sendiri belum pernah tahu. Kajian teori dari decision tree tidak saya bahas, karena saya yakin diluar sana sudah banyak yan membahasnya. Saya akan langsung membahas dalam bentuk implementasi nyata dalam sebuah studi kasus. Studi kasus yang saya angkat adalah Penjurusan Siswa SMA. 

Sekarang, saatnya kita membuat decision tree sebagai system pendukung keputusan untuk penjurusan siswa Sekolah Menengah Atas (SMA), mengapa aplikasi ini diperlukan? Penjurusan siswa SMA merupakan kewajiban wali kelas untuk menentukan jurusan apa yang tepat bagi siswa-siswa didiknya pada tingkat SMA, penjurusan dilakukan ketika memasuki jenjang akhir semester II atau semester genap kelas X. Pastinya, penentuan penjurusan didasarkan atas 3 nilai utama dari raport, yaitu nilai IPA, IPS dan Bahasa.

Seorang wali kelas bias saja menentukan penjurusan berdasarkan nilai tertinggi dari ketiga nilai. Namun, apa jadinya jika nilai IPA yang diberikan guru IPA terlalu ketat? akibatnya siswa yang masuk jurusan IPA pasti lebih sedikit. Bagaimana solusinya? Kita akan mengacu pada sebuah data penjurusan siswa SMA yang tidak berdasarkan nilai tertinggi, data ini kita sebut dengan data training. Data training biasanya didapatkan melalui hasil penjurusan tahun lalu, ataupun contoh dari sekolah lain. Data Training saya rangkum dalam sebuah excel :


Mengapa Cuma 10 data? Karena ini sekadar data sempel, tentu saja dapat teman-teman kembangkan menjadi data yang berjumlah besar. Memang dalam berbagai literatur, aplikasi data mining haruslah memiliki data pendukung yang banyak, minimal diatas 100 record.

Dari data sempel diatas, Bagaimana kita menentukan kriteria nilai minimal untuk penjurusan IPA, IPS dan bahasa? Ikuti langkah-langkah berikut untuk membentuk sebuah pohon keputusan melalui data sempel.
  • Buka notepad teman-teman, copy data dari excel mulai dari 2C hingga 11E, paste pada notepad. Selanjutnya buka Matlab dan buatlah sebuah folder khusus sebagai penyimpanan (directory) file-file terkait. Simpan file notepad ini dengan nama data.dat. 
  • Lakukan hal yang sama pada data jurusan, simpan dengan nama jurusan.dat, jangan lupa untuk menambahkan petik satu ('), karena data berupa string. 
  • Lanjutkan dengan membuat project baru pada Matlab, ketikkan kode berikut :
clear 
load data.dat 
data

jurusan = ['IPA'
'IPS'
'BHS'
'IPA'
'BHS'
'IPS'
'IPA'
'IPS'
'BHS'
'IPA']

varnames = {'nilai ipa' 'nilai ips' 'nilai bahasa'} 
t = classregtree(data,jurusan,'splitmin',5,'names',varnames) ;
view(t) 


Tujuan dari kode diatas adalah, untuk mensimulasikan bentuk decision tree GUI yang telah tersedia pada matlab, sehingga tinggal kita panggil fungsi bawaan untuk decision tree, yaitu classregtree. ketika program di run, maka simulasi decision tree seperti berikut :


Melalui data training, matlab secara otomatis bisa mensimulasikan kriteria minimal setiap bidang penjurusan, yaitu IPA minimal adalah 7.25, nilai IPS sebesar 7.75, dan ketika tidak memenuhi semua kriteria, akan masuk jurusan bahasa. 

Dengan kriteria inilah kita akan menetapkan standar untuk penentuan penjurusan siswa SMA sesuai kebutuhan. 

Sekarang, kita buat aplikasi penjurusan siswa SMA dengan Matlab berbasis GUI. Kita buat aplikasi GUInya terlebih dahulu, 

Berikut kode yang saya gunakan, ketika tombol Penjurusan di klik : 

ipa = str2double(get(handles.ipa,'String')) ;
ips = str2double(get(handles.ips,'String')) ;
bahasa = str2double(get(handles.bhs,'String')) ;

if ipa > 7.25 
    set(handles.hasil,'String','IPA');
else if ips > 7.75 
        set(handles.hasil,'String','IPS') ;
    else
        set(handles.hasil,'String','Bahasa');
    end
end

Inti dari source code yang terpenting adalah bagian decision, yang kriterianya diambil dari simulasi matlab, yaitu angka 7.25 untuk IPA dan 7.75 untuk IPS.

Kita akan uji kinerja programnya..


Ketika input nilai IPA, IPS dan Bahasa, program dapat mengambil keputusan sesuai dengan kriteria yang telah ditetapkan. 


Maka, dapat saya simpulkan bahwa metode decision tree terbukti efektif dalam penyelesaikan kasus-kasus yang membutuhkan sebuah keputusan. Ditambah lagi dengan kemudahan dalam pembuatan algoritmanya membuat metode ini amat mudah untuk diterapkan dalam berbagai bidang secara meluas sesuai dengan kebutuhan. Oleh karenanya program sistem pendukung keputusan penentuan penjurusan SMA dapat dikatakan sukses dengan menggunakan metode Decision Tree. 

Akhir kata, semoga aplikasi sederhana ini dapat memberikan manfaat dan referensi bagi teman-teman yang ingin mengetahui implementasi nyata dari metode Decision Tree sebagai salah satu metode data mining. 

 === Update ===
Karena banyaknya permintaan file aplikasi Decision Tree oleh teman-teman yang membutuhkan, maka akan saya share disini juga, biar bisa pada download. Decision Tree

Salam hangat




Subscribe to receive free email updates:

19 Responses to "Implementasi Decision Tree Untuk Penjurusan Siswa SMA Menggunakan Matlab"

  1. Trima kasih sangat membantu sbgai refrensi TA sya...ö

    ReplyDelete
  2. Itu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya

    ReplyDelete
  3. Itu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya

    ReplyDelete
  4. buatin artikel implementasi kecerdasan buatan pake java netbeans dong gan

    ReplyDelete
  5. Mas boleh nyanga??
    untuk yang koding pertama di ketiknya di bagian mana??

    ReplyDelete
  6. gan ada source code lengkapnya?

    ReplyDelete
  7. oke, saya uploadkan juga pada postingan

    ReplyDelete
  8. bang kok ada error kyk gini ya bang "??? Error using ==> classregtree.classregtree>treefit at 613
    Minimal size for parent node must be greater or equal to 1.

    Error in ==> classregtree.classregtree>classregtree.classregtree at
    134
    a = treefit(a,x,y,varargin{:}); % calls local
    version of treefit

    Error in ==> run at 18
    t = classregtree(data,jurusan,'splitmin',0,'names',varnames);

    ReplyDelete
  9. This comment has been removed by the author.

    ReplyDelete
  10. gan, bisa bantu nyelesaiin seperti ini ga, cuma beda di data training dan data testing juga penambahan variabel.

    ReplyDelete
    Replies
    1. Konsul saja via email gan... kendalanya apa nanti biar saya bantu

      Delete
    2. This comment has been removed by the author.

      Delete
    3. This comment has been removed by the author.

      Delete
    4. rizkhanisme05@gmail.com

      minta emailmu gan.

      btw, saya sudah nyoba programmu ini mas, trus mau saya tambahin confusion matrix tp gagal trus, variabel yang diambil apa saja ya?? pencerahannya mas??

      Delete
  11. gan saya mau tanya ini bagaimana cara run nya ya?

    ReplyDelete
  12. gan punya saaya error "Dimensions of matrices being concatenated are not consistent."

    ReplyDelete

Terima Kasih Telah Berkunjung, Silakan Berkomentar...
Kritik dan Saran Teman-Teman Sangat Memotivasi Saya (^_^)