Load Package

library(arules)
## Warning: package 'arules' was built under R version 3.5.3
## Loading required package: Matrix
## 
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
## 
##     abbreviate, write
library(ggplot2)

Membaca Dataset Sebagai Transaction

transaksi<-read.transactions("C:/file ku/DQLab/R/dataset/test_project_retail.csv",sep = ",")
print(transaksi)
## transactions in sparse format with
##  3450 transactions (rows) and
##  69 items (columns)

Hasil di atas menunjukkan bahwa dataset kita memiliki total 3450 transaksi dan 69 item unik.

Menampilkan Daftar Item Transaksi

transaksi@itemInfo
##                              labels
## 1                Atasan Baju Belang
## 2                 Atasan Kaos Putih
## 3                 Baju Batik Wanita
## 4  Baju Kaos Anak - Karakter Kartun
## 5      Baju Kaos Anak - Superheroes
## 6                Baju Kaos Olahraga
## 7                 Baju Kemeja Putih
## 8        Baju Renang Anak Perempuan
## 9        Baju Renang Pria Anak-anak
## 10          Baju Renang Pria Dewasa
## 11        Baju Renang Wanita Dewasa
## 12                     Blouse Denim
## 13          Celana Jeans Sobek Pria
## 14        Celana Jeans Sobek Wanita
## 15             Celana Jogger Casual
## 16      Celana Panjang Format Hitam
## 17             Celana Pendek Casual
## 18        Celana Pendek Green/Hijau
## 19              Celana Pendek Jeans
## 20                  Celana Tactical
## 21                      Cover Koper
## 22                  Cream Whitening
## 23               Dompet Card Holder
## 24                Dompet Flip Cover
## 25                Dompet Kulit Pria
## 26            Dompet STNK Gantungan
## 27                    Dompet Unisex
## 28             Flat Shoes Ballerina
## 29                     Gembok Koper
## 30                   Hair and Scalp
## 31                       Hair Dryer
## 32                         Hair Dye
## 33                       Hair Tonic
## 34                      Jeans Jumbo
## 35                             Kaos
## 36                      Koper Fiber
## 37                      Kuas Makeup
## 38                          Mascara
## 39                    Minyak Rambut
## 40             Obat Penumbuh Rambut
## 41                         Pelembab
## 42              Sepatu Kulit Casual
## 43               Sepatu Sandal Anak
## 44           Sepatu Sekolah Hitam W
## 45              Sepatu Sport merk Y
## 46              Sepatu Sport merk Z
## 47                    Serum Vitamin
## 48             Shampo Anti Dandruff
## 49                     Shampo Biasa
## 50                     Stripe Pants
## 51                   Sunblock Cream
## 52              Sweater Top Panjang
## 53           Tali Ban Ikat Pinggang
## 54               Tali Pinggang Anak
## 55        Tali Pinggang Gesper Pria
## 56                         Tank Top
## 57                     Tas Kosmetik
## 58              Tas Kulit Selempang
## 59                       Tas Makeup
## 60                  Tas Multifungsi
## 61              Tas Pinggang Wanita
## 62                  Tas Ransel Mini
## 63       Tas Sekolah Anak Laki-laki
## 64       Tas Sekolah Anak Perempuan
## 65                       Tas Tangan
## 66                       Tas Travel
## 67                    Tas Waist Bag
## 68                     Wedges Hitam
## 69               Woman Ripped Jeans

Melihat Jumlah Penjualan Item

