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.freq<-table(telcomu)
telcomu=data.frame(Forbes2000$profits, Forbes2000$country)
techno.freq<-table(techno)
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=na.omit(data)
summary(data)
View(data)
str(data)
#SVM
library(e1071)
library(caret)
library(devtools)
pie(table(data$Churn))
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)
data = train)
dataSVM
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<-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)
str(data)
for (i in names(data[,-1])) {
# Data Partition
set.seed(29)
head(training)
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
head(training[1,])
results
library(caret)
roundedresults
mtab
confusionMatrix(mtab)