Anda di halaman 1dari 22

MODULE 12

Create Next Best Offering to Drive Revenue and Loyalty

DQLab.id Fashion adalah sebuah toko fashion yang menjual berbagai produk seperti jeans, kemeja,
kosmetik, dan lain-lain. Walaupun cukup berkembang, namun dengan semakin banyaknya kompetitor
dan banyak produk yang stoknya masih banyak tentunya membuat khawatir Pak Agus, manajer DQLab.id
Fashion.

Salah satu solusi adalah membuat paket yang inovatif. Dimana produk yang sebelumnya tidak terlalu
laku tapi punya pangsa pasar malah bisa dipaketkan dan laku.

Anda sebagai seorang data scientist, akan ditugaskan membantu Pak Agus untuk mengidentifikasi paket
produk yang menarik untuk dipaketkan sehingga akhirnya bisa meningkatkan keuntungan dan loyalitas
para pelanggan DQLab.id Fashion. Dan untuk wewujudkan ini, Anda akan menggunakan R dan algoritma
aproriari dari paket arules di sepanjang project ini.

Dataset Transaksi Penjualan DQLab.id Fashion

Untuk memulai project ini, Pak Agus meminta Pak Charlie, data engineer dari DQLab.id Fashion
memberikan data transaksi 3 bulan kepada Anda dalam bentuk format TSV (Tab Separated
Value) dengan nama transaksi_dqlab_retail.tsv dengan jumlah baris 33,669 baris data (3,450 kode
transaksi).

Berikut adalah tampilan datanya.

Data transaksi ini telah dirapikan untuk Anda dengan hanya mengandung dua variabel, yaitu:

 Kode Transaksi

 Nama Barang

Variabel lain seperti harga, tanggal, jumlah pembelian, dan lain-lain – tidak dimasukkan sesuai
permintaan pihak DQLab.id Academy kepada DQLab.id Fashion dengan alasan dua variabel tersebut
sudah cukup.

Petunjuk Penyelesaian Project

Untuk menyelesaikan project, maka kita akan mengetikkan code yang perlu di-submit untuk dicek
jawabannya benar atau salah. Berbeda dengan course, setiap code yang di-submit akan otomatis
disimpan dan dimunculkan kondisi code terakhir setiap kali Anda buka soal terkait.

Project ini terdiri dari 3 soal, yaitu:

 Mendapatkan insight top 10 dan bottom 10 dari produk yang terjual.

 Mendapatkan daftar seluruh kombinasi paket produk dengan korelasi yang kuat.

 Mendapatkan daftar seluruh kombinasi paket produk dengan item tertentu.

Tiap soal memerlukan input dataset yang telah dijelaskan pada subbab sebelumnya. Setelah diproses
maka Anda perlu menuliskan dalam nama file sesuai petunjuk.
Tugas Praktek

Cobalah jalankan code yang sudah ada pada code editor berikut di mana file dataset dibaca dan
kemudian langsung ditulis menggunakan function write dari package arules.

Jika berjalan dengan lancar maka pada saat klik Download Output File seperti berikut

Kita akan mendapatkan daftar file di mana salah satunya


adalah file bernama test_project_retail_1.txt seperti terlihat pada gambar berikut.

Catatan: tampilan daftar file dapat berbeda dengan daftar milik Anda.

Tampilan di dalam file test_project_retail_1.txt sebagian isinya akan terlihat sebagai berikut.
Output Awal: Statistik Top 10

Tahap pertama sebenarnya yang diinginkan oleh Pak Agus adalah melihat apakah Anda mampu
memberikan info top 10 dari dataset transaksi yang diberikan.

Buatlah script R untuk menghasilkan daftar tersebut, dan hasilnya disimpan ke


dalam file top10_item_retail.txt

Gunakan dataset transaksi_dqlab_retail.tsv pada saat membaca data.

Jika script-nya berjalan dengan lancar, maka isi dari file tersebut akan terlihat sebagai berikut.

"","Nama.Produk","Jumlah"

"1","Shampo Biasa",2075

"2","Serum Vitamin",1685

"3","Baju Batik Wanita",1312

"4","Baju Kemeja Putih",1255

"5","Celana Jogger Casual",1136

"6","Cover Koper",1086

"7","Sepatu Sandal Anak",1062

"8","Tali Pinggang Gesper Pria",1003

"9","Sepatu Sport merk Z",888

"10","Wedges Hitam",849

Klik tombol Submit Code untuk pengecekan hasil.

Hint: Gunakan kombinasi function itemFrequency, names, sort, dan data.frame.


Output Awal: Statistik Bottom 10

Tahap berikutnya adalah Anda harus bisa memberikan informasi bottom 10 dari dataset transaksi yang
diberikan.