data_item<-itemFrequency(transaksi, type="absolute")
data_item
##               Atasan Baju Belang                Atasan Kaos Putih 
##                               56                              410 
##                Baju Batik Wanita Baju Kaos Anak - Karakter Kartun 
##                             1312                              418 
##     Baju Kaos Anak - Superheroes               Baju Kaos Olahraga 
##                              400                              308 
##                Baju Kemeja Putih       Baju Renang Anak Perempuan 
##                             1255                              124 
##       Baju Renang Pria Anak-anak          Baju Renang Pria Dewasa 
##                               32                              313 
##        Baju Renang Wanita Dewasa                     Blouse Denim 
##                              493                              629 
##          Celana Jeans Sobek Pria        Celana Jeans Sobek Wanita 
##                                9                              834 
##             Celana Jogger Casual      Celana Panjang Format Hitam 
##                             1136                              167 
##             Celana Pendek Casual        Celana Pendek Green/Hijau 
##                              639                              439 
##              Celana Pendek Jeans                  Celana Tactical 
##                              811                              604 
##                      Cover Koper                  Cream Whitening 
##                             1086                              226 
##               Dompet Card Holder                Dompet Flip Cover 
##                              772                              785 
##                Dompet Kulit Pria            Dompet STNK Gantungan 
##                              376                              340 
##                    Dompet Unisex             Flat Shoes Ballerina 
##                               75                              645 
##                     Gembok Koper                   Hair and Scalp 
##                              386                              698 
##                       Hair Dryer                         Hair Dye 
##                              821                               46 
##                       Hair Tonic                      Jeans Jumbo 
##                              226                              433 
##                             Kaos                      Koper Fiber 
##                              433                              310 
##                      Kuas Makeup                          Mascara 
##                              118                               92 
##                    Minyak Rambut             Obat Penumbuh Rambut 
##                              378                              235 
##                         Pelembab              Sepatu Kulit Casual 
##                               24                              260 
##               Sepatu Sandal Anak           Sepatu Sekolah Hitam W 
##                             1062                              246 
##              Sepatu Sport merk Y              Sepatu Sport merk Z 
##                              506                              888 
##                    Serum Vitamin             Shampo Anti Dandruff 
##                             1685                              530 
##                     Shampo Biasa                     Stripe Pants 
##                             2075                               19 
##                   Sunblock Cream              Sweater Top Panjang 
##                              229                              602 
##           Tali Ban Ikat Pinggang               Tali Pinggang Anak 
##                               27                              520 
##        Tali Pinggang Gesper Pria                         Tank Top 
##                             1003                              592 
##                     Tas Kosmetik              Tas Kulit Selempang 
##                               11                              109 
##                       Tas Makeup                  Tas Multifungsi 
##                              141                              280 
##              Tas Pinggang Wanita                  Tas Ransel Mini 
##                              508                              560 
##       Tas Sekolah Anak Laki-laki       Tas Sekolah Anak Perempuan 
##                              437                               71 
##                       Tas Tangan                       Tas Travel 
##                              128                              762 
##                    Tas Waist Bag                     Wedges Hitam 
##                              556                              849 
##               Woman Ripped Jeans 
##                              118

Statistik Top 10

top_item<-sort(data_item,decreasing=TRUE)
top_item<-top_item[1:10]
top_item<-data.frame("Nama_Produk"=names(top_item),"Jumlah"=top_item,row.names=NULL)
print(top_item)
##                  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

Bar Plot 10 Item Teratas

## Warning: position_dodge requires non-overlapping x intervals

Shampo biasa adalah item yang paling banyak muncul dalam transaksi atau paling banyak terjual, dengan total 2075.

Statistik Bottom 10

bottom_item<-sort(data_item)
bottom_item<-bottom_item[1:10]
bottom_item<-data.frame("Nama_Produk"=names(bottom_item),"Jumlah"=bottom_item,row.names=NULL)
print(bottom_item)
##                   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

Bar Plot 10 Item Terbawah

ggplot(data= bottom_item, aes(x=Nama_Produk, y=Jumlah)) +
    geom_bar(stat="identity", position="dodge",fill="black")+
    labs(title="10 Item Terbawah", x="Nama Produk", y="Jumlah")+
    theme(axis.text.x = element_text(angle=45,vjust = 0.5), plot.title = element_text(hjust=0.5))+
    geom_text(aes(label=Jumlah),position = position_dodge(1.2), vjust=1.6, color="white", size=3.5)
## Warning: position_dodge requires non-overlapping x intervals

Celana Jeans Sobek Pria adalah item yang paling jarang muncul dalam transaksi atau paling sedikit terjual.

Mendapatkan Kombinasi Produk yang Menarik

Dalam hal ini kombinasi produk yang menarik adalah :

  1. Memiliki asosiasi atau hubungan kuat,

  2. Kombinasi produk minimal 2 item, dan maksimal 3 item,

  3. Kombinasi produk muncul paling sedikit 10 dari seluruh transaksi,

  4. Memiliki tingkat kepercayaan minimal 50%.

rules_transaksi<-apriori(transaksi,parameter=list(supp=10/length(transaksi), confidence=0.5,minlen=2,maxlen=3))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime     support
##         0.5    0.1    1 none FALSE            TRUE       5 0.002898551
##  minlen maxlen target   ext
##       2      3  rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 10 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[69 item(s), 3450 transaction(s)] done [0.00s].
## sorting and recoding items ... [68 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3
## Warning in apriori(transaksi, parameter = list(supp = 10/
## length(transaksi), : Mining stopped (maxlen reached). Only patterns up to a
## length of 3 returned!
##  done [0.00s].
## writing ... [4637 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].
rules_transaksi<-sort(rules_transaksi,by='lift',decreasing=TRUE)
rules_transaksi<-rules_transaksi[1:10]
inspect(rules_transaksi)
##      lhs                             rhs                              support confidence     lift count
## [1]  {Tas Makeup,                                                                                      
##       Tas Pinggang Wanita}        => {Baju Renang Anak Perempuan} 0.010434783  0.8780488 24.42958    36
## [2]  {Tas Makeup,                                                                                      
##       Tas Travel}                 => {Baju Renang Anak Perempuan} 0.010144928  0.8139535 22.64629    35
## [3]  {Tas Makeup,                                                                                      
##       Tas Ransel Mini}            => {Baju Renang Anak Perempuan} 0.011304348  0.7358491 20.47322    39
## [4]  {Sunblock Cream,                                                                                  
##       Tas Pinggang Wanita}        => {Kuas Makeup}                0.016231884  0.6913580 20.21343    56
## [5]  {Baju Renang Anak Perempuan,                                                                      
##       Tas Pinggang Wanita}        => {Tas Makeup}                 0.010434783  0.8000000 19.57447    36
## [6]  {Baju Renang Anak Perempuan,                                                                      
##       Tas Ransel Mini}            => {Tas Makeup}                 0.011304348  0.7959184 19.47460    39
## [7]  {Baju Renang Anak Perempuan,                                                                      
##       Celana Pendek Green/Hijau}  => {Tas Makeup}                 0.010144928  0.7777778 19.03073    35
## [8]  {Tas Makeup,                                                                                      
##       Tas Waist Bag}              => {Baju Renang Anak Perempuan} 0.004347826  0.6818182 18.96994    15
## [9]  {Celana Pendek Green/Hijau,                                                                       
##       Tas Makeup}                 => {Baju Renang Anak Perempuan} 0.010144928  0.6730769 18.72674    35
## [10] {Dompet Flip Cover,                                                                               
##       Sunblock Cream}             => {Kuas Makeup}                0.016231884  0.6292135 18.39650    56

