Implementasi Decision Tree Untuk Penjurusan Siswa SMA Menggunakan Matlab
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.
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.
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 :
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 :
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)
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..
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
Trima kasih sangat membantu sbgai refrensi TA sya...ö
ReplyDeleteSip... gan....
DeleteItu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya
ReplyDeleteitu fungsi bawaan matlab kok gan...
DeleteItu decision tree nya mengunakan metode apa gan? Trimakasih sblmnya
ReplyDeletebuatin artikel implementasi kecerdasan buatan pake java netbeans dong gan
ReplyDeletePakek metode apa gan yang diminta
DeleteMas boleh nyanga??
ReplyDeleteuntuk yang koding pertama di ketiknya di bagian mana??
gan ada source code lengkapnya?
ReplyDeleteoke, saya uploadkan juga pada postingan
ReplyDeletebang kok ada error kyk gini ya bang "??? Error using ==> classregtree.classregtree>treefit at 613
ReplyDeleteMinimal 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);
This comment has been removed by the author.
ReplyDeletegan, bisa bantu nyelesaiin seperti ini ga, cuma beda di data training dan data testing juga penambahan variabel.
ReplyDeleteKonsul saja via email gan... kendalanya apa nanti biar saya bantu
DeleteThis comment has been removed by the author.
DeleteThis comment has been removed by the author.
Deleterizkhanisme05@gmail.com
Deleteminta 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??
gan saya mau tanya ini bagaimana cara run nya ya?
ReplyDeletegan punya saaya error "Dimensions of matrices being concatenated are not consistent."
ReplyDeleteuntuk kodingan yang pakai gui itu disatukan sama kodingan gui atau buat skrip baru? kalo masuk di gui diinpukan disebelah mananya?
ReplyDelete