Email          : joseph.hermawan@matanauniversity.ac.id
RPubs
        : https://rpubs.com/JoHndes9
Department  : Business
Statistics
Address     : ARA Center, Matana University
Tower
             Jl. CBD Barat Kav, RT.1, Curug
Sangereng, Kelapa Dua, Tangerang, Banten 15810.
library(ggplot2)
library(readr)
library(dplyr)
library(caret)
library(class)
library(cluster)
library(factoextra)set.seed(14280619)
generate_sales_data <- function(n) {
data <- data.frame(
ID_Pelanggan = 1:n,
Usia = sample(18:70, n, replace = TRUE),
Gender = as.factor(sample(c("Pria", "Wanita"), n, replace = TRUE)),
Jumlah_Pembelian = sample(1:10, n, replace = TRUE),
Total_Pembelian = sample(50:500, n, replace = TRUE),
Jenis_Produk_Favorit = as.factor(sample(c("Elektronik", "Pakaian", "Makanan"), n, replace = TRUE))
)
return(data)
}
data=generate_sales_data(10000)
head(data)## ID_Pelanggan Usia Gender Jumlah_Pembelian Total_Pembelian
## 1 1 50 Wanita 7 453
## 2 2 18 Pria 5 63
## 3 3 53 Pria 10 72
## 4 4 29 Pria 2 150
## 5 5 47 Wanita 6 337
## 6 6 29 Pria 8 500
## Jenis_Produk_Favorit
## 1 Elektronik
## 2 Pakaian
## 3 Makanan
## 4 Makanan
## 5 Makanan
## 6 Pakaian
sumE=0
sumP=0
sumM=0
for(x in 1:length(data$ID_Pelanggan)){
if(data$Jenis_Produk_Favorit[x] == "Elektronik"){
sumE=sumE+data$Jumlah_Pembelian[x]
}else
if(data$Jenis_Produk_Favorit[x] == "Pakaian"){
sumP=sumP+data$Jumlah_Pembelian[x]
}
else
if(data$Jenis_Produk_Favorit[x] == "Makanan"){
sumM=sumM+data$Jumlah_Pembelian[x]
}
}
sumALL=c(sumE,sumP,sumM)
sumpers=round(100*sumALL/sum(sumALL),3)
pie(sumALL,labels = sumpers,col = c("#FF8899","#8899FF","#99FF88"),main ="total jumlah pembelian")
legend("topright",c("Elektronik","Pakaian","Makanan"),fill=c("#FF8899","#8899FF","#99FF88"))Bedarsarkan grafik ini, kita dapat melihat bahwa makanan meruoahkan barang yang paling sering dibeli, tetapi ketiga jenis produk memiliki jumlah pembelian yang hampir sama
ggplot(data,aes(x=Usia))+
geom_histogram(binwidth = 2,fill="#013478",color="#FFFFFF") +
labs(title = "histrogram usia",
x="usia",
y="frekuensi")ggplot(data,aes(x=Gender))+
geom_bar(fill="#013478",color="#FFFFFF") +
labs(title = "histrogram usia",
x="usia",
y="frekuensi")Dari kedua grafik ini, kita dapat mengambil kesimpulan bahwa, berdasarkan usia, pelanggan terbanyak memiliki umuer sekitar 62, dan kedua paling sering pada usia sekitar 40. sedangkan, jika berdasarkan jenis kelamin, tidak ada perbedaan antar kedua gender.
pelE=c()
pelP=c()
pelM=c()
GE=c()
GP=c()
GM=c()
for(x in 1:length(data$ID_Pelanggan)){
if(data$Jenis_Produk_Favorit[x] == "Elektronik"){
pelE=c(pelE,data$Usia[x])
GE=c(GE,as.character(data$Gender[x]))
}else
if(data$Jenis_Produk_Favorit[x] == "Pakaian"){
pelP=c(pelP,data$Usia[x])
GP=c(GP,as.character(data$Gender[x]))
}
else
if(data$Jenis_Produk_Favorit[x] == "Makanan"){
pelM=c(pelM,data$Usia[x])
GM=c(GM,as.character(data$Gender[x]))
}
}pelED=data.frame(pelE,GE)
pelEM=data.frame(pelM,GM)
pelEP=data.frame(pelP,GP)
ggplot(pelEP,aes(x=pelP))+
geom_histogram(binwidth = 2,fill="#013478",color="#FFFFFF") +
labs(title = "histrogram usia pelanggan pakaian",
x="usia",
y="frekuensi")ggplot(pelED,aes(x=pelE))+
geom_histogram(binwidth = 2,fill="#01C9CC",color="#FFFFFF") +
labs(title = "histrogram usia pelanggan Elektronik",
x="usia",
y="frekuensi")ggplot(pelEM,aes(x=pelM))+
geom_histogram(binwidth = 2,fill="#ff46e9",color="#FFFFFF") +
labs(title = "histrogram usia pelangaan makanan",
x="usia",
y="frekuensi")pada histrogram usia untuk pelanggan makanan terdapat paling banyak pelanggan pada sekitar usia 58 dan terlihat seperti ada pola cyclica. pada histrogram untuk pelanggan elektronik paling banyak pada usia sekitar 40 tahun. pada histogram untuk pelanngan makanan paling banyak pada usia sekitar usia 60 tahun dan/atau 68 tahun dan juga terlihat tersebar secara datar.
ggplot(pelED,aes(x=GE))+
geom_bar(fill="#ff46e9",color="#000000") +
labs(title = "histrogram usia pelangaan elektronik",
x="gender",
y="frekuensi")ggplot(pelEM,aes(x=GM))+
geom_bar(fill="#deaea9",color="#000000") +
labs(title = "histrogram usia pelangaan makanan",
x="gender",
y="frekuensi")ggplot(pelEP,aes(x=GP))+
geom_bar(fill="#edeab5",color="#000000") +
labs(title = "histrogram usia pelangaan pakaian",
x="gender",
y="frekuensi")Jadi berdasarkan grafik-grafik diatas, dapat dibilang bahwa, lebih banyak pelanggan pria pada produk elektronik, lebih banyak pelanggan wanita untuk produk pakaian, dan jumlah pelnaggan pria dan wanita sama untuk produk makanan
Target dari klasifikasi yang akan dilakukan adalah jenis produk favorit. Saya memilih target tersebut karena dapat digunakan untuk memprediksikan produk yang diinginkan pelanggan dengan mudah
Metode klasifikasi yang akan digunakan adalah model decision tree, karena model ini dapat memproses data yang bukan numerik yang dapat mempengaruhi hasil dari prediksi model.
set.seed(16185150)
data2=data[,-c(1,3,6)]
target=data[,6]
train_index=createDataPartition(data$Jenis_Produk_Favorit,p=0.7,list=F)
train_data=data[train_index,]
test_data=data[-train_index,]
model_tree=train(Jenis_Produk_Favorit ~ Usia+Gender+Jumlah_Pembelian+Total_Pembelian,data=train_data,method="rpart")
prediksi=predict(model_tree,newdata = test_data)
confusionMatrix(prediksi,test_data[,6])## Confusion Matrix and Statistics
##
## Reference
## Prediction Elektronik Makanan Pakaian
## Elektronik 0 0 0
## Makanan 995 1016 988
## Pakaian 0 0 0
##
## Overall Statistics
##
## Accuracy : 0.3388
## 95% CI : (0.3218, 0.356)
## No Information Rate : 0.3388
## P-Value [Acc > NIR] : 0.5069
##
## Kappa : 0
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: Elektronik Class: Makanan Class: Pakaian
## Sensitivity 0.0000 1.0000 0.0000
## Specificity 1.0000 0.0000 1.0000
## Pos Pred Value NaN 0.3388 NaN
## Neg Pred Value 0.6682 NaN 0.6706
## Prevalence 0.3318 0.3388 0.3294
## Detection Rate 0.0000 0.3388 0.0000
## Detection Prevalence 0.0000 1.0000 0.0000
## Balanced Accuracy 0.5000 0.5000 0.5000
Jadi, untuk menentukan jumlah kluster yang akan di buat akan digunakan 3 metode yaitu elbow, silhoutte, dan gap statistic.
Menurut metode elbow, jumlah kluster yang optimal berada pada 4 sampai 6 kluster
Menurut metode silhoutte, jumlah kluster yang optimal adalah 9 kluster
Menurut metode gap statistic, jumlah kluster yang optimal adalah 1 kluster
Jadi, akan dibuat 5 kluster, karena, menurut saya, 9 kluster terlalu banyak dan satu kluster terlalu sedikit.
Algoritma yang akan digunakan adalah algoritma kmeans karena kmeans membuat kluster yang mudah dienterpertasikan dan juga bisa digunakan untuk dataset yang besar dengan waktu yang relative cepat.
Model dari klasifikasi yang telah duibuat tidak akurat, ini mungkin terjadi karena mungkin metode yang digunakan kurang cocok, atau data tidak memiliki pola yang cukup signifikan yang dapat digunakan oleh metode yang digunakan. model klasifikasi ini sebaiknya tidak dipakai karena akurasinya yang sangat rendah.
Untuk cluster yang dibuat, sudah terlihat cukup baik, kekuranganya hanya pada kluster empat dan dua dimana kedua cluster tidak terlihat jelas.
Perusahaan dapat menggunakan hasil kluster untuk lebih bisa memberi advertisement yang lebih menarik untuk pelanggan pada kluster-kluster berdasarkan karakteristik kluster tersebut.
Hasil dari analisis ini akan jelaskan pada rapat perusahaan dan akan diberi pada beberapa departmen yang bisa menggunkanya.
Beberapa tantangan yang mungkin dihadapi adalah
Cara untuk menghadapi beberapa masalah tersebut: