Module 12
Module 12
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.
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).
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.
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.
Mendapatkan daftar seluruh kombinasi paket produk dengan korelasi yang kuat.
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
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.
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
"6","Cover Koper",1086
"10","Wedges Hitam",849
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.
Jika script-nya berjalan dengan lancar, maka isi dari file tersebut akan terlihat sebagai berikut.
"","Nama.Produk","Jumlah"
"2","Tas Kosmetik",11
"3","Stripe Pants",19
"4","Pelembab",24
"7","Hair Dye",46
"8","Atasan Baju Belang",56
"10","Dompet Unisex",75
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:
write(variable_untuk_rules, file="nama_file_yang_diinginkan.txt")
"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.
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)
jumlah_transaksi<-length(transaksi_tabular)
jumlah_kemunculan_minimal <- 10
transaksi_tabular,
parameter= list(supp=jumlah_kemunculan_minimal/jumlah_transaksi,
# Filter
apriori_rules1 <- subset(apriori_rules, lift > 1 & rhs %in% "Tas Makeup")
apriori_rules2 <- subset(apriori_rules, lift > 1 & rhs %in% "Baju Renang Pria Anak-anak")
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
Silahkan mengisi bagian blank (……) dengan syntax yang sesuai sehingga diperoleh output yang
diharapkan.
Output :
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
Notes :
Buatlah sebuah “R Function” di mana Function tersebut dapat digunakan untuk mengganti missing
value dari suatu vector dengan nilai mean dari vector tersebut.
df <- c(1,2,3,4,5,6,NA,7,8,9,NA)
df
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
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).
Menampilkan hasil statistik deskriptif (min, max, median, mean, dan quartil) untuk semua
kolom.
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.
Bagaimanakah hubungan antara Volume batang pohon Cherry dengan diameter dan ketinggian (height)?
Selanjutnya, kamu diminta untuk menganalisa efek pemberian obat tidur terhadap peningkatan lamanya
waktu tidur dari sekelompok mahasiswa. Berikut preview dari observasi tersebut :
Cara 1 :
Cara 2 :
Menggunakan data di problem 2 dan library ggplot, buatlah R syntax yang jika dijalankan akan
menghasilkan output berikut :
Membuat Model Sederhana
Dari data tersebut anda ingin mengetahui faktor – faktor apa saja yang mempengaruhi total biaya listrik
di setiap rumah tangga.
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 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.