Reading Dataset
library(arules)
## Loading required package: Matrix
##
## Attaching package: 'arules'
## The following objects are masked from 'package:base':
##
## abbreviate, write
transaksi_tabular <- read.transactions(file="https://storage.googleapis.com/dqlab-dataset/transaksi_dqlab_retail.tsv",
format="single", sep="\t", cols=c(1,2), skip=1)
write(transaksi_tabular, file="test_project_retail_1.txt", sep=",")
Sorting the Top and Bottom 10 Products
Viewing All Items
all_item <- itemFrequency(transaksi_tabular, type = "absolute")
names(all_item)
## [1] "Atasan Baju Belang" "Atasan Kaos Putih"
## [3] "Baju Batik Wanita" "Baju Kaos Anak - Karakter Kartun"
## [5] "Baju Kaos Anak - Superheroes" "Baju Kaos Olahraga"
## [7] "Baju Kemeja Putih" "Baju Renang Anak Perempuan"
## [9] "Baju Renang Pria Anak-anak" "Baju Renang Pria Dewasa"
## [11] "Baju Renang Wanita Dewasa" "Blouse Denim"
## [13] "Celana Jeans Sobek Pria" "Celana Jeans Sobek Wanita"
## [15] "Celana Jogger Casual" "Celana Panjang Format Hitam"
## [17] "Celana Pendek Casual" "Celana Pendek Green/Hijau"
## [19] "Celana Pendek Jeans" "Celana Tactical "
## [21] "Cover Koper" "Cream Whitening"
## [23] "Dompet Card Holder" "Dompet Flip Cover"
## [25] "Dompet Kulit Pria" "Dompet STNK Gantungan"
## [27] "Dompet Unisex" "Flat Shoes Ballerina"
## [29] "Gembok Koper" "Hair and Scalp"
## [31] "Hair Dryer" "Hair Dye"
## [33] "Hair Tonic" "Jeans Jumbo"
## [35] "Kaos" "Koper Fiber"
## [37] "Kuas Makeup " "Mascara"
## [39] "Minyak Rambut" "Obat Penumbuh Rambut"
## [41] "Pelembab" "Sepatu Kulit Casual"
## [43] "Sepatu Sandal Anak" "Sepatu Sekolah Hitam W"
## [45] "Sepatu Sport merk Y" "Sepatu Sport merk Z"
## [47] "Serum Vitamin" "Shampo Anti Dandruff"
## [49] "Shampo Biasa" "Stripe Pants"
## [51] "Sunblock Cream" "Sweater Top Panjang"
## [53] "Tali Ban Ikat Pinggang" "Tali Pinggang Anak"
## [55] "Tali Pinggang Gesper Pria" "Tank Top"
## [57] "Tas Kosmetik" "Tas Kulit Selempang"
## [59] "Tas Makeup" "Tas Multifungsi"
## [61] "Tas Pinggang Wanita" "Tas Ransel Mini"
## [63] "Tas Sekolah Anak Laki-laki" "Tas Sekolah Anak Perempuan"
## [65] "Tas Tangan" "Tas Travel"
## [67] "Tas Waist Bag" "Wedges Hitam"
## [69] "Woman Ripped Jeans "
Sorting the Top 10 Products
top10_item <- sort(all_item, decreasing = TRUE)[1:10]
top10_item <- data.frame("Nama.Produk" = names(top10_item),
"Jumlah" = top10_item, row.names = NULL)
write.csv(top10_item, file = "top10_item_retail.txt")
top10_item
Sorting the Bottom 10 Products
bottom10_item <- sort(all_item, decreasing = FALSE)[1:10]
bottom10_item <- data.frame("Nama.Produk" = names(bottom10_item),
"Jumlah" = bottom10_item, row.names = NULL)
write.csv(bottom10_item, file = "bottom10_item_retail.txt")
bottom10_item
Creating The Interesting Product Combinations
kombinasi_retail <- apriori(
data = transaksi_tabular,
parameter = list(
support = 10/length(transaksi_tabular), # minimum support
confidence = 0.50, # minimum confidence
minlen = 2, # minimum banyaknya produk dalam satu rule
maxlen = 3 # maksimum banyaknya produk dalam satu rule
)
)
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.5 0.1 1 none FALSE TRUE 5 0.002898551 2
## maxlen target ext
## 3 rules TRUE
##
## 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(data = transaksi_tabular, parameter = list(support = 10/
## length(transaksi_tabular), : Mining stopped (maxlen reached). Only patterns up
## to a length of 3 returned!
## done [0.02s].
## writing ... [4637 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
kombinasi_retail <- head(sort(kombinasi_retail, decreasing = TRUE,
by = 'lift'), n = 10)
write(kombinasi_retail, file = "kombinasi_retail.txt")
kombinasi_retail
## set of 10 rules
Packaging with Slow Moving Product
kombinasi_retail <- apriori(
data = transaksi_tabular,
parameter = list(
support = 10/length(transaksi_tabular), # minimum support
confidence = 0.10, # minimum confidence
minlen = 2, # minimum banyaknya produk dalam satu rule
maxlen = 3 # maksimum banyaknya produk dalam satu rule
)
)
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.1 0.1 1 none FALSE TRUE 5 0.002898551 2
## maxlen target ext
## 3 rules TRUE
##
## 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.01s].
## 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(data = transaksi_tabular, parameter = list(support = 10/
## length(transaksi_tabular), : Mining stopped (maxlen reached). Only patterns up
## to a length of 3 returned!
## done [0.01s].
## writing ... [39832 rule(s)] done [0.02s].
## creating S4 object ... done [0.02s].
kombinasi_retail1 <- subset(kombinasi_retail, lift > 1 & rhs %in% "Tas Makeup")
kombinasi_retail1 <- sort(kombinasi_retail1, by='lift', decreasing = T)[1:3]
kombinasi_retail2 <- subset(kombinasi_retail, lift > 1 & rhs %in% "Baju Renang Pria Anak-anak")
kombinasi_retail2 <- sort(kombinasi_retail2, by='lift', decreasing = T)[1:3]
kombinasi_retail <- c(kombinasi_retail1, kombinasi_retail2)
kombinasi_retail
## set of 6 rules
write(kombinasi_retail,file="kombinasi_retail_slow_moving.txt")