Materi III Praktikum Data Mining Program Studi Matematika FMIPA Universitas Syiah Kuala Dosen Pengasuh Dr. Taufik Fuadi Abidin, M.Tech Dr. Muhammad Subianto, M.Si {tfa,subianto}@informatika.unsyiah.ac.id PENDAHULUAN Praktikum ini berkaitan dengan penggunaan perangkat lunak R (http://www.r-project.org/) yang dapat diperoleh secara bebas pada The Comprehensive R Archive Network (CRAN) archive di alamat http://cran.r-project.org/. Penggunaan perangkat lunak R pada praktikum ini dikhususkan pada pemahaman mengenai cara menggunakan R dalam memahami Support Vector Machine (SVM) dan Receiver Operating Characteristic (ROC). Tujuan dari praktikum ini adalah: a. Mengetahui dan memahami cara menggunakan R khususnya penerapan library yang berkaitan dengan SVM dan ROC. b. Melatih mahasiswa menyelesaikan menggunakan SVM dan ROC. masalah-masalah klasifikasi sederhana Catatan: Diasumsikan bahwa semua mahasiswa yang mengikuti praktikum ini telah mengetahui dasardasar pengoperasian komputer dan sistem operasi linux (dan/atau windows). Penjelasan dan contoh program dalam materi praktikum ini telah sukses dijalankan dengan menggunakan sistem operasi linux (Ubuntu 10.10). PRAKTIKUM 1. Pada command prompt ketik: subianto@uithof:~$ R pada linux akan ditampilkan version R seperti gambar berikut ini, Praktikum Data Mining, PS Matematika, FMIPA Universitas Syiah Kuala © Dr. Taufik Fuadi Abidin, S.Si., M.Tech dan Dr. Muhammad Subianto, M.Si 1 Perangkat lunak R pada dasarnya tidak mempunyai editor sebagai sarana dalam menulis syntax program sebagaimana perangkat lunak statistik lainnya. Untuk menulis syntax program telah banyak tersedia berbagai program editor diantaranya Tinn-R (windows) dan rkward (linux). Pada Ubuntu 10.10, klik pada menu Applications > Science > RKWard dan tampilan rkward dapat dilihat pada gambar berikut ini, Praktikum Data Mining, PS Matematika, FMIPA Universitas Syiah Kuala © Dr. Taufik Fuadi Abidin, S.Si., M.Tech dan Dr. Muhammad Subianto, M.Si 2 2. Dalam R ada beberapa library yang berkaitan dengan Support Vector Machine (SVM) dan Receiver Operating Characteristic (ROC). Dalam praktikum ini akan digunakan library-library diantaranya adalah: "e1071", "kernlab", "klaR", "ROC", dan "caTools". Untuk menginstal library-library tersebut lakukan perintah berikut ini: subianto@uithof:~$ sudo R Pada command prompt R, lakukan perintah: ## Install library khususnya yang berkenaan dengan SVM dan ROC installPacks <- c("e1071","kernlab","klaR", "ROC", "caTools") install.packages(installPacks, dependencies=TRUE) 3. Selanjutnya unduh perangkat lunak SVM-Light pada alamat website: http://svmlight.joachims.org/ Unduh SVM-Light sesuai dengan system operasi yang digunakan, Windows : http://download.joachims.org/svm_light/current/svm_light_windows.zip Linux : http://download.joachims.org/svm_light/current/svm_light_linux.tar.gz Kemudian ekstrak file SVM-Light tersebut pada sebuah direktori, misalkan: Windows: Linux: C:/ProgramFiles/SVM-Light /home/subianto/Desktop/SVMlight 4. Setelah tahap instalasi selesai, kini lakukan generate data dengan perintah: ## simulasi data (normal) dengan dua klass data std2 <- 0.7 x1 <- c(rnorm(15, -1, std2), rnorm(15, 1, std2)) x2 <- c(rnorm(15, 1, std2), rnorm(15, -1, std2)) x1 <- (x1-mean(x1))/sd(x1) x2 <- (x2-mean(x2))/sd(x2) y <- c(rep(1, 15), rep(-1, 15)) mydata <- data.frame(x1=x1, x2=x2, y=as.factor(y)) x1min x1max x2min x2max <<<<- min(x1) max(x1) min(x2) max(x2) plot(x2, x1, type="n") points(x2[y==1], x1[y==1], col="red", lwd=2) points(x2[y==-1], x1[y==-1], col="blue", lwd=2) 5. Selanjutnya dengan menggunakan library(e1071) dibuat sebuah model SVM dengan cost=0.1. Lakukan analisa untuk nilai cost lainnya seperti 100, 1000, 10000, dll. Praktikum Data Mining, PS Matematika, FMIPA Universitas Syiah Kuala © Dr. Taufik Fuadi Abidin, S.Si., M.Tech dan Dr. Muhammad Subianto, M.Si 3 library(e1071) model <- svm(y ~ ., scale=FALSE, cost=0.1, data=mydata, kernel="linear") points(x2[model$index], x1[model$index], pch=4); ## plot the support vectors coef1 <- sum(model$coefs*x1[model$index]); coef2 <- sum(model$coefs*x2[model$index]); lines(c(x2min,x2max), (model$rho-coef2*c(x2min, x2max))/coef1) lines(c(x2min,x2max), (model$rho+1-coef2*c(x2min, x2max))/coef1, lty=2) lines(c(x2min,x2max), (model$rho-1-coef2*c(x2min, x2max))/coef1, lty=2) title(main="SVM with cost = 0.1") Lakukan untuk library(kernlab) dan library(klaR). library(kernlab) model1 <- ksvm(y ~ ., data=mydata, kernel="rbfdot", kpar=list(sigma=0.05), C=5, cross=3) model1 library(klaR) model2 <- svmlight(y ~ ., data=mydata, svm.options = "-c 10 -t 2 -g 0.1 -v 0", pathsvm = " /home/subianto/Desktop/SVMlight") 6. Selanjutnya dengan menggunakan library(caTools), lakukan simulasi data seperti perintah berikut ini. ## another simulated example theta = runif(150, 0,1)*2*pi; x1=c(2*sin(theta[1:80])+rnorm(80,0,0.2),sin(theta[81:150])+rnorm(70,0, 0.1)) x2=c(2*cos(theta[1:80])+rnorm(80, 0, 0.2),cos(theta[81:150])+rnorm(70, 0, 0.1)) x1 = (x1-mean(x1))/sd(x1); x2 = (x2-mean(x2))/sd(x2); y =c(rep(-1,80), rep(1,70)) plot(x2, x1, type="n"); points(x2[y==1], x1[y==1], col="red", lwd=2) points(x2[y==-1], x1[y==-1], col="blue", lwd=2) title(main="Contoh Simulasi lainnya") mydata <- data.frame(x1=x1, x2=x2, y=as.factor(y)) mydata # choosing training data and testing data sets N <- dim(mydata)[1] N tr.index <- sample(N,round(N/1.5)) tr.index # train set train.dat <- mydata[-tr.index,] train.dat dim(train.dat) Praktikum Data Mining, PS Matematika, FMIPA Universitas Syiah Kuala © Dr. Taufik Fuadi Abidin, S.Si., M.Tech dan Dr. Muhammad Subianto, M.Si 4 Kemudian buat model SVM dan hitung ROC dari model tersebut. # model library(e1071) model3 <- svm(y ~ ., cost=10, data=train.dat, kernel="polynomial", probability =TRUE) summary(model3) plot(model3, train.dat) #test svm test.dat <- mydata[tr.index,] test.dat dim(test.dat) # compute decision values and probabilites pred1 <- predict(model3, test.dat[,-3], probability = TRUE) attr(pred1, "probabilities") #tabel kontingensi tabel1 <- table(pred1, test.dat[,3]) tabel1 #plot ROC library(caTools) colAUC(attr(pred1, "probabilities"), test.dat[,3], plotROC=TRUE) - - - Happy Mining - - - Praktikum Data Mining, PS Matematika, FMIPA Universitas Syiah Kuala © Dr. Taufik Fuadi Abidin, S.Si., M.Tech dan Dr. Muhammad Subianto, M.Si 5