Praktikum Data Mining - Informatika Unsyiah

advertisement
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
Download