Terlihat kombinasi teratas yaitu {tas makeup, tas pinggang wanita} => {Baju renang anak perempuan} cukup menarik. Karena kombinasi ini muncul sebanyak 36 kali dari 3450 transaksi untuk dataset kita. Nilai lift juga di atas 1, yang artinya rule ini memiliki asosiasi tinggi antar itemset yang terdapat di rule ini.

Artinya ada beberapa opsi action item yang dapat kita lakukan:

  1. Rekomendasikan kepada setiap pelanggan yang membeli tas makeup dan tas pinggan wanita untuk membeli baju renang anak perempuan.

  2. Rak display untuk tas makeup, tas pinggang wanita, dan baju renang anak perempuan dapat didekatkan.

  3. Baju renang anak perempuan dapat dipaketkan bersama dengan tas makeup atau tas pinggang wanita dan dijual dengan harga khusus.

Mencari Paket Produk yang bisa dipasangkan dengan Item Slow-Moving

Slow-moving item adalah produk yang pergerakan penjualannya lambat atau kurang cepat, dikarenakan mungkin harganya tidak bagus dan jarang dibutuhkan jika dijual satuan. Sehingga perlu dicari asosiasi kuat dari item produk ini dengan produk lain sehingga jika dipaketkan akan menjadi lebih menarik, dalam kasus ini “Baju Renang Pria Anak-anak” dan “Hair Dye”.

rules_transaksi<-apriori(transaksi,parameter=list(supp=10/length(transaksi),confidence=0.1,minlen=2,maxlen=3))
## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime     support
##         0.1    0.1    1 none FALSE            TRUE       5 0.002898551
##  minlen maxlen target   ext
##       2      3  rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 10 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[69 item(s), 3450 transaction(s)] done [0.00s].
## sorting and recoding items ... [68 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3
## Warning in apriori(transaksi, parameter = list(supp = 10/
## length(transaksi), : Mining stopped (maxlen reached). Only patterns up to a
## length of 3 returned!
##  done [0.00s].
## writing ... [39832 rule(s)] done [0.01s].
## creating S4 object  ... done [0.01s].
mba1<-head(subset(rules_transaksi,rhs %in% "Baju Renang Pria Anak-anak"),by='lift',decreasing=TRUE, n=3L)
mba2<-head(subset(rules_transaksi,rhs %in% "Hair Dye"),by='lift',decreasing=TRUE,n=3L)
mba<-c(mba1,mba2)
inspect(mba)
##     lhs                            rhs                              support confidence      lift count
## [1] {Gembok Koper,                                                                                    
##      Tas Waist Bag}             => {Baju Renang Pria Anak-anak} 0.004057971  0.2745098 29.595588    14
## [2] {Flat Shoes Ballerina,                                                                            
##      Gembok Koper}              => {Baju Renang Pria Anak-anak} 0.004057971  0.1866667 20.125000    14
## [3] {Celana Jeans Sobek Wanita,                                                                       
##      Jeans Jumbo}               => {Baju Renang Pria Anak-anak} 0.005507246  0.1210191 13.047373    19
## [4] {Baju Kemeja Putih,                                                                               
##      Tas Waist Bag}             => {Hair Dye}                   0.006376812  0.1094527  8.208955    22
## [5] {Dompet Flip Cover,                                                                               
##      Tas Waist Bag}             => {Hair Dye}                   0.003768116  0.1092437  8.193277    13

Berdasarkan hasil di atas, untuk meningkatkan penjualan maka item Baju renang pria anak-anak dapat dipaketkan bersama gembok koper dan tas waist bag. Sedangkan item Hair dye dapat dipaketkan bersama baju kemeja putih dan tas waist bag.