Tahap pertama sebenarnya yang diinginkan oleh Pak Agus adalah melihat apakah Anda mampu
memberikan info top 10 dari dataset transaksi yang diberikan.

Buatlah script R untuk menghasilkan daftar tersebut, dan hasilnya disimpan ke


dalam file bottom10_item_retail.txt.

Gunakan dataset transaksi_dqlab_retail.tsv pada saat membaca data.

Jika script-nya berjalan dengan lancar, maka isi dari file tersebut akan terlihat sebagai berikut.

"","Nama.Produk","Jumlah"

"1","Celana Jeans Sobek Pria",9

"2","Tas Kosmetik",11

"3","Stripe Pants",19

"4","Pelembab",24

"5","Tali Ban Ikat Pinggang",27

"6","Baju Renang Pria Anak-anak",32

"7","Hair Dye",46
"8","Atasan Baju Belang",56

"9","Tas Sekolah Anak Perempuan",71

"10","Dompet Unisex",75

Perhatikan urutan (sort) terhadap Nama Produk dan Jumlah.

Mendapatkan Kombinasi Produk yang menarik

Setelah yakin Anda dapat melakukannya Pak Agus ingin Anda mengirimkan file yang berisi daftar 10
paket kombinasi produk yang paling "menarik".

Anda pertamanya bingung, apa sih definisi menarik versi Pak Agus ini. Setelah wawancara intensif,
ternyata pengertiannya adalah sebagai berikut:

 Memiliki asosiasi atau hubungan erat.

 Kombinasi produk minimal 2 item, dan maksimum 3 item.

 Kombinasi produk itu muncul setidaknya 10 dari dari seluruh transaksi.

 Memiliki tingkat confidence minimal 50 persen.

Buatlah script R untuk menghasilkan daftar tersebut dan hasilnya disimpan ke


dalam file kombinasi_retail.txt. Namun untuk menulis hasil dari rules yang akan tampak seperti di
bawah ini, Anda tidak perlu melakukan konversi rules menjadi data.frame. Gunakan langsung
fungsi write dengan syntax berikut:

write(variable_untuk_rules, file="nama_file_yang_diinginkan.txt")

Gunakan dataset transaksi_dqlab_retail.tsv pada saat membaca data.


Jika berjalan dengan lancar maka output-nya adalah sebagai berikut.

"rules" "support" "confidence" "lift"

"797" "{Tas Makeup,Tas Pinggang Wanita} => {Baju Renang Anak Perempuan}" 0.0104347826086957
0.878048780487805 24.4295830055075

"807" "{Tas Makeup,Tas Travel} => {Baju Renang Anak Perempuan}" 0.0101449275362319
0.813953488372093 22.6462865716429

"802" "{Tas Makeup,Tas Ransel Mini} => {Baju Renang Anak Perempuan}" 0.011304347826087
0.735849056603774 20.4732197200243

"649" "{Sunblock Cream,Tas Pinggang Wanita} => {Kuas Makeup }" 0.016231884057971
0.691358024691358 20.2134337727558

"796" "{Baju Renang Anak Perempuan,Tas Pinggang Wanita} => {Tas Makeup}" 0.0104347826086957 0.8
19.5744680851064

"801" "{Baju Renang Anak Perempuan,Tas Ransel Mini} => {Tas Makeup}" 0.011304347826087
0.795918367346939 19.4745983499783

"791" "{Baju Renang Anak Perempuan,Celana Pendek Green/Hijau} => {Tas Makeup}"
0.0101449275362319 0.777777777777778 19.0307328605201

"799" "{Tas Makeup,Tas Waist Bag} => {Baju Renang Anak Perempuan}" 0.00434782608695652
0.681818181818182 18.9699413489736

"792" "{Celana Pendek Green/Hijau,Tas Makeup} => {Baju Renang Anak Perempuan}"
0.0101449275362319 0.673076923076923 18.7267369727047

"656" "{Dompet Flip Cover,Sunblock Cream} => {Kuas Makeup }" 0.016231884057971
0.629213483146067 18.3964959055418
Mencari Paket Produk yang bisa dipasangkan dengan Item Slow-Moving

Slow-moving item adalah produk yang pergerakan penjualannya lambat atau kurang cepat. Ini akan
bermasalah apabila item produk tersebut masih menumpuk.

Kadang kala item ini belum tentu tidak laku, hanya saja mungkin harganya tidak bagus dan jarang
dibutuhkan jika dijual satuan. Nah, jika tidak dijual satuan kita perlu cari asosiasi kuat dari item produk
ini dengan produk lain sehingga jika dipaketkan akan menjadi lebih menarik.

