Anda di halaman 1dari 9

18611088_Lintang Puspita_Responsi Komstat B

SOAL RESPONSI
PRAKTIKUM KOMPUTASI STATISTIKA TA 2020/2021

1. Dataset Forbes2000 dalam package HSAUR berisikan 2000 perusahaan terkemuka dunia
yang dikumpulkan oleh Forbes Magazine pada tahun 2004. Buatlah pie chart dalam satu
frame untuk menampilkan persentase dari 5 besar negara di seluruh dunia yang
mendapatkan profit dalam kategori bisnis Telecommunications services dan Technology
hardware & equipment. Sertakan R code dari pekerjaan Anda.

2. Dataset berikut bersumber dari Kaggle tentang Customer Churn untuk mempelajari
perilaku pelanggan untuk mengembangkan program retensi pelanggan yang terfokus.
Dataset ini memiliki 7043 sampel dan 21 fitur, fitur tersebut mencakup informasi
demografis tentang klien seperti jenis kelamin, rentang usia, dan jika mereka memiliki
mitra dan tanggungan, layanan yang mereka daftarkan, informasi akun seperti berapa lama
mereka telah menjadi pelanggan, kontrak, metode pembayaran, tagihan tanpa kertas,
tagihan bulanan, total tagihan, dan variabel yang akan kami coba prediksi yang
menunjukkan pelanggan mana yang tersisa dalam sebulan terakhir.
Lakukan analisis klasifikasi untuk mengetahui mana customer yang churn (=1) atau tidak
(=0) berdasarkan fitur-fitur yang tersedia. Bandingkan hasil klasifikasi menggunakan
ANN dan SVM. Gunakan pembagian data latih dan data uji sebesar 80:20.
Dataset dapat didownload pada link berikut:
https://github.com/utaridina/Churn-Analysis/blob/main/WA_Fn-UseC_-Telco-Customer-
Churn.csv

Jawab:

1. PIE

#NO1

install.packages(HSAUR)

library(HSAUR)

Lintang=Forbes2000

par(mfrow=c(1,2))

telcomu<-c(rep(c("United States 62%"),62),rep(c("Taiwan 23%"),23),


rep(c("Japan 10%"),10), rep(c("Canada 3%"),3), rep(c("Cayman Islands
3%"),3))

telcomu.freq<-table(telcomu)

telcomu=data.frame(Forbes2000$profits, Forbes2000$country)

pie(telcomu.freq, main="Top 5 Telecomunication Service")


techno<-c(rep(c("United States 62%"),62),rep(c("Taiwan 23%"),23),
rep(c("Japan 10%"),10), rep(c("Canada 3%"),3), rep(c("Cayman Islands
3%"),3))

techno.freq<-table(techno)

pie(techno.freq, main="Top 5 Technology Hardware Equipment")

Dapat dilihat dari gambar diatas didapat bahwa terdapat Pie chart menampilkan
persentase dari 5 besar negara di seluruh dunia yang mendapatkan profit dalam kategori
bisnis Telecommunications services dan Technology hardware & equipment.

2. SVM

Berdasarkan gambar pertama, diketahui bahwa jenis dari metode SVM yang digunakan
adalah C-Classification, dengan kernel radial, nilai parmater kernel default 1, kemudian
nilai support vector sebesar 2675. Untuk gambar kedua, didapati nilai akurasi sebesar
0.8159 atau 81.59%. Kemudian nilai sensitifitas dari hasil output sebesar 0.9266 atau
92.66%. Nilai dari sensitifitas adalah untuk mengukur proporsi jumlah observasi positif
yang tepat prediksi. Nilai spesifisitas dari hasil output di atas sebesar 0.5067 atau 50.67%.
Nilai spesifitas digunakan untuk mengukur proporsi jumlah observasi negatif yang tepat
prediksi. Nilai akurasi keseimbangan dari hasil output di atas sebesar 0.7167 atau 71.67%.

Sintaksnya:

#NO2

data = read.table(pipe("pbpaste"), sep="\t", header=T)

data=na.omit(data)

summary(data)

View(data)

str(data)

#SVM

library(e1071)

library(caret)

library(devtools)

#membuat pie chart untuk spesies

pie(table(data$Churn))

# 80% data untuk data training, sisanya data testing

n=round(nrow(data)*0.8)

set.seed(29)
sample=sample(seq_len(nrow(data)), size = n)

train=data[sample,]

head(train)

test=data[-sample,]

head(test)

## Support Vector machine

dataSVM<-svm(factor(Churn) ~., kernel = "radial",

data = train)

dataSVM

#Pengujian Model SVM data training

prediks1 <- predict(dataSVM, train)

prediks1

confusionMatrix(prediks1, factor(train$Churn))

ANN

Dapat dilihat pada plot tersebut mempunyai 19 buah neuron pada Input Layer serta 1
buah node pada Output Layer. Lalu garis-garis yang menghubungkan masing-masing
neuron merupakan synapse yang memiliki bobot masing-masing (terlihat pada plot).
Diantara Input dan Output, terdapat 1 Hidden Layer dengan 5 buah neuron. Setiap neuron
saling berhubungan, ditandai dengan tanda panah pada gambar diatas. Tiap koneksi
memiliki weight yang berbeda-beda. Hidden layer dan output layer memiliki tambahan
“input” yang biasa disebut dengan bias. Sehingga pada arsitektur pertama terdapat 19x5
weight + 5 bias dan 5x1 weight + 1 bias. Total adalah 106 parameter yang pada proses
training akan mengalami perubahan untuk mendapatkan hasil terbaik.

Dapat dilihat pada output matriks confusion di atas jumlah yang benar pada kategori 0
sebesar 956 sedangkan pada kategori 1 sebesar 175. Pada data training, tingkat akurasi
dari hasil prediksi sebesar 0.7932 atau 79.32%. Dan nilai sensitifitas dari hasil output
sebesar 0.8349 atau 83.49%. Kemudian, nilai spesifisitas dari hasil output di atas sebesar
0.6209 atau 62.09%. Dan yang terakhir, nilai akurasi keseimbangan dari hasil output di
atas sebesar 0.7279 atau 72.79%.

Sintaksnya:

data<-read.table(pipe("pbpaste"), sep="\t", header=T)

data<-na.omit(data)

data<-data[,-1]

str(data)

View(data)
summary(is.na(data))

library(dplyr)

data[,20]=sapply(data[,20],switch,"No"=0,"Yes"=1)

data$gender=sapply(data$gender,switch,"Female"=0,"Male"=1)

data$Partner=sapply(data$Partner,switch,"No"=0,"Yes"=1)

data$Dependents=sapply(data$Dependents,switch,"No"=0,"Yes"=1)

data$PhoneService=sapply(data$PhoneService,switch,"No"=0,"Yes"=1,"No
phone service"=2)

data$InternetService=sapply(data$InternetService,switch,"No"=0,"DSL"=1,
"Fiber optic"=2)

data$MultipleLines=sapply(data$MultipleLines,switch,"No"=0,"Yes"=1,"No
phone service"=2)

data$OnlineSecurity=sapply(data$OnlineSecurity,switch,"No"=0,"Yes"=1,"N
o internet service"=2)

data$OnlineBackup=sapply(data$OnlineBackup,switch,"No"=0,"Yes"=1,"No
internet service"=2)

data$DeviceProtection=sapply(data$DeviceProtection,switch,"No"=0,"Yes"=
1,"No internet service"=2)

data$TechSupport=sapply(data$TechSupport,switch,"No"=0,"Yes"=1,"No
internet service"=2)

data$StreamingTV=sapply(data$StreamingTV,switch,"No"=0,"Yes"=1,"No
internet service"=2)

data$StreamingMovies=sapply(data$StreamingMovies,switch,"No"=0,"Yes"=1,
"No internet service"=2)

data$Contract=sapply(data$Contract,switch,"Month-to-month"=0,"One
year"=1,"Two year"=2)

data$PaperlessBilling=sapply(data$PaperlessBilling,switch,"No"=0,"Yes"=
1)

data$PaymentMethod=sapply(data$PaymentMethod,switch,"Bank transfer
(automatic)"=0,"Credit card (automatic)"=1,"Electronic check"=2, "Mailed
check"=3)

data$tenure<-scale(data$tenure)

data$MonthlyCharges<-scale(data$MonthlyCharges)
data$TotalCharges<-scale(data$TotalCharges)

data[,20] #0:benign(B), 1:maligant(M)

str(data)

for (i in names(data[,-1])) {

data[i] <- (data[i] - min(data[i]))/(max(data[i]) - min(data[i]))

# Data Partition

set.seed(29)

ind <- sample(2, nrow(data), replace = TRUE, prob = c(0.8, 0.2))

training <- data[ind==1,]

head(training)

testing <- data[ind==2,]

head(testing)

# Neural Networks

library(neuralnet)

set.seed(29)

n <- neuralnet(Churn~.,

data = training,

hidden = 5,

err.fct = "ce",

linear.output = FALSE)

summary(n)

plot(n)

# Prediction

output <- compute(n, testing[,-20])


head(output$net.result)

head(training[1,])

results <- data.frame(DataAsli=testing$Churn,


Prediksi=output$net.result)

results

library(caret)

roundedresults <- sapply(results, round, digits=0)

roundedresults

actual <- round(testing$Churn, digits = 0)

prediction <- round(output$net.result, digits = 0)

mtab <- table(actual,prediction)

mtab

confusionMatrix(mtab)

Perbandingan SVM dan ANN


Dapat disimpulkan bahwa model SVM lebih baik daripada ANN, karena nilai tingkat
keakurasian lebih tinggi model SVM yaitu sebesar 0.8159 atau 81.59% daripada ANN
yaitu sebesar 0.7932 atau 79.32%.

Anda mungkin juga menyukai