Integrasi Data Mining pada Aplikasi Sistem Informasi (Studi Kasus : Teknik Support Vector Regression pada WEKA ke Sistem Informasi Rumah Sakit)
Nur Rokhman
Nurul Siti Ratifainah
Jurusan Ilmu Komputer dan Elektronika Universitas Gadjah Mada Yogyakarta, Indonesia
[email protected]
Jurusan Ilmu Komputer dan Elektronika Universitas Gadjah Mada Yogyakarta, Indonesia
Abstract—Data mining mreupakan salah satu proses dalam penemuan pengetahuan pada basis data (Knowledge Discovery in Database/ KDD). Dewasa ini penelitian dalam bidang ini lebih banyak tercurah pada pengembangan algoritma penggalian pengetahuan. Di lain pihak, kemudahan pengembangan perangkat lunak telah menghasilkan sejumlah aplikasi sistem informasi beserta basis datanya dalam ukuran yang besar. Pada penelitian ini dicoba untuk dilakukan pemasangan salah satu teknik data mining yang sudah tersedia pada WEKA, yakni teknik Support Vector Regression (SVR), ke dalam aplikasi sistem informasi rumah sakit bernama ClinsoftBeta. Penelitian dilakukan untuk mengetahui tahapan-tahapan operasional yang diperlukan untuk pemasangan ini sampai dengan perbaikan unjuk kerja aplikasi. Melalui penelitian ini ditunjukkan keberhasilan penambahan fasilitas datamining ke dalam aplikasi sistem informasi. Namun demikian untuk hal ini diperlukan sejumlah langkah : 1) penyesuaian struktur basis data dari aplikasi awal ke aplikasi baru yang dilengkapi dengan data mining, 2) migrasi dan pembersihan data, 3) pemahaman teknik datamining yang digunakan dan mekanisme penerapannya. Kata kunci ; Data mining, Support Vector Regression, Integrasi
I.
PENDAHULUAN
Penemuan pengetahuan pada basis data (Knowledge Discovery in Databases atau KDD) merupakan proses ekstraksi informasi implisit yang tidak diketahui sebelumnya dalam suatu basis data yang sangat besar. Proses ini terdiri atas pemahaman masalah, pemahaman data, penyiapan data, pemodelan, evaluasi dan pemasangan (deployment) [1]. Tahapan pemodelan dan evaluasi disebut juga data mining berisi penggunaan algoritma-algoritma untuk menemukan pola-pola dalam basis data yang dapat dijadikan pengetahuan bagi manusia [2]. Upaya menemukan algoritma-algoritma canggih untuk menemukan pola-pola dalam basis data telah mendominasi upaya pengembangan dalam area ini. Dewasa ini basis data yang terlibat dalam KDD mencakup sejumlah basis data dalam lokasi yang terpisah secara geografis. Hal ini juga telah memunculkan sejumlah metode untuk keperluan integrasi basis data dan sejumlah bahasa queri. Penelitian juga dilakukan untuk mengevaluasi unjuk kerja
sejumlah bahasa queri data mining yang didasarkan sejumlah criteria evaluasi[3]. Secara khusus, bahkan diciptakan bahasa untuk melakukan penyiapan data untuk keperluan data mining yang disebut dengan DMPML (Data Mining Preparation Mark Up Language) [4]. Unjuk kerja metode-metode dalam data mining juga sudah banyak dibahas. Shailes mengupas unjuk kerja teknik Multilayer back propagation, jaringan syaraf tiruan, Naïve Bayes Classifier, metode K-NN, dan pohon keputusan dalam database rekam medis pasien rawat inap. Penelitian Shailes menempatkan teknik jaringan syaraf tiruan memiliki unjuk kerja paling baik [5]. Teknik data mining yng lain dikembangkan berdasar prinsip kerja pemisahan dua buah kelas melalui optimasi jarak antar dua kelas. Teknik ini dikenal dengan Support Vector Machine (SVM). Penerapan SVM pada permasalahan regresi dikenal dengan Support Vector Regression (SVR) [6]. II.
LANDASAN TEORI
A. Support Vector Regression (SVR) Aplikasi SVM untuk permasalahan regresi dikenal dengan istilah Support Vector Regression (SVR). Ide dasar permasalahan regresi adalah penentuan fungsi yang bisa memperkirakan nilai di masa mendatang secara akurat. Dalam SVM, hal ini dilakukan melalui pembentukan bidang pemisah dengan ukuran terkecil yang sekaligus meminimalkan jumlah dari jarak antara titik data ke bidang pemisah tersebut [7]. Ide dasar dari SVR adalah memetakan data ke dalam ruang vector berdimensi tinggi melalui pemetaan non linier dan melakukan regresi linier dalam ruang tersebut. Metode ini juga dapat diaplikasikan langsung ke dalam regresi, dengan menjaga karakteristik algoritma margin maksimal. Fungsi nonlinier dikembangkan dengan menggunakan fungsi kernel yang membentuk ruang vektor berdimensi tinggi dimana sistem dikontrol melalui parameter yang tidak tergantung pada dimensi ruang vektor. Untuk suatu permasalahan linier, misalnya dipunya λ set data training, (xj,yj) dimana j = 1,2,… λ dan input x { x1 , x2
, x3 …. }N dan output yang bersangkutan y {y1 ,....., y} i, dengan SVR dicari suatu fungsi f(x) yang mempunyai deviasi sebesar ε dari target aktual yi untuk semua data training. Melalui SVR akan didapatkan suatu tabung seperti Gambar 1. Bila ε = 0 maka didapatkan regresi sempurna[8].
Gambar 1 Pembentukan fungsi regresi
Fungsi regresi yang dibentuk dinyatakan dalam rumus berikut:
f x i K xi , x b * i
i 1
dengan
K xi , x j
adalah
dot-product
didefinisikan sebagai K x i , x j
T
kernel
yang
x i x j .
Perhitungan SVR selanjutnya dapat dihitung melalui mekanisme seperti pada Gambar 2.
Gambar 2 Mekanisme perhitungan keluaran fungsi SVR. B. WEKA WEKA merupakan sebuah aplikasi data mining open source berbasis Java yang dikembangkan di Universitas Waikato, New Zealand. WEKA mendukung beberapa tugas
data mining standar, seperti data preprocessing, clustering, klasifikasi, regresi, visualisasi, dan pemilihan fitur. Semua teknik Weka didasarkan pada asumsi bahwa data tersedia sebagai flat file tunggal atau relasional, di mana setiap titik data digambarkan oleh sejumlah atribut tetap. WEKA menyediakan akses ke database SQL menggunakan Java Database Connectivity dan dapat memproses hasil yang dikembalikan oleh sebuah query basis data. Langkah-langkah yang diperlukan untuk menggunakan library WEKA dari adalah: a) Membaca data dari basis data b) Membangun model c) Menyimpan dan memanggil model d) Melakukan prediksi Untuk dapat melakukan koneksi basis data perlu dilakukan memodifikasi jdbcDriver, URL, dan nama basis data pada file DatabaseUtils.props. Data yang diambil dari database kemudian diubah menjadi objek Instances agar dapat digunakan untuk proses selanjutnya. Gambar 3 dan 4 menunjukkan contoh modifikasi file DatabaseUtils.props dan proses pembacaan data. jdbcDriver=org.gjt.mm.mysql.Driver jdbcURL=jdbc:mysql://localhost:3306/some _database Gambar 3. Modifikasi file DatabaseUtils.props import weka.core.Instances; import weka.experiment.InstanceQuery; ... InstanceQuery query = new InstanceQuery(); query.setUsername("nobody"); query.setPassword(""); query.setQuery("select * from whatsoever"); // if your data is sparse, then you can say so too // query.setSparseData(true); Instances data = query.retrieveInstances();
Gambar 4. Pembacaan data dari basis data Pembangunan model menggunakan WEKA dapat dilakukan dengan mudah. Misalnya akan dilakukan training pada dataset bernama data dengan menggunakan algoritma C4.5. Training dilakukan dengan memanggil method buildClassifier(Instances), dengan terlebih dahulu memanggil kostruktor class dari algoritma yang
digunakan. Misalnya akan menggunakan algoritma C4.5, maka terlebih dahulu harus memanggil konstruktor J48. Gambar 5 menunjukkan contoh kode program untuk membangun model. import weka.classifiers.trees.J48; ... String[] options = new String[1]; options[0] = "-U"; // unpruned tree J48 tree = new J48(); // new instance of tree tree.setOptions(options); // set the options tree.buildClassifier(data); // build classifier Gambar 5 Contoh pembangunan model Model yang telah dibangun disimpan agar dapat digunakan untuk proses selanjutnya, misal untuk melakukan prediksi berdasarkan model yang telah dibangun. Penyimpan model dilakukan dengan menggunakan objek ObjectOutputStream. Sedang pengambilan model dari sebuah file, digunakan objek ObjectInputStream. Gambar 6 dan 7 memberikan contoh penyimpanan dan pengambilan model. m_Classifier.buildClassifier(datas); ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(modelFile)); oos.writeObject(classifier); oos.flush(); Gambar 6. Menyimpan model ObjectInputStream fileIO = new ObjectInputStream(new FileInputStream(modelName)); Classifier model = (Classifier) fileIO.readObject(); fileIO.close(); Gambar 7 Mengambil model Untuk melakukan prediksi, model yang telah dibangun harus diambil.terlebih dahulu. Prediksi bisa dilakukan dengan memanggil method classifyInstance dengan parameter berupa data yang bertipe Instance. Gambar 8 dan 9 menunjukkan contoh pembuatan instance dan proses klasisfikasi.
// Create empty instance with three attribute values Instance inst = new Instance(3); // Set instance's values for the attributes "temperatura" and "tempo" inst.setValue(temperatura, 25); inst.setValue(tempo, "coperto"); // Set instance's dataset to be the dataset "weather" inst.setDataset(weather); Gambar 8 Pembuatan instance //For example using a J48-tree algorithm Classifier myClassifier = new J48(); double class = myClassifier.classifyInstance(inst); Gambar 9 Klasifikasi III.
INTEGRASI APLIKASI
A. SVR pada WEKA SVR pada WEKA diimplementasikan melalui class SMOreg. Langkah-langkah dalam metode buildClassifier(Instances inst) yang terdapat dalam kelas ini meliputi : a) Memeriksa apakah bisa menangani data yang diinputkan atau tidak. Jika ada data yang kelasnya tidak diketahui, data akan dihapus. b) Menghapus instance yang mempunyai weight 0. Jadi yang digunakan untuk pembuatan model hanya instance yang weight nya lebih dari 0. Jika tidak ada data yang tersedia setelah proses penghapusan, akan ditampilkan exception. c) Memeriksa atribut data tersebut, apakah data tersebut hanya berupa numeric atau ada yang berupa kategorik. Kemudian jika ada data dengan missing value, maka data tersebut akan direplace. d) Setelah filter selesai dilakukan, data siap digunakan untuk pembentukan model. Pembentukan model dengan SVR pada Weka mengimplementasikan algoritma sequential minimal optimization untuk menyelesaikan permasalah optimasi. Secara default, SVR pada Weka menggunakan fungsi kernel polynomial. Untuk melakukan prediksi dengan model yang telah dibangun sebelumnya digunakan method classifyInstance(Instance inst) yang mempunyai parameter berupa data bertipe Instance dan memberikan return value berupa variabel result. Variabel result sebelumnya dihitung dahulu menggunakan method SVMOutput pada class RegImproved
B. Penerapan SVR pada Sistem Informasi Dalam penelitian ini dilakukan pengembangan sistem informasi rumah sakit dengan memodifikasi aplikasi ClinSoftBeta yang diunduh dari situs www.indocode.com/detail-code/3/558/clinsoft---beta-version-sisteminformasiklinik.html. Gambar 10 menunjukkan desain arsitektur penerapan teknik data mining SVR pada sistem informasi ini.
Tabel 1. Periksa No Nama field 1
pasien_id ***
Varchar (100)
2
tanggal_periksa *
Timestamp
3
dokter_id **
Varchar (100)
4
Sistolik
Double (100)
5
Diastolik
Double (100)
6
Nadi
Double (100)
7
Respirasi
Double (100)
8
Suhu
Double (100)
9
Hemoglobin
Double (100)
10
Leukosit
Double (100)
11
trombosit
Double (100)
12
glukosa
Double (100)
13
Icd_id **
Integer (100)
No
Gambar 10 Desain arsitektur penerapan teknik data mining pada sistem informasi Penerapan SVR pada sistem ini mempunyai masukan berupavariabel jenis kelamin, usia, tekanan darah(sistolik dan diastolik), nadi, respirasi,suhu, kadar hemoglobin, leukosit, trombosit, glukosa, dan diagnosa sedangkan outputnya berupa perkiraan lama rawat inap. Pembentukan model dan penggunaannya dilakukan dengan cara : mula-mula variabel masukan dipetakan ke dalam vektor kemudian dilakukan dot product dengan weight hasil training. Dari dot product tersebut kemudian dihitung untuk menghasilkan keluaran berupa lama rawat inap. Untuk keperluan penerapan SVR ini, struktur basis data dari aplikasi ClinSoftBeta perlu dimodifikasi sehingga memuat data-data utama untuk keperluan data mining disamping data-data social paseien dan dokter, dapat dilihat pada Tabel 1 dan Tabel 2.
Tipe data
Tabel 2. Rawat inap Nama field
Tipe data
1
pasien_id ***
Varchar (100)
2
tanggal_masuk *
Timestamp
3
tanggal_keluar
Timestamp
4
kamar_id
Varchar (100)
5
prediksi
Double
Selengkapnya proses pengambilan data, pembentukan model, penyimpanan model, pengambilan model dan penggunaan model untuk prediksi lama rawat inap dapat dilihat pada Gambar 11, 12, 13, dan 14. Gambar 15 menunjukkan antar muka pengambilan model. public Instances loadData() throws Exception { System.out.println("loading data"); //load data from database InstanceQueryquery = new InstanceQuery(); query.setDatabaseURL (URL); query.setUsername (username); query.setPassword(password); query.setQuery ("select jk, diagnosa, t, tekanan, nadi, respirasi,suhu, usia, hb, l, tromb, glukosa, los from tabel"); Instances data = query.retrieveInstances(); data.setClassIndex(data.numAttributes()-1); return data;} Gambar 11. Pengambilan data
// memanggil konstruktor SVR Weka SMOreg lr = new SMOreg(); //memanggil method builClassifier Weka try { TextHasil.setText("Start SVR...."); lr.buildClassifier(dataDB); } catch (Exception ex) { Logger.getLogger(FormModel.class.getName ()).log(Level.SEVERE, null, ex); } System.out.println(lr); TextHasil.setText("Finished\n Model SVR"); Gambar 12. Membangun model public void save(SMOreg linreg) throws IOException{ ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(pathOutputModel)); oos.writeObject(linreg); oos.flush(); oos.close(); System.out.println ("model berhasil disimpan"); } Gambar 13 Menyimpan model public Classifier load() throws IOException{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream(pathModel)); try { model = (Classifier) ois.readObject(); } catch (ClassNotFoundException ex) { Logger.getLogger(newLoad.class.getName() ).log(Level.SEVERE, null, ex); } ois.close(); System.out.println(Main.cls); return model; } Gambar 14 Mengambil model
Gambar 15 Antarmuka pengambilan model
IV.
KESIMPULAN
Melalui peneltian ini dapat ditunjukkan bahwa sebuah aplikasi sistem informasi dapat ditingkatkan kemampuannya melalui penerapan salah satu teknik data mining yakni SVR. Tahapan penerapan ini meliputi : pengambilan data, pembangunan model, penyimpanan model, pengambilan model dan penggunaan model. PUSTAKA [1] [2] [3]
[4]
[5]
[6]
[7]
[8]
A. Romei and F. Turini, “Inductive database languages : requirements and examples,” Knowl. Inf. Syst, Springer, 2011, pp. 351-354. J. Han and M. KAmber, “Data Mining : Concepts and Techniques “ Morgan Kaufmann Publishers, Inc., 2006 S. Pllana, I. Janciak, P. Brezany, and A. Wohrer, “A Survey of the State the Art in Data Mining and Integration Query Language”, International Conference on Network-Based Information Systems”, 2011, pp 341348. PM. Goncalves and RSM. Barros, “Automating Data Preprocessing with DMPML and KDDML”, International Conference on Computer and Information Science”, 2011, pp 97-103. KR. Shailes, S. Tanuja and UD. Acharya, “Comparison of different data mining techniques to predict hospital length of stay”, Manipal University, India, 2011. AJ., Smola and B. Scholkopf, “A Tutorial on Support Vector Regression”, Technical Report, NC@-TR-1998-030, NeuroCOLT2, 1998. BT., Theodore and I. Heseyn, “Support Vector Machine for Regression and Applications to Financial Forecasting”, University of Oklahoma, Norman, Oklahoma, 2000. B. Santosa, B., “Data Mining : Teknik Pemanfaatan Data untuk Keperluan Bisnis”, Graha Ilmu, Yogyakarta, 2007.