Pak Agus juga meyakini hal ini, dan ingin agar Anda membantu mengidentifikasi dua item produk yang
menurut dia stoknya masih banyak dan perlu dicari pasangan item untuk pemaketannya.

Dua item produk tersebut adalah "Tas Makeup" dan "Baju Renang Pria Anak-anak". Pak Agus ingin
meminta kombinasi yang bisa dipaketkan dengan kedua produk tersebut.

Masing-masing produk tersebut dikeluarkan 3 rules yang asosiasinya paling kuat, sehingga total ada 6
rules. Persyaratan-persyaratan asosiasi kuat ini masih sama dengan yang telah disebutkan Pak Agus
sebelumnya, kecuali tingkat confidence dicoba pada tingkat minimal 0.1.

Buatlah script R untuk menghasilkan daftar tersebut dan hasilnya disimpan ke


dalam file kombinasi_retail_slow_moving.txt. Dan untuk menghasilkan file ini, rules tidak usah
dikonversi menjadi data frame dan bisa langsung ditulis dengan write seperti syntax berikut.

write(variable_untuk_rules, file="nama_file_yang_diinginkan.txt")
Gunakan dataset transaksi_dqlab_retail.tsv pada saat membaca data.

Hint: Pada association rules, item "Tas Makeup" dan "Baju Renang Pria Anak-anak" tersebut kita
masukkan di rhs (right hand side). Gabungkan kedua subset rules yang dengan function c sebelum
dituliskan ke file.

library(arules)

nama_file <- "transaksi_dqlab_retail.tsv"

transaksi_tabular <- read.transactions(file=nama_file, format="single", sep="\t", cols=c(1,2), skip=1)

jumlah_transaksi<-length(transaksi_tabular)

jumlah_kemunculan_minimal <- 10

apriori_rules <- apriori(

transaksi_tabular,

parameter= list(supp=jumlah_kemunculan_minimal/jumlah_transaksi,

conf=0.1, minlen=2, maxlen=3))

# Filter

apriori_rules1 <- subset(apriori_rules, lift > 1 & rhs %in% "Tas Makeup")

apriori_rules1 <- sort(apriori_rules1, by='lift', decreasing = T)[1:3]

apriori_rules2 <- subset(apriori_rules, lift > 1 & rhs %in% "Baju Renang Pria Anak-anak")

apriori_rules2 <- sort(apriori_rules2, by='lift', decreasing = T)[1:3]

apriori_rules <- c(apriori_rules1, apriori_rules2)

inspect(apriori_rules)

write(apriori_rules,file="kombinasi_retail_slow_moving.txt")
Penutup

Jika Anda telah selesai mengerjakan project dengan mengeluarkan seluruh output yang diinginkan, maka
Anda berhak mendapatkan sertifikat penyelesaian project.

Namun sebaliknya, jika Anda pada tahap ini belum menyelesaikan project sesuai dengan output yang
diharapkan maka sertifikat tidak akan muncul.

MODULE 13

Membuat Data frame

Jika kamu memiliki data.frame berikut :

Bagaimana kamu memunculkan output berikut di R console?


Membuat Vector dan Index Position

Silahkan mengisi bagian blank (……) dengan syntax yang sesuai sehingga diperoleh output yang
diharapkan.

Output :

Mengisi Syntax Factor

Variabel (x) adalah suatu factor :

1. Isilah blank (….) dengan syntax yang tepat sehingga dihasilkan output berikut :

2. Bagaimana syntax yang tepat untuk memodifikasi (x), jika output yang diharapkan adalah berikut ini :
Menggunakan Function

Jika terdapat “Function” :

Di mana x dan y = 3, bagaimana anda menggunakan “Function” tersebut sehingga


mendapatkan output berikut :

Notes :

Pada bagian function dituliskan dulu (x = ..... , y = .....)


Mengganti Missing Value

Buatlah sebuah “R Function” di mana Function tersebut dapat digunakan untuk mengganti missing
value dari suatu vector dengan nilai mean dari vector tersebut.

Vector dengan missing value (input) :

df <- c(1,2,3,4,5,6,NA,7,8,9,NA)

df

mean_replace <- ………


df <- mean_replace(df) df

Vector sesudah missing value diganti dengan nilai mean (output) :

Problem 1 : Langkah Awal

Sebagai seorang data scientist di suatu organisasi lingkungan hidup, Anda diminta untuk melakukan
analisa terhadap data hasil observasi dari beberapa pohon cherry. Dataset hasil observasi disimpan di
link file “https://storage.googleapis.com/dqlab-dataset/trees.csv”, dan proses analisa dilakukan
dengan R programming. Adapun tahap – tahap yang perlu dilakukan adalah sebagai berikut :

