Pelajari Market Basket Analysis & Algoritma APRIORI yang bekerja di baliknya. Anda akan melihat bagaimana ini membantu peritel meningkatkan bisnis dengan memprediksi item yang dibeli pelanggan secara bersamaan.
Anda adalah seorang data scientist (atau sedang dalam proses menjadi!), dan Anda mendapat klien yang menjalankan toko ritel. Klien Anda memberi data semua transaksi yang berisi item yang dibeli di toko oleh beberapa pelanggan selama periode waktu tertentu dan meminta Anda menggunakan data tersebut untuk membantu meningkatkan bisnis mereka. Klien Anda akan menggunakan temuan Anda bukan hanya untuk mengubah/memperbarui/menambah item di inventaris, tetapi juga untuk mengubah tata letak toko fisik atau toko online. Untuk menemukan hasil yang akan membantu klien Anda, Anda akan menggunakan Market Basket Analysis (MBA) yang menggunakan Association Rule Mining pada data transaksi yang diberikan.
Dalam tutorial ini Anda akan belajar:
Apa itu Association Rule Mining dan Penerapannya
Apa itu Algoritma APRIORI?
Cara mengimplementasikan MBA/Association Rule Mining menggunakan R beserta Visualisasinya
Association Rule Mining
Association Rule Mining digunakan ketika Anda ingin menemukan keterkaitan antara objek yang berbeda dalam suatu himpunan, menemukan pola yang sering muncul dalam basis data transaksi, basis data relasional, atau repositori informasi lainnya. Penerapan Association Rule Mining ditemukan dalam Pemasaran, Analisis Data Keranjang (atau Market Basket Analysis) di ritel, klasterisasi, dan klasifikasi. Metode ini dapat memberi tahu Anda item apa yang sering dibeli pelanggan secara bersamaan dengan menghasilkan serangkaian aturan yang disebut Association Rules. Sederhananya, metode ini memberi keluaran berupa aturan dalam bentuk jika ini maka itu. Klien dapat menggunakan aturan tersebut untuk berbagai strategi pemasaran:
Mengubah tata letak toko sesuai tren
Analisis perilaku pelanggan
Perancangan katalog
Pemasaran silang di toko online
Item apa yang sedang tren dibeli pelanggan
Email kustom dengan penawaran tambahan
Pertimbangkan contoh berikut:
Diberikan satu set data transaksi. Anda dapat melihat transaksi bernomor 1 sampai 5. Setiap transaksi menampilkan item yang dibeli dalam transaksi tersebut. Anda dapat melihat bahwa Popok dibeli bersama Bir dalam tiga transaksi. Demikian pula, Roti dibeli bersama susu dalam tiga transaksi sehingga keduanya menjadi himpunan item yang sering muncul. Aturan asosiasi diberikan dalam bentuk seperti di bawah ini:
$A=>B[Support,Confidence]$
Bagian sebelum $=>$ disebut sebagai jika (Anteseden) dan bagian setelah $=>$ disebut sebagai maka (Konsekuen).
Di mana A dan B adalah himpunan item dalam data transaksi. A dan B adalah himpunan tak-saling-beririsan.
Jumlah transaksi yang memiliki A dan B dibagi dengan jumlah total transaksi yang memiliki A.
$Confidence(Bread=>Milk)=\frac{3}{4}=0.75=75\%$
Sekarang cari confidence untuk Milk=>Diaper.
Catatan: Support dan Confidence mengukur seberapa menarik suatu aturan. Nilainya diatur oleh ambang minimum support dan minimum confidence. Ambang ini yang ditetapkan oleh klien membantu membandingkan kekuatan aturan sesuai keinginan Anda atau klien. Semakin mendekati ambang, semakin bermanfaat aturan tersebut bagi klien.
Frequent Itemsets: Item-set yang support-nya lebih besar atau sama dengan ambang minimum support (min_sup). Pada contoh di atas min_sup=3. Ini ditentukan sesuai pilihan pengguna.
Strong rules: Jika sebuah aturan A=>B[Support, Confidence] memenuhi min_sup dan min_confidence maka itu adalah aturan kuat.
Lift: Lift memberikan korelasi antara A dan B dalam aturan A=>B. Korelasi menunjukkan bagaimana item-set A memengaruhi item-set B.
$Lift(A=>B)=\frac{Support}{Supp(A)Supp(B)}$
Misalnya, untuk aturan {Bread}=>{Milk}, lift dihitung sebagai:
$support(Bread)=\frac{4}{5}=0.8$
$support(Milk)=\frac{4}{5}=0.8$
$Lift(Bread=>Milk)=\frac{0.6}{0.8*0.8}=0.9$
Jika aturan memiliki lift 1, maka A dan B saling bebas (independen) dan tidak ada aturan yang dapat diturunkan darinya.
Jika lift > 1, maka A dan B saling bergantung, dan derajatnya diberikan oleh nilai lift.
Jika lift < 1, maka keberadaan A akan berdampak negatif pada B.
Tujuan Association Rule Mining
Saat Anda menerapkan Association Rule Mining pada himpunan transaksi T yang diberikan, tujuan Anda adalah menemukan semua aturan dengan:
Support lebih besar atau sama dengan min_support
Confidence lebih besar atau sama dengan min_confidence
Algoritma APRIORI
Pada bagian tutorial ini, Anda akan mempelajari tentang algoritma yang berjalan di balik pustaka R untuk Market Basket Analysis. Ini akan membantu Anda lebih memahami klien dan melakukan analisis dengan lebih cermat. Jika Anda sudah tahu tentang algoritma APRIORI dan cara kerjanya, Anda bisa langsung ke bagian kode.
Association Rule Mining dipandang sebagai pendekatan dua langkah:
Frequent Itemset Generation: Temukan semua item-set yang sering muncul dengan support >= jumlah min_support yang ditentukan sebelumnya
Rule Generation: Daftarkan semua Association Rules dari item-set yang sering muncul. Hitung Support dan Confidence untuk semua aturan. Pangkas aturan yang tidak memenuhi ambang min_support dan min_confidence.
Frequent Itemset Generation adalah langkah yang paling mahal secara komputasi karena memerlukan pemindaian basis data penuh.
Di antara langkah-langkah di atas, pembangkitan Frequent Item-set adalah yang paling mahal dari sisi komputasi.
Di atas Anda telah melihat contoh hanya 5 transaksi, tetapi dalam dunia nyata data transaksi untuk ritel dapat mencapai GB dan TB data sehingga dibutuhkan algoritma yang dioptimalkan untuk memangkas Item-set yang tidak akan membantu pada langkah selanjutnya. Untuk ini digunakan Algoritma APRIORI. Algoritma ini menyatakan:
Setiap subset dari suatu frequent itemset juga harus sering muncul. Dengan kata lain, tidak ada superset dari itemset yang jarang muncul yang boleh dihasilkan atau diuji
Hal ini direpresentasikan dalam Itemset Lattice yang merupakan representasi grafis dari prinsip algoritma APRIORI. Struktur ini terdiri dari node k-item-set dan relasi subset dari k-item-set tersebut.
Anda dapat melihat pada gambar di atas bahwa di bagian paling bawah terdapat semua item dalam data transaksi dan kemudian Anda mulai bergerak ke atas membuat subset hingga himpunan kosong. Untuk jumlah item d, ukuran lattice akan menjadi $2^d$. Ini menunjukkan betapa sulitnya menghasilkan Frequent Item-set dengan menemukan support untuk setiap kombinasi. Gambar berikut menunjukkan seberapa besar bantuan APRIORI dalam mengurangi jumlah himpunan yang harus dihasilkan:
Jika item-set {a,b} jarang muncul (infrequent) maka kita tidak perlu mempertimbangkan semua super-set-nya.
Mari pahami dengan contoh. Pada contoh berikut, Anda akan melihat mengapa APRIORI adalah algoritma yang efektif dan juga menghasilkan aturan asosiasi yang kuat langkah demi langkah. Ikuti dengan buku catatan dan pena Anda!
Seperti yang Anda lihat, Anda mulai dengan membuat Candidate List untuk 1-itemset yang akan menyertakan semua item yang ada di data transaksi, secara individual. Mengingat data transaksi ritel di dunia nyata, Anda dapat melihat betapa mahalnya pembangkitan kandidat ini. Di sinilah APRIORI berperan dan membantu mengurangi jumlah daftar kandidat, dan pada akhirnya aturan yang berguna dihasilkan. Pada langkah-langkah berikut, Anda akan melihat bagaimana kita mencapai akhir dari pembangkitan Frequent Itemset, yaitu langkah pertama dari association rule mining.
Langkah Anda berikutnya adalah mencantumkan semua itemset yang sering muncul. Anda akan mengambil Frequent Itemset tak-kosong terakhir, yang dalam contoh ini adalah L2={I1, I2},{I2, I3}. Lalu buat semua subset tak-kosong dari item-set yang ada pada Daftar Frequent Item-set tersebut. Ikuti seperti pada ilustrasi di bawah ini:
Anda bisa melihat di atas terdapat empat aturan kuat. Misalnya, ambil ${I2}=>I3$ yang memiliki confidence sebesar 75% menyatakan bahwa 75% orang yang membeli I2 juga membeli I3.
Sekarang Anda telah mempelajari algoritma APRIORI lengkap yang merupakan salah satu algoritma yang paling sering digunakan dalam data mining. Mari lanjut ke kodenya, phewww!
Mengimplementasikan MBA/Association Rule Mining menggunakan R
Dalam tutorial ini, Anda akan menggunakan dataset dari UCI Machine Learning Repository. Dataset tersebut bernama Online-Retail, dan Anda dapat mengunduhnya dari sini. Dataset berisi data transaksi dari 01/12/2010 hingga 09/12/2011 untuk ritel online non-toko berbasis di Inggris yang terdaftar. Alasan menggunakan ini dan bukan dataset R adalah karena Anda lebih mungkin menerima data ritel dalam bentuk ini yang memerlukan pra-pemrosesan data.
Deskripsi Dataset
Jumlah Baris:541909
Jumlah Atribut:08
Informasi Atribut
InvoiceNo: Nomor faktur. Nominal, angka integral 6 digit yang ditetapkan secara unik untuk setiap transaksi. Jika kode ini diawali huruf 'c', itu menunjukkan pembatalan. +StockCode: Kode produk (item). Nominal, angka integral 5 digit yang ditetapkan secara unik untuk setiap produk.
Description: Nama produk (item). Nominal.
Quantity: Kuantitas setiap produk (item) per transaksi. Numerik.
InvoiceDate: Tanggal dan waktu faktur. Numerik, hari dan waktu saat setiap transaksi dibuat. Contoh dari dataset: 12/1/2010 8:26
UnitPrice: Harga satuan. Numerik, harga produk per unit dalam pound sterling.
CustomerID: Nomor pelanggan. Nominal, angka integral 5 digit yang ditetapkan secara unik untuk setiap pelanggan.
Country: Nama negara. Nominal, nama negara tempat setiap pelanggan tinggal.
Memuat Library
Pertama, Anda akan memuat library yang diperlukan. Deskripsi singkat library (diambil dari Sini) diberikan pada tabel berikut, agar Anda tahu fungsi masing-masing library:
Paket
Deskripsi
arules
Menyediakan infrastruktur untuk merepresentasikan, memanipulasi, dan menganalisis data transaksi dan pola (frequent itemsets dan association rules).
arulesViz
Memperluas paket 'arules' dengan berbagai teknik visualisasi untuk association rules dan item-sets. Paket ini juga mencakup beberapa visualisasi interaktif untuk eksplorasi aturan.
tidyverse
Tidyverse adalah kumpulan paket R berpendapat yang dirancang untuk ilmu data
readxl
Membaca File Excel di R
plyr
Alat untuk Memisah, Menerapkan, dan Menggabungkan Data
ggplot2
Membuat grafik dan bagan
knitr
Pembuatan Laporan Dinamis di R
lubridate
Lubridate adalah paket R yang mempermudah bekerja dengan tanggal dan waktu.
#install and load package arules#install.packages("arules")
library(arules)#install and load arulesViz#install.packages("arulesViz")
library(arulesViz)#install and load tidyverse#install.packages("tidyverse")
library(tidyverse)#install and load readxml#install.packages("readxml")
library(readxl)#install and load knitr#install.packages("knitr")
library(knitr)#load ggplot2 as it comes in tidyverse
library(ggplot2)#install and load lubridate#install.packages("lubridate")
library(lubridate)#install and load plyr#install.packages("plyr")
library(plyr)
library(dplyr)Didukung oleh
Pra-pemrosesan Data
Gunakan read_excel(path to file) untuk membaca dataset dari file yang diunduh ke dalam R. Berikan path lengkap ke file termasuk nama file dalam read_excel(path-to-file-with-filename)
#read excel into R dataframe
retail <- read_excel('D:/Documents/Online_Retail.xlsx')#complete.cases(data) will return a logical vector indicating which rows have no missing values. Then use the vector to get only rows that are complete using retail[,].
retail <- retail[complete.cases(retail),]#mutate function is from dplyr package. It is used to edit or add new columns to dataframe. Here Description column is being converted to factor column. as.factor converts column to factor column. %>% is an operator with which you may pipe values to another function or expression
retail %>% mutate(Description = as.factor(Description))Didukung oleh
retail %>% mutate(Country = as.factor(Country))Didukung oleh
#Converts character data to date. Store InvoiceDate as date in new variable
retail$Date <- as.Date(retail$InvoiceDate)#Extract time from InvoiceDate and store in another variable
TransTime<- format(retail$InvoiceDate,"%H:%M:%S")#Convert and edit InvoiceNo into numeric
InvoiceNo <- as.numeric(as.character(retail$InvoiceNo))Didukung oleh
#get a glimpse of your data
glimpse(retail)Didukung oleh
Catatan: Halaman 1 dari 100.
Observations:406,829
Variables:9$ InvoiceNo <chr>"536365","536365","536365","536365","536365","536365", "53...$ StockCode <chr>"85123A","71053","84406B","84029G","84029E","22752", "2173...$ Description <chr>"WHITE HANGING HEART T-LIGHT HOLDER","WHITE METAL LANTERN", "C...$ Quantity <dbl>6,6,8,6,6,2,6,6,6,32,6,6,8,6,6,3,2,3,3,4,4,...$ InvoiceDate <dttm>2010-12-0108:26:00,2010-12-0108:26:00,2010-12-0108:26:00,...$ UnitPrice <dbl>2.55,3.39,2.75,3.39,3.39,7.65,4.25,1.85,1.85,1.69,2.1...$ CustomerID <dbl>17850,17850,17850,17850,17850,17850,17850,17850,17850,...$ Country <chr>"United Kingdom","United Kingdom","United Kingdom", "United K...$ Date <date>2010-12-01,2010-12-01,2010-12-01,2010-12-01,2010-12-01,20...Didukung oleh
Sekarang, dataframe retail akan berisi 10 atribut, dengan dua atribut tambahan Date dan Time.
Sebelum menerapkan MBA/Association Rule mining, kita perlu mengonversi dataframe menjadi data transaksi sehingga semua item yang dibeli bersama dalam satu faktur berada dalam satu baris. Anda dapat melihat pada keluaran glimpse bahwa setiap transaksi berbentuk atomik, yaitu semua produk yang termasuk dalam satu faktur bersifat atomik seperti pada basis data relasional. Format ini juga disebut sebagai format singles.
Yang perlu Anda lakukan adalah mengelompokkan data dalam dataframe retail berdasarkan CustomerID, CustomerID dan Date atau Anda juga dapat mengelompokkan data menggunakan InvoiceNo dan Date. Kita memerlukan pengelompokan ini dan menerapkan sebuah fungsi padanya serta menyimpan keluarannya di dataframe lain. Ini dapat dilakukan dengan ddply.
Baris-baris kode berikut akan menggabungkan semua produk dari satu InvoiceNo dan date serta menggabungkan semua produk dari InvoiceNo dan date tersebut sebagai satu baris, dengan setiap item dipisahkan oleh ,
library(plyr)#ddply(dataframe, variables_to_be_used_to_split_data_frame, function_to_be_applied)
transactionData <- ddply(retail,c("InvoiceNo","Date"),function(df1)paste(df1$Description,
collapse =","))#The R function paste() concatenates vectors to character and separated results using collapse=[any optional charcater string ]. Here ',' is usedDidukung oleh
Berikutnya, karena InvoiceNo dan Date tidak akan berguna dalam rule mining, Anda dapat mengaturnya menjadi NULL.
#set column InvoiceNo of dataframe transactionData
transactionData$InvoiceNo <-NULL#set column Date of dataframe transactionData
transactionData$Date <-NULL#Rename column to items
colnames(transactionData)<- c("items")#Show Dataframe transactionData
transactionDataDidukung oleh
Catatan: Halaman 1 dari 100.
Format untuk data transaksi ini disebut format basket. Selanjutnya, Anda harus menyimpan data transaksi ini ke dalam file .csv (Comma Separated Values). Untuk ini, gunakan write.csv()
write.csv(transactionData,"D:/Documents/market_basket_transactions.csv", quote =FALSE, row.names =FALSE)#transactionData: Data to be written#"D:/Documents/market_basket.csv": location of file with file name to be written to#quote: If TRUE it will surround character or factor column with double quotes. If FALSE nothing will be quoted#row.names: either a logical value indicating whether the row names of x are to be written along with x, or a character vector of row names to be written.Didukung oleh
Lihat apakah data transaksi Anda sudah dalam bentuk yang benar:
Selanjutnya, Anda harus memuat data transaksi ini ke dalam sebuah objek dari kelas transaksi. Ini dilakukan dengan menggunakan fungsi R read.transactions dari paket arules.
Baris kode berikut akan mengambil file data transaksi D:/Documents/market_basket_transactions.csv yang berformat basket dan mengonversinya menjadi objek dari kelas transaksi.
tr <- read.transactions('D:/Documents/market_basket_transactions.csv', format ='basket', sep=',')#sep tell how items are separated. In this case you have separated using ','Didukung oleh
Saat Anda menjalankan baris kode di atas Anda mungkin mendapatkan banyak EOF within quoted string dalam output Anda, jangan khawatir soal itu.
Jika Anda sudah memiliki data transaksi dalam sebuah dataframe, gunakan baris kode berikut untuk mengonversinya menjadi objek transaksi:
`trObj<-as(dataframe.dat,"transactions")`Didukung oleh
transactions in sparse format with
22191 transactions (rows) and
7876 items (columns)
transactions as itemMatrix in sparse format with
22191 rows (elements/itemsets/transactions) and
7876 columns (items) and a density of 0.001930725
most frequent items:
WHITE HANGING HEART T-LIGHT HOLDER REGENCY CAKESTAND 3 TIER
18031709
JUMBO BAG RED RETROSPOT PARTY BUNTING
14601285
ASSORTED COLOUR BIRD ORNAMENT (Other)1250329938
element (itemset/transaction) length distribution:
sizes
12345678910111213141516173598159411419088617586966766635936245375165315515224641819202122232425262728293031323334441483419395315306272238253229213222215170159138142353637383940414243444546474849505113410911190113949387886563676360594964525354555657585960616263646566676840414943362939302728172525202724226970717273747576777879808182838485152019131616111512791415128911868788899091929394959697989910010110211148656116443652424103104105106107108109110111112113114116117118120121432263432131333121221231251261271311321331341401411421431451461471502132211211221121115415716817117717818020220422823624925028532040041932221111111111111
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.003.0010.0015.2121.00419.00
includes extended item information - examples:
labels
11 HANGER
210 COLOUR SPACEBOY PEN
312 COLOURED PARTY BALLOONSDidukung oleh
summary(tr) adalah perintah yang sangat berguna yang memberi kita informasi tentang objek transaksi kita. Mari lihat apa yang dikatakan keluaran di atas:
Ada 22191 transaksi (baris) dan 7876 item (kolom). Perhatikan bahwa 7876 adalah deskripsi produk yang terlibat dalam dataset dan 22191 transaksi adalah kumpulan dari item-item tersebut.
Density menunjukkan persentase sel tak-nol dalam matriks jarang (sparse matrix). Anda bisa mengartikannya sebagai total jumlah item yang dibeli dibagi dengan jumlah item yang mungkin dalam matriks itu. Anda dapat menghitung berapa banyak item yang dibeli menggunakan density: 22191x7876x0.001930725=337445
Informasi! Sparse Matrix: Sparse matrix atau sparse array adalah matriks di mana sebagian besar elemennya bernilai nol. Sebaliknya, jika sebagian besar elemennya non-nol, maka matriks dianggap padat (dense). Jumlah elemen bernilai nol dibagi dengan jumlah total elemen disebut sparsity matriks (yang sama dengan 1 dikurangi density matriks).
Ringkasan juga dapat memberi tahu Anda item yang paling sering.
Distribusi panjang elemen (itemset/transaksi): Ini memberi tahu Anda ada berapa transaksi untuk 1-itemset, 2-itemset, dan seterusnya. Baris pertama menunjukkan jumlah item dan baris kedua menunjukkan jumlah transaksi.
Misalnya, hanya ada 3598 transaksi untuk satu item, 1594 transaksi untuk 2 item, dan ada 419 item dalam satu transaksi yang merupakan yang terpanjang.
Anda dapat membuat itemFrequencyPlot untuk membuat Plot Batang Frekuensi Item guna melihat distribusi objek berdasarkan itemMatrix (mis., >transactions atau item dalam >itemsets dan >rules) yang merupakan kasus kita.
# Create an item frequency plot for the top 20 itemsif(!require("RColorBrewer")){# install color package of R
install.packages("RColorBrewer")#include library RColorBrewer
library(RColorBrewer)}
itemFrequencyPlot(tr,topN=20,type="absolute",col=brewer.pal(8,'Pastel2'), main="Absolute Item Frequency Plot")Didukung oleh
Dalam
itemFrequencyPlot(tr,topN=20,type="absolute")Didukung oleh
argumen pertama adalah objek transaksi yang akan diplot yaitu tr. topN memungkinkan Anda memplot N item dengan frekuensi tertinggi. type bisa berupa type="absolute" atau type="relative". Jika absolut, itu akan memplot frekuensi numerik setiap item secara independen. Jika relatif, itu akan memplot seberapa sering item tersebut muncul dibandingkan dengan yang lain.
itemFrequencyPlot(tr,topN=20,type="relative",col=brewer.pal(8,'Pastel2'),main="Relative Item Frequency Plot")Didukung oleh
Plot ini menunjukkan bahwa 'WHITE HANGING HEART T-LIGHT HOLDER' dan 'REGENCY CAKESTAND 3 TIER' memiliki penjualan terbanyak. Jadi untuk meningkatkan penjualan 'SET OF 3 CAKE TINS PANTRY DESIGN' peritel dapat menempatkannya dekat 'REGENCY CAKESTAND 3 TIER'.
Anda dapat mengeksplorasi opsi lain untuk itemFrequencyPlotdi sini.
Membuat Aturan!
Langkah berikutnya adalah menambang aturan menggunakan algoritma APRIORI. Fungsi apriori() berasal dari paket arules.
# Min Support as 0.001, confidence as 0.8.
association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8,maxlen=10))Didukung oleh
Apriori
Parameter specification:
confidence minval smax arem aval originalSupport maxtime support minlen maxlen target
0.80.11 none FALSETRUE50.001110 rules
ext
FALSE
Algorithmic control:
filter tree heap memopt load sort verbose
0.1TRUETRUEFALSETRUE2TRUE
Absolute minimum support count:22
set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[30066 item(s),22191 transaction(s)] done [0.11s].
sorting and recoding items ...[2324 item(s)] done [0.02s].
creating transaction tree ... done [0.02s].
checking subsets of size 12345678910Didukung oleh
Mining stopped (maxlen reached). Only patterns up to a length of 10 returned!Didukung oleh
set of 49122 rules
rule length distribution (lhs + rhs):sizes
234567891010521116854164241485561021937613121
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.0005.0005.0005.4996.00010.000
summary of quality measures:
support confidence lift count
Min. :0.001036 Min. :0.8000 Min. :9.846 Min. :23.001st Qu.:0.0010821st Qu.:0.83331st Qu.:22.2371st Qu.:24.00
Median :0.001262 Median :0.8788 Median :28.760 Median :28.00
Mean :0.001417 Mean :0.8849 Mean :64.589 Mean :31.453rd Qu.:0.0015323rd Qu.:0.92593rd Qu.:69.2003rd Qu.:34.00
Max. :0.015997 Max. :1.0000 Max. :715.839 Max. :355.00
mining info:
data ntransactions support confidence
tr 221910.0010.8Didukung oleh
apriori akan menerima tr sebagai objek transaksi yang akan ditambang. parameter memungkinkan Anda menetapkan min_sup dan min_confidence. Nilai default untuk parameter adalah minimum support 0.1, minimum confidence 0.8, maksimum 10 item (maxlen).
summary(association.rules) menunjukkan hal-hal berikut:
Spesifikasi Parameter: nilai min_sup=0.001 dan min_confidence=0.8 dengan maksimum 10 item dalam sebuah aturan.
Jumlah total aturan: Himpunan berisi 49122 aturan
Distribusi panjang aturan: Panjang 5 item memiliki aturan terbanyak: 16424 dan panjang 2 item memiliki jumlah aturan paling sedikit:105
Ringkasan ukuran Kualitas: Nilai minimum dan maksimum untuk Support, Confidence, dan Lift.
Informasi yang digunakan untuk membuat aturan: Data, support, dan confidence yang kita berikan ke algoritma.
Karena ada 49122 aturan, mari cetak 10 teratas saja:
Menggunakan keluaran di atas, Anda dapat membuat analisis seperti:
100% pelanggan yang membeli 'WOBBLY CHICKEN' juga membeli 'METAL'.
100% pelanggan yang membeli 'BLACK TEA' juga membeli 'SUGAR JARS'.
Membatasi jumlah dan ukuran aturan serta
Bagaimana Anda dapat membatasi ukuran dan jumlah aturan yang dihasilkan? Anda dapat melakukannya dengan menetapkan parameters di apriori. Anda menetapkan parameter ini untuk menyesuaikan jumlah aturan yang akan Anda dapatkan. Jika Anda menginginkan aturan yang lebih kuat, Anda dapat meningkatkan nilai conf dan untuk aturan yang lebih panjang berikan nilai yang lebih tinggi pada maxlen.
shorter.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8,maxlen=3))Didukung oleh
Menghapus aturan yang redundan
Anda dapat menghapus aturan yang merupakan subset dari aturan yang lebih besar. Gunakan kode di bawah ini untuk menghapus aturan tersebut:
subset.rules <- which(colSums(is.subset(association.rules, association.rules))>1)# get subset rules in vector
length(subset.rules)#> 3913Didukung oleh
subset.association.rules.<- association.rules[-subset.rules] # remove subset rules.Didukung oleh
which() mengembalikan posisi elemen dalam vektor untuk nilai yang bernilai TRUE.
colSums() membentuk jumlah baris dan kolom untuk dataframe dan array numerik.
is.subset() Menentukan apakah elemen dari satu vektor memuat semua elemen dari yang lain
Menemukan Aturan yang terkait dengan item tertentu
Terkadang, Anda ingin bekerja pada produk tertentu. Jika Anda ingin mengetahui apa yang memengaruhi pembelian item X Anda dapat menggunakan opsi appearance pada perintah apriori. appearance memberi kita opsi untuk mengatur LHS (bagian IF) dan RHS (bagian THEN) dari aturan.
Misalnya, untuk mengetahui apa yang dibeli pelanggan sebelum membeli 'METAL' jalankan baris kode berikut:
metal.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8),appearance = list(default="lhs",rhs="METAL"))Didukung oleh
Apriori
Parameter specification:
confidence minval smax arem aval originalSupport maxtime support minlen maxlen target
0.80.11 none FALSETRUE50.001110 rules
ext
FALSE
Algorithmic control:
filter tree heap memopt load sort verbose
0.1TRUETRUEFALSETRUE2TRUE
Absolute minimum support count:22
set item appearances ...[1 item(s)] done [0.00s].
set transactions ...[30066 item(s),22191 transaction(s)] done [0.21s].
sorting and recoding items ...[2324 item(s)] done [0.02s].
creating transaction tree ... done [0.02s].
checking subsets of size 12345678910Didukung oleh
Mining stopped (maxlen reached). Only patterns up to a length of 10 returned!Didukung oleh
# Here lhs=METAL because you want to find out the probability of that in how many customers buy METAL along with other items
inspect(head(metal.association.rules))Didukung oleh
lhs rhs support confidence lift count
[1]{WOBBLY CHICKEN}=>{METAL}0.0012617731443.8228[2]{WOBBLY RABBIT}=>{METAL}0.0015321531443.8234[3]{DECORATION}=>{METAL}0.0022531661443.8250[4]{DECORATION,WOBBLY CHICKEN}=>{METAL}0.0012617731443.8228[5]{DECORATION,WOBBLY RABBIT}=>{METAL}0.0015321531443.8234Didukung oleh
Demikian pula, untuk menemukan jawaban atas pertanyaan Pelanggan yang membeli METAL juga membeli.... Anda akan menempatkan METAL di lhs:
metal.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8),appearance = list(lhs="METAL",default="rhs"))Didukung oleh
Apriori
Parameter specification:
confidence minval smax arem aval originalSupport maxtime support minlen maxlen target
0.80.11 none FALSETRUE50.001110 rules
ext
FALSE
Algorithmic control:
filter tree heap memopt load sort verbose
0.1TRUETRUEFALSETRUE2TRUE
Absolute minimum support count:22
set item appearances ...[1 item(s)] done [0.00s].
set transactions ...[30066 item(s),22191 transaction(s)] done [0.10s].
sorting and recoding items ...[2324 item(s)] done [0.02s].
creating transaction tree ... done [0.02s].
checking subsets of size 12 done [0.01s].
writing ...[1 rule(s)] done [0.00s].
creating S4 object ... done [0.01s].Didukung oleh
# Here lhs=METAL because you want to find out the probability of that in how many customers buy METAL along with other items
inspect(head(metal.association.rules))Didukung oleh
lhs rhs support confidence lift count
[1]{METAL}=>{DECORATION}0.0022531661443.8250Didukung oleh
Memvisualisasikan Association Rules
Karena akan ada ratusan atau ribuan aturan yang dihasilkan berdasarkan data, Anda memerlukan beberapa cara untuk menyajikan temuan Anda. ItemFrequencyPlot sudah dibahas di atas yang juga merupakan cara bagus untuk mendapatkan item terlaris.
Berikut visualisasi yang akan dibahas:
Scatter-Plot
Interactive Scatter-plot
Representasi Aturan Individual
Scatter-Plot
Visualisasi langsung dari association rules adalah menggunakan scatter plot dengan plot() dari paket arulesViz. Plot ini menggunakan Support dan Confidence pada sumbu. Selain itu, ukuran ketiga Lift secara bawaan digunakan untuk pewarnaan (tingkat abu-abu) titik.
# Filter rules with confidence greater than 0.4 or 40%
subRules<-association.rules[quality(association.rules)$confidence>0.4]#Plot SubRules
plot(subRules)Didukung oleh
Plot di atas menunjukkan bahwa aturan dengan lift tinggi memiliki support rendah. Anda dapat menggunakan opsi berikut untuk plot:
plot(rulesObject, measure, shading, method)Didukung oleh
rulesObject: objek aturan yang akan diplot
measure: Ukuran ketertarikan aturan. Dapat berupa Support, Confidence, lift atau kombinasi tergantung nilai method.
shading: Ukuran yang digunakan untuk mewarnai titik (Support, Confidence, lift). Bawaannya adalah Lift.
method: Metode visualisasi yang akan digunakan (scatterplot, two-key plot, matrix3D).
Two-key plot menggunakan support dan confidence pada sumbu x dan y. Plot ini menggunakan order untuk pewarnaan. Order adalah jumlah item dalam aturan.
Interactive Scatter-Plot
Plot interaktif yang luar biasa dapat digunakan untuk menyajikan aturan Anda yang menggunakan arulesViz dan plotly. Anda dapat mengarahkan kursor pada setiap aturan dan melihat semua ukuran kualitas (support, confidence, dan lift).
'plotly_arules' is deprecated.
Use 'plot' instead.
See help("Deprecated")plot: Too many rules supplied. Only plotting the best 1000 rules using measure lift (change parameter max if needed)To reduce overplotting, jitter is added! Use jitter =0 to prevent jitter.Didukung oleh
Visualisasi Berbasis Grafik
Teknik berbasis grafik memvisualisasikan association rules menggunakan simpul dan sisi, di mana simpul diberi label dengan nama item, dan item set atau aturan direpresentasikan sebagai himpunan simpul kedua. Item dihubungkan dengan item-set/aturan menggunakan panah terarah. Panah yang menunjuk dari item ke simpul aturan menunjukkan item LHS dan panah dari aturan ke item menunjukkan RHS. Ukuran dan warna simpul sering mewakili ukuran ketertarikan.
Plot grafik sangat bagus untuk memvisualisasikan aturan tetapi cenderung menjadi padat ketika jumlah aturan meningkat. Jadi lebih baik memvisualisasikan aturan dalam jumlah sedikit dengan visualisasi berbasis grafik.
Mari pilih 10 aturan dari subRules yang memiliki confidence tertinggi.
top10subRules <- head(subRules, n =10, by ="confidence")Didukung oleh
Sekarang, plot grafik interaktif:
Catatan: Anda dapat membuat semua plot interaktif menggunakan parameter engine=htmlwidget pada plot
plot(top10subRules, method ="graph", engine ="htmlwidget")Didukung oleh
Dari arulesViz grafik untuk himpunan association rules dapat diekspor dalam format GraphML atau sebagai file Graphviz dot untuk dieksplorasi di alat seperti Gephi. Misalnya, 1000 aturan dengan lift tertinggi diekspor dengan:
saveAsGraph(head(subRules, n =1000, by ="lift"), file ="rules.graphml")Didukung oleh
Representasi Aturan Individual
Representasi ini juga disebut sebagai Parallel Coordinates Plot. Ini berguna untuk memvisualisasikan produk mana bersama item mana yang menyebabkan jenis penjualan tertentu.
Seperti disebutkan di atas, RHS adalah Konsekuen atau item yang kita perkirakan akan dibeli pelanggan; posisinya berada di LHS di mana 2 adalah penambahan terbaru ke keranjang kita dan 1 adalah item yang sebelumnya kita miliki.
# Filter top 20 rules with highest lift
subRules2<-head(subRules, n=20, by="lift")
plot(subRules2, method="paracoord")Didukung oleh
Lihat panah paling atas. Itu menunjukkan bahwa ketika saya memiliki 'CHILDS GARDEN SPADE PINK' dan 'CHILDS GARDEN RAKE PINK' di keranjang belanja saya, saya cenderung membeli 'CHILDS GARDEN RAKE BLUE' bersama keduanya juga.
Kesimpulan
Selamat! Anda telah mempelajari APRIORI, salah satu algoritma yang paling sering digunakan dalam data mining. Anda telah mempelajari semua tentang Association Rule Mining, penerapannya, dan penerapannya dalam ritel yang disebut Market Basket Analysis. Anda sekarang juga mampu mengimplementasikan Market Basket Analysis di R dan menyajikan association rules Anda dengan beberapa plot yang hebat! Selamat belajar!
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Anda adalah seorang data scientist (atau sedang dalam proses menjadi!), dan Anda mendapat klien yang menjalankan toko ritel. Klien Anda memberi data semua transaksi yang berisi item yang dibeli di toko oleh beberapa pelanggan selama periode waktu tertentu dan meminta Anda menggunakan data tersebut untuk membantu meningkatkan bisnis mereka. Klien Anda akan menggunakan temuan Anda bukan hanya untuk mengubah/memperbarui/menambah item di inventaris, tetapi juga untuk mengubah tata letak toko fisik atau toko online. Untuk menemukan hasil yang akan membantu klien Anda, Anda akan menggunakan Market Basket Analysis (MBA) yang menggunakan Association Rule Mining pada data transaksi yang diberikan.
Dalam tutorial ini Anda akan belajar:
Association Rule Mining
Association Rule Mining digunakan ketika Anda ingin menemukan keterkaitan antara objek yang berbeda dalam suatu himpunan, menemukan pola yang sering muncul dalam basis data transaksi, basis data relasional, atau repositori informasi lainnya. Penerapan Association Rule Mining ditemukan dalam Pemasaran, Analisis Data Keranjang (atau Market Basket Analysis) di ritel, klasterisasi, dan klasifikasi. Metode ini dapat memberi tahu Anda item apa yang sering dibeli pelanggan secara bersamaan dengan menghasilkan serangkaian aturan yang disebut Association Rules. Sederhananya, metode ini memberi keluaran berupa aturan dalam bentuk jika ini maka itu. Klien dapat menggunakan aturan tersebut untuk berbagai strategi pemasaran:
Pertimbangkan contoh berikut:
Diberikan satu set data transaksi. Anda dapat melihat transaksi bernomor 1 sampai 5. Setiap transaksi menampilkan item yang dibeli dalam transaksi tersebut. Anda dapat melihat bahwa Popok dibeli bersama Bir dalam tiga transaksi. Demikian pula, Roti dibeli bersama susu dalam tiga transaksi sehingga keduanya menjadi himpunan item yang sering muncul. Aturan asosiasi diberikan dalam bentuk seperti di bawah ini:
$A=>B[Support,Confidence]$
Bagian sebelum $=>$ disebut sebagai jika (Anteseden) dan bagian setelah $=>$ disebut sebagai maka (Konsekuen).
Di mana A dan B adalah himpunan item dalam data transaksi. A dan B adalah himpunan tak-saling-beririsan.
$Computer=>Anti-virus Software[Support=20\%,confidence=60\%]$
Aturan di atas menyatakan:
Pada bagian berikut Anda akan mempelajari konsep dasar Association Rule Mining:
Konsep Dasar Association Rule Mining
Itemset: Kumpulan dari satu atau lebih item. K-item-set berarti himpunan dengan k item.
Support Count: Frekuensi kemunculan suatu item-set
Support (s): Fraksi transaksi yang memuat item-set 'X'
$Support(X)=\frac{frequency(X)}{N}$
Untuk sebuah Aturan A=>B, Support diberikan oleh:
$Support(A=>B)=\frac{frequency(A,B)}{N}$
Catatan: P(AUB) adalah probabilitas A dan B terjadi bersamaan. P menyatakan probabilitas.
Silakan, coba cari nilai support untuk Milk=>Diaper sebagai latihan.
$Confidence(A=>B)=\frac{P(A\cap B)}{P(A)}=\frac{frequency(A,B)}{frequency(A)}$
Jumlah transaksi yang memiliki A dan B dibagi dengan jumlah total transaksi yang memiliki A.
$Confidence(Bread=>Milk)=\frac{3}{4}=0.75=75\%$
Sekarang cari confidence untuk Milk=>Diaper.
Catatan: Support dan Confidence mengukur seberapa menarik suatu aturan. Nilainya diatur oleh ambang minimum support dan minimum confidence. Ambang ini yang ditetapkan oleh klien membantu membandingkan kekuatan aturan sesuai keinginan Anda atau klien. Semakin mendekati ambang, semakin bermanfaat aturan tersebut bagi klien.
Frequent Itemsets: Item-set yang support-nya lebih besar atau sama dengan ambang minimum support (min_sup). Pada contoh di atas min_sup=3. Ini ditentukan sesuai pilihan pengguna.
Strong rules: Jika sebuah aturan A=>B[Support, Confidence] memenuhi min_sup dan min_confidence maka itu adalah aturan kuat.
Lift: Lift memberikan korelasi antara A dan B dalam aturan A=>B. Korelasi menunjukkan bagaimana item-set A memengaruhi item-set B.
$Lift(A=>B)=\frac{Support}{Supp(A)Supp(B)}$
Misalnya, untuk aturan
{Bread}=>{Milk}, lift dihitung sebagai:$support(Bread)=\frac{4}{5}=0.8$
$support(Milk)=\frac{4}{5}=0.8$
$Lift(Bread=>Milk)=\frac{0.6}{0.8*0.8}=0.9$
Jika aturan memiliki lift 1, maka A dan B saling bebas (independen) dan tidak ada aturan yang dapat diturunkan darinya.
Jika lift > 1, maka A dan B saling bergantung, dan derajatnya diberikan oleh nilai lift.
Jika lift < 1, maka keberadaan A akan berdampak negatif pada B.
Tujuan Association Rule Mining
Saat Anda menerapkan Association Rule Mining pada himpunan transaksi T yang diberikan, tujuan Anda adalah menemukan semua aturan dengan:
Algoritma APRIORI
Pada bagian tutorial ini, Anda akan mempelajari tentang algoritma yang berjalan di balik pustaka R untuk Market Basket Analysis. Ini akan membantu Anda lebih memahami klien dan melakukan analisis dengan lebih cermat. Jika Anda sudah tahu tentang algoritma APRIORI dan cara kerjanya, Anda bisa langsung ke bagian kode.
Association Rule Mining dipandang sebagai pendekatan dua langkah:
Frequent Itemset Generation: Temukan semua item-set yang sering muncul dengan support >= jumlah min_support yang ditentukan sebelumnya
Rule Generation: Daftarkan semua Association Rules dari item-set yang sering muncul. Hitung Support dan Confidence untuk semua aturan. Pangkas aturan yang tidak memenuhi ambang min_support dan min_confidence.
Frequent Itemset Generation adalah langkah yang paling mahal secara komputasi karena memerlukan pemindaian basis data penuh.
Di antara langkah-langkah di atas, pembangkitan Frequent Item-set adalah yang paling mahal dari sisi komputasi.
Di atas Anda telah melihat contoh hanya 5 transaksi, tetapi dalam dunia nyata data transaksi untuk ritel dapat mencapai GB dan TB data sehingga dibutuhkan algoritma yang dioptimalkan untuk memangkas Item-set yang tidak akan membantu pada langkah selanjutnya. Untuk ini digunakan Algoritma APRIORI. Algoritma ini menyatakan:
Hal ini direpresentasikan dalam Itemset Lattice yang merupakan representasi grafis dari prinsip algoritma APRIORI. Struktur ini terdiri dari node k-item-set dan relasi subset dari k-item-set tersebut.
Anda dapat melihat pada gambar di atas bahwa di bagian paling bawah terdapat semua item dalam data transaksi dan kemudian Anda mulai bergerak ke atas membuat subset hingga himpunan kosong. Untuk jumlah item d, ukuran lattice akan menjadi $2^d$. Ini menunjukkan betapa sulitnya menghasilkan Frequent Item-set dengan menemukan support untuk setiap kombinasi. Gambar berikut menunjukkan seberapa besar bantuan APRIORI dalam mengurangi jumlah himpunan yang harus dihasilkan:
Jika item-set {a,b} jarang muncul (infrequent) maka kita tidak perlu mempertimbangkan semua super-set-nya.
Mari pahami dengan contoh. Pada contoh berikut, Anda akan melihat mengapa APRIORI adalah algoritma yang efektif dan juga menghasilkan aturan asosiasi yang kuat langkah demi langkah. Ikuti dengan buku catatan dan pena Anda!
Seperti yang Anda lihat, Anda mulai dengan membuat Candidate List untuk 1-itemset yang akan menyertakan semua item yang ada di data transaksi, secara individual. Mengingat data transaksi ritel di dunia nyata, Anda dapat melihat betapa mahalnya pembangkitan kandidat ini. Di sinilah APRIORI berperan dan membantu mengurangi jumlah daftar kandidat, dan pada akhirnya aturan yang berguna dihasilkan. Pada langkah-langkah berikut, Anda akan melihat bagaimana kita mencapai akhir dari pembangkitan Frequent Itemset, yaitu langkah pertama dari association rule mining.
Langkah Anda berikutnya adalah mencantumkan semua itemset yang sering muncul. Anda akan mengambil Frequent Itemset tak-kosong terakhir, yang dalam contoh ini adalah L2={I1, I2},{I2, I3}. Lalu buat semua subset tak-kosong dari item-set yang ada pada Daftar Frequent Item-set tersebut. Ikuti seperti pada ilustrasi di bawah ini:
Anda bisa melihat di atas terdapat empat aturan kuat. Misalnya, ambil ${I2}=>I3$ yang memiliki confidence sebesar 75% menyatakan bahwa 75% orang yang membeli I2 juga membeli I3.
Sekarang Anda telah mempelajari algoritma APRIORI lengkap yang merupakan salah satu algoritma yang paling sering digunakan dalam data mining. Mari lanjut ke kodenya, phewww!
Mengimplementasikan MBA/Association Rule Mining menggunakan R
Dalam tutorial ini, Anda akan menggunakan dataset dari UCI Machine Learning Repository. Dataset tersebut bernama Online-Retail, dan Anda dapat mengunduhnya dari sini. Dataset berisi data transaksi dari 01/12/2010 hingga 09/12/2011 untuk ritel online non-toko berbasis di Inggris yang terdaftar. Alasan menggunakan ini dan bukan dataset R adalah karena Anda lebih mungkin menerima data ritel dalam bentuk ini yang memerlukan pra-pemrosesan data.
Deskripsi Dataset
Informasi Atribut
Memuat Library
Pertama, Anda akan memuat library yang diperlukan. Deskripsi singkat library (diambil dari Sini) diberikan pada tabel berikut, agar Anda tahu fungsi masing-masing library:
arulesarulesViztidyversereadxlplyrggplot2knitrlubridatePra-pemrosesan Data
Gunakan
read_excel(path to file)untuk membaca dataset dari file yang diunduh ke dalam R. Berikan path lengkap ke file termasuk nama file dalamread_excel(path-to-file-with-filename)Sekarang, dataframe retail akan berisi 10 atribut, dengan dua atribut tambahan
DatedanTime.Sebelum menerapkan MBA/Association Rule mining, kita perlu mengonversi dataframe menjadi data transaksi sehingga semua item yang dibeli bersama dalam satu faktur berada dalam satu baris. Anda dapat melihat pada keluaran
glimpsebahwa setiap transaksi berbentuk atomik, yaitu semua produk yang termasuk dalam satu faktur bersifat atomik seperti pada basis data relasional. Format ini juga disebut sebagai format singles.Yang perlu Anda lakukan adalah mengelompokkan data dalam dataframe
retailberdasarkanCustomerID,CustomerIDdanDateatau Anda juga dapat mengelompokkan data menggunakanInvoiceNodanDate. Kita memerlukan pengelompokan ini dan menerapkan sebuah fungsi padanya serta menyimpan keluarannya di dataframe lain. Ini dapat dilakukan denganddply.Baris-baris kode berikut akan menggabungkan semua produk dari satu
InvoiceNodandateserta menggabungkan semua produk dariInvoiceNodandatetersebut sebagai satu baris, dengan setiap item dipisahkan oleh,Berikutnya, karena InvoiceNo dan Date tidak akan berguna dalam rule mining, Anda dapat mengaturnya menjadi
NULL.Format untuk data transaksi ini disebut format basket. Selanjutnya, Anda harus menyimpan data transaksi ini ke dalam file .csv (Comma Separated Values). Untuk ini, gunakan
write.csv()Lihat apakah data transaksi Anda sudah dalam bentuk yang benar:
Selanjutnya, Anda harus memuat data transaksi ini ke dalam sebuah objek dari kelas transaksi. Ini dilakukan dengan menggunakan fungsi R
read.transactionsdari paketarules.Baris kode berikut akan mengambil file data transaksi
D:/Documents/market_basket_transactions.csvyang berformat basket dan mengonversinya menjadi objek dari kelas transaksi.Saat Anda menjalankan baris kode di atas Anda mungkin mendapatkan banyak
EOF within quoted stringdalam output Anda, jangan khawatir soal itu.Jika Anda sudah memiliki data transaksi dalam sebuah dataframe, gunakan baris kode berikut untuk mengonversinya menjadi objek transaksi:
Lihat objek transaksi
tr:summary(tr)adalah perintah yang sangat berguna yang memberi kita informasi tentang objek transaksi kita. Mari lihat apa yang dikatakan keluaran di atas:Ada 22191 transaksi (baris) dan 7876 item (kolom). Perhatikan bahwa 7876 adalah deskripsi produk yang terlibat dalam dataset dan 22191 transaksi adalah kumpulan dari item-item tersebut.
Density menunjukkan persentase sel tak-nol dalam matriks jarang (sparse matrix). Anda bisa mengartikannya sebagai total jumlah item yang dibeli dibagi dengan jumlah item yang mungkin dalam matriks itu. Anda dapat menghitung berapa banyak item yang dibeli menggunakan density: 22191x7876x0.001930725=337445
Ringkasan juga dapat memberi tahu Anda item yang paling sering.
Distribusi panjang elemen (itemset/transaksi): Ini memberi tahu Anda ada berapa transaksi untuk 1-itemset, 2-itemset, dan seterusnya. Baris pertama menunjukkan jumlah item dan baris kedua menunjukkan jumlah transaksi.
Misalnya, hanya ada 3598 transaksi untuk satu item, 1594 transaksi untuk 2 item, dan ada 419 item dalam satu transaksi yang merupakan yang terpanjang.
Anda dapat membuat
itemFrequencyPlotuntuk membuat Plot Batang Frekuensi Item guna melihat distribusi objek berdasarkanitemMatrix(mis.,>transactionsatau item dalam>itemsetsdan>rules) yang merupakan kasus kita.Dalam
argumen pertama adalah objek transaksi yang akan diplot yaitu
tr.topNmemungkinkan Anda memplot N item dengan frekuensi tertinggi.typebisa berupatype="absolute"atautype="relative". Jika absolut, itu akan memplot frekuensi numerik setiap item secara independen. Jika relatif, itu akan memplot seberapa sering item tersebut muncul dibandingkan dengan yang lain.Plot ini menunjukkan bahwa 'WHITE HANGING HEART T-LIGHT HOLDER' dan 'REGENCY CAKESTAND 3 TIER' memiliki penjualan terbanyak. Jadi untuk meningkatkan penjualan 'SET OF 3 CAKE TINS PANTRY DESIGN' peritel dapat menempatkannya dekat 'REGENCY CAKESTAND 3 TIER'.
Anda dapat mengeksplorasi opsi lain untuk
itemFrequencyPlotdi sini.Membuat Aturan!
Langkah berikutnya adalah menambang aturan menggunakan algoritma APRIORI. Fungsi
apriori()berasal dari paketarules.aprioriakan menerimatrsebagai objek transaksi yang akan ditambang.parametermemungkinkan Anda menetapkan min_sup dan min_confidence. Nilai default untukparameteradalah minimum support 0.1, minimum confidence 0.8, maksimum 10 item (maxlen).summary(association.rules)menunjukkan hal-hal berikut:Spesifikasi Parameter: nilai min_sup=0.001 dan min_confidence=0.8 dengan maksimum 10 item dalam sebuah aturan.
Jumlah total aturan: Himpunan berisi 49122 aturan
Distribusi panjang aturan: Panjang 5 item memiliki aturan terbanyak: 16424 dan panjang 2 item memiliki jumlah aturan paling sedikit:105
Ringkasan ukuran Kualitas: Nilai minimum dan maksimum untuk Support, Confidence, dan Lift.
Informasi yang digunakan untuk membuat aturan: Data, support, dan confidence yang kita berikan ke algoritma.
Karena ada 49122 aturan, mari cetak 10 teratas saja:
Menggunakan keluaran di atas, Anda dapat membuat analisis seperti:
100% pelanggan yang membeli 'WOBBLY CHICKEN' juga membeli 'METAL'.
100% pelanggan yang membeli 'BLACK TEA' juga membeli 'SUGAR JARS'.
Membatasi jumlah dan ukuran aturan serta
Bagaimana Anda dapat membatasi ukuran dan jumlah aturan yang dihasilkan? Anda dapat melakukannya dengan menetapkan
parametersdiapriori. Anda menetapkan parameter ini untuk menyesuaikan jumlah aturan yang akan Anda dapatkan. Jika Anda menginginkan aturan yang lebih kuat, Anda dapat meningkatkan nilaiconfdan untuk aturan yang lebih panjang berikan nilai yang lebih tinggi padamaxlen.Menghapus aturan yang redundan
Anda dapat menghapus aturan yang merupakan subset dari aturan yang lebih besar. Gunakan kode di bawah ini untuk menghapus aturan tersebut:
which()mengembalikan posisi elemen dalam vektor untuk nilai yang bernilai TRUE.colSums()membentuk jumlah baris dan kolom untuk dataframe dan array numerik.is.subset()Menentukan apakah elemen dari satu vektor memuat semua elemen dari yang lainMenemukan Aturan yang terkait dengan item tertentu
Terkadang, Anda ingin bekerja pada produk tertentu. Jika Anda ingin mengetahui apa yang memengaruhi pembelian item X Anda dapat menggunakan opsi
appearancepada perintahapriori.appearancememberi kita opsi untuk mengatur LHS (bagian IF) dan RHS (bagian THEN) dari aturan.Misalnya, untuk mengetahui apa yang dibeli pelanggan sebelum membeli 'METAL' jalankan baris kode berikut:
Demikian pula, untuk menemukan jawaban atas pertanyaan Pelanggan yang membeli METAL juga membeli.... Anda akan menempatkan METAL di lhs:
Memvisualisasikan Association Rules
Karena akan ada ratusan atau ribuan aturan yang dihasilkan berdasarkan data, Anda memerlukan beberapa cara untuk menyajikan temuan Anda.
ItemFrequencyPlotsudah dibahas di atas yang juga merupakan cara bagus untuk mendapatkan item terlaris.Berikut visualisasi yang akan dibahas:
Scatter-Plot
Visualisasi langsung dari association rules adalah menggunakan scatter plot dengan
plot()dari paketarulesViz. Plot ini menggunakan Support dan Confidence pada sumbu. Selain itu, ukuran ketiga Lift secara bawaan digunakan untuk pewarnaan (tingkat abu-abu) titik.Plot di atas menunjukkan bahwa aturan dengan lift tinggi memiliki support rendah. Anda dapat menggunakan opsi berikut untuk plot:
rulesObject: objek aturan yang akan diplotmeasure: Ukuran ketertarikan aturan. Dapat berupa Support, Confidence, lift atau kombinasi tergantung nilaimethod.shading: Ukuran yang digunakan untuk mewarnai titik (Support, Confidence, lift). Bawaannya adalah Lift.method: Metode visualisasi yang akan digunakan (scatterplot, two-key plot, matrix3D).Two-key plot menggunakan support dan confidence pada sumbu x dan y. Plot ini menggunakan order untuk pewarnaan. Order adalah jumlah item dalam aturan.
Interactive Scatter-Plot
Plot interaktif yang luar biasa dapat digunakan untuk menyajikan aturan Anda yang menggunakan
arulesVizdanplotly. Anda dapat mengarahkan kursor pada setiap aturan dan melihat semua ukuran kualitas (support, confidence, dan lift).Visualisasi Berbasis Grafik
Teknik berbasis grafik memvisualisasikan association rules menggunakan simpul dan sisi, di mana simpul diberi label dengan nama item, dan item set atau aturan direpresentasikan sebagai himpunan simpul kedua. Item dihubungkan dengan item-set/aturan menggunakan panah terarah. Panah yang menunjuk dari item ke simpul aturan menunjukkan item LHS dan panah dari aturan ke item menunjukkan RHS. Ukuran dan warna simpul sering mewakili ukuran ketertarikan.
Plot grafik sangat bagus untuk memvisualisasikan aturan tetapi cenderung menjadi padat ketika jumlah aturan meningkat. Jadi lebih baik memvisualisasikan aturan dalam jumlah sedikit dengan visualisasi berbasis grafik.
Mari pilih 10 aturan dari
subRulesyang memiliki confidence tertinggi.Sekarang, plot grafik interaktif:
Catatan: Anda dapat membuat semua plot interaktif menggunakan parameter
engine=htmlwidgetpadaplotDari
arulesVizgrafik untuk himpunan association rules dapat diekspor dalam format GraphML atau sebagai file Graphviz dot untuk dieksplorasi di alat seperti Gephi. Misalnya, 1000 aturan dengan lift tertinggi diekspor dengan:Representasi Aturan Individual
Representasi ini juga disebut sebagai Parallel Coordinates Plot. Ini berguna untuk memvisualisasikan produk mana bersama item mana yang menyebabkan jenis penjualan tertentu.
Seperti disebutkan di atas, RHS adalah Konsekuen atau item yang kita perkirakan akan dibeli pelanggan; posisinya berada di LHS di mana 2 adalah penambahan terbaru ke keranjang kita dan 1 adalah item yang sebelumnya kita miliki.
Lihat panah paling atas. Itu menunjukkan bahwa ketika saya memiliki 'CHILDS GARDEN SPADE PINK' dan 'CHILDS GARDEN RAKE PINK' di keranjang belanja saya, saya cenderung membeli 'CHILDS GARDEN RAKE BLUE' bersama keduanya juga.
Kesimpulan
Selamat! Anda telah mempelajari APRIORI, salah satu algoritma yang paling sering digunakan dalam data mining. Anda telah mempelajari semua tentang Association Rule Mining, penerapannya, dan penerapannya dalam ritel yang disebut Market Basket Analysis. Anda sekarang juga mampu mengimplementasikan Market Basket Analysis di R dan menyajikan association rules Anda dengan beberapa plot yang hebat! Selamat belajar!
Referensi:
https://datascienceplus.com/a-gentle-introduction-on-market-basket-analysis%E2%80%8A-%E2%80%8Aassociation-rules/
https://en.wikipedia.org/wiki/Sparse_matrix
https://cran.r-project.org/web/packages/arulesViz/vignettes/arulesViz.pdf
Jika Anda ingin mempelajari lebih lanjut tentang R, ikuti kursus DataCamp Importing and Managing Financial Data in R.