Implementasi Decision Tree Untuk Penjurusan Siswa SMA Menggunakan Matlab

Table of Contents
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




19 comments

Terima kasih telah mampir di blog kami. Jika ingin menghubungi penulis, silakan kirim pesan via email di kitainformatika@gmail.com atau via WA di 087750503014. Jika mood penulis lagi baik, biasanya fast respon.
Comment Author Avatar
November 11, 2015 at 9:48 PM Delete
Trima kasih sangat membantu sbgai refrensi TA sya...ö
Comment Author Avatar
November 12, 2015 at 6:02 AM Delete
Sip... gan....
Comment Author Avatar
December 1, 2015 at 1:35 PM Delete
Itu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya
Comment Author Avatar
December 2, 2015 at 4:17 PM Delete
itu fungsi bawaan matlab kok gan...
Comment Author Avatar
December 1, 2015 at 1:35 PM Delete
Itu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya
Comment Author Avatar
December 2, 2015 at 2:52 PM Delete
buatin artikel implementasi kecerdasan buatan pake java netbeans dong gan
Comment Author Avatar
December 2, 2015 at 4:18 PM Delete
Pakek metode apa gan yang diminta
Comment Author Avatar
Anonymous
December 11, 2015 at 7:14 PM Delete
gan ada source code lengkapnya?
Comment Author Avatar
December 12, 2015 at 3:22 PM Delete
oke, saya uploadkan juga pada postingan
Comment Author Avatar
May 19, 2016 at 9:41 PM Delete
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);
Comment Author Avatar
August 12, 2016 at 4:03 AM Delete
This comment has been removed by the author.
Comment Author Avatar
August 12, 2016 at 4:08 AM Delete
gan, bisa bantu nyelesaiin seperti ini ga, cuma beda di data training dan data testing juga penambahan variabel.
Comment Author Avatar
August 12, 2016 at 9:22 AM Delete
Konsul saja via email gan... kendalanya apa nanti biar saya bantu
Comment Author Avatar
August 13, 2016 at 5:33 AM Delete
This comment has been removed by the author.
Comment Author Avatar
August 13, 2016 at 5:35 AM Delete
This comment has been removed by the author.
Comment Author Avatar
August 13, 2016 at 5:47 AM Delete
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??
Comment Author Avatar
May 16, 2017 at 1:52 PM Delete
gan saya mau tanya ini bagaimana cara run nya ya?
Comment Author Avatar
December 29, 2017 at 8:05 PM Delete
gan punya saaya error "Dimensions of matrices being concatenated are not consistent."
Comment Author Avatar
May 13, 2019 at 8:39 PM Delete
untuk kodingan yang pakai gui itu disatukan sama kodingan gui atau buat skrip baru? kalo masuk di gui diinpukan disebelah mananya?