1. Load library dan load dataset dengan nama “trees_df”, adapun library yang diperlukan
yaitu readr
Mengecek Struktur Data

 Menampilkan nama kolom dan tipe data setiap kolom.

 Terdapat kesalahan penulisan untuk kolom Girth, seharusnya nama kolom tersebut adalah
Diameter.

 Satuan dari kolom Girth/ Diameter adalah inch, seharusnya adalah ft,sehingga perlu
ditambahkan kolom (diameter_ft) yang berisi hasil konversi inch – ft ( 1 inch = 0.08333 ft).

 Memunculkan beberapa baris dari dataset.

 Menampilkan hasil statistik deskriptif (min, max, median, mean, dan quartil) untuk semua
kolom.

 Mengecek missing value

Shapiro Test

Apakah data hasil observasi ketiga variabel (diameter_ft, Height, Volume) terdistribusi normal?
Gunakan Shapiro-Wilk’s method untuk mengevaluasi normality dari setiap variabel.
Visualisasi Sederhana

Buatlah visualisasi sederhana yang menjelaskan distribusi Volume dari dataset yang sudah dikerjakan
sebelumnya.

Untuk menyelesaikan soal ini, diminta untuk menggunakan density plot dari standar R-base.

Grafik yang dihasilkan seperti ini :


Mencari Hubungan

Bagaimanakah hubungan antara Volume batang pohon Cherry dengan diameter dan ketinggian (height)?

Gunakan pula visualisasi sederhana untuk menjelaskan hubungan tersebut


Analisa Efek Pemberian Obat Tidur

Selanjutnya, kamu diminta untuk menganalisa efek pemberian obat tidur terhadap peningkatan lamanya
waktu tidur dari sekelompok mahasiswa. Berikut preview dari observasi tersebut :

Extra = peningkatan waktu tidur dalam satuan jam (hour) – numeric

Group = jenis treatment/dosis obat yang diberikan – factor

ID = ID mahasiswa yang diobservasi – factor


Jika diasumsikan data hasil observasi tersebut terdistribusi normal, lakukanlah uji hipotesis untuk
mengetahui apakah terdapat perbedaan efek antara group 1 dan group 2.

 H0 = Tidak ada perbedaan efek antara group 1 dan group 2

 H1 = Terdapat perbedaan efek group 1 dan group 2

Cara 1 :

# Load library & datasetinstall.packages("tidyverse") #install in backendlibrary(readr) #pre-


definedlibrary(dplyr) #pre-defined sleep_df <-
read_csv('https://storage.googleapis.com/dqlab-dataset/sleep.csv') #pre-defined # Save the data in two
different dataframe/vectorgroup1 <- filter(sleep_df, sleep_df$group == 1)group2 <- filter(sleep_df,
sleep_df$group == 2) # Compute t-testt_test <- t.test(group1$extra, group2$extra)t_test

Cara 2 :

# Load library & dataset

install.packages("tidyverse")library(readr) #pre-defined sleep_df <- read_csv('sleep.csv') #pre-defined #


Directly compute t-test without save it in 2 different dataframe/vectort_test <- t.test(extra ~ group, data
= sleep_df)t_test

Menghasilkan Grafik - Boxplot

Menggunakan data di problem 2 dan library ggplot, buatlah R syntax yang jika dijalankan akan
menghasilkan output berikut :
Membuat Model Sederhana

Dataset https://storage.googleapis.com/dqlab-dataset/electric_bill.csv berikut menyajikan informasi


terkait biaya listrik rumah tangga di suatu negara.

Dari data tersebut anda ingin mengetahui faktor – faktor apa saja yang mempengaruhi total biaya listrik
di setiap rumah tangga.

Buatlah model sederhana yang dapat menjelaskan bagaimana


pengaruh "num_people" dan "housearea" terhadap "amount_paid"!
Training dan Testing

Dalam membuat model machine learning, dataset perlu dibagi ke dalam Training dan Testing set. Salah
satu library yang digunakan adalah caret. Dengan menggunakan Iris dataset yang sudah di-
load dan library caret, buatlah syntax untuk membagi dataset tersebut ke dalam training set (80%) dan
testing dataset (20%)!
Model Decision Tree

Dataset https://storage.googleapis.com/dqlab-dataset/suv_data.csv berikut menyajikan informasi


terkait profil customer yang pernah membeli mobil keluaran terbaru.

Dataset ini perlu dibagi ke dalam training set dan testing set, dan buatlah machine learning model
dengan menggunakan Decision tree untuk memprediksi customer yang tertarik membeli mobil keluaran
terbaru, serta evaluasi performance dari kedua model tersebut.

Anda mungkin juga menyukai