BELAJAR ANALISIS DAN BAHASA PEMROGRAMAN

Market Basket Analysis Menggunakan R Part 2

Halo guys, kali ini kita akan lanjut bahas part 2 tentang MBA ya, yang belum lihat part 1 nya bisa buka Market Basket Analysis Menggunakan R Part 1 . Kemudian untuk Full code dan datanya bisa download DISINI

6. Apriori algorithm

6.1 Pilihan support dan confidence

Langkah pertama untuk membuat sekumpulan association rules adalah menentukan ambang optimal untuk support dan confidence. Jika kita menetapkan nilai-nilai ini terlalu rendah, maka algoritma akan membutuhkan waktu lebih lama untuk dieksekusi dan kita akan mendapatkan banyak rules (kebanyakan tidak akan berguna). Lalu, nilai apa yang kita pilih? Kita dapat mencoba berbagai nilai support dan confidence dan melihat secara grafis berapa banyak rules yang dibuat untuk setiap kombinasi.

# Support and confidence values
supportLevels <- c(0.1, 0.05, 0.01, 0.005)
confidenceLevels <- c(0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1)

# Empty integers 
rules_sup10 <- integer(length=9)
rules_sup5 <- integer(length=9)
rules_sup1 <- integer(length=9)
rules_sup0.5 <- integer(length=9)

# Apriori algorithm with a support level of 10%
for (i in 1:length(confidenceLevels)) {
  
  rules_sup10[i] <- length(apriori(trans, parameter=list(sup=supportLevels[1], 
                                   conf=confidenceLevels[i], target="rules")))
  
}

# Apriori algorithm with a support level of 5%
for (i in 1:length(confidenceLevels)){
  
  rules_sup5[i] <- length(apriori(trans, parameter=list(sup=supportLevels[2], 
                                  conf=confidenceLevels[i], target="rules")))
  
}

# Apriori algorithm with a support level of 1%
for (i in 1:length(confidenceLevels)){
  
  rules_sup1[i] <- length(apriori(trans, parameter=list(sup=supportLevels[3], 
                                  conf=confidenceLevels[i], target="rules")))
  
}

# Apriori algorithm with a support level of 0.5%
for (i in 1:length(confidenceLevels)){
  
  rules_sup0.5[i] <- length(apriori(trans, parameter=list(sup=supportLevels[4], 
                                    conf=confidenceLevels[i], target="rules")))
  
}

Pada grafik berikut kita dapat melihat jumlah rules yang dihasilkan dengan tingkat support 10%, 5%, 1% dan 0,5%.

Kita dapat menggabungkan empat baris untuk meningkatkan visualisasi.

# Data frame
num_rules <- data.frame(rules_sup10, rules_sup5, rules_sup1, rules_sup0.5, confidenceLevels)

# Number of rules found with a support level of 10%, 5%, 1% and 0.5%
ggplot(data=num_rules, aes(x=confidenceLevels)) +
  
  # Plot line and points (support level of 10%)
  geom_line(aes(y=rules_sup10, colour="Support level of 10%")) + 
  geom_point(aes(y=rules_sup10, colour="Support level of 10%")) +
  
  # Plot line and points (support level of 5%)
  geom_line(aes(y=rules_sup5, colour="Support level of 5%")) +
  geom_point(aes(y=rules_sup5, colour="Support level of 5%")) +
  
  # Plot line and points (support level of 1%)
  geom_line(aes(y=rules_sup1, colour="Support level of 1%")) + 
  geom_point(aes(y=rules_sup1, colour="Support level of 1%")) +
  
  # Plot line and points (support level of 0.5%)
  geom_line(aes(y=rules_sup0.5, colour="Support level of 0.5%")) +
  geom_point(aes(y=rules_sup0.5, colour="Support level of 0.5%")) +
  
  # Labs and theme
  labs(x="Confidence levels", y="Number of rules found", 
       title="Apriori algorithm with different support levels") +
  theme_bw() +
  theme(legend.title=element_blank())

Mari kita analisis hasilnya,

Tingkat support 10%. Kita hanya mengidentifikasi beberapa rules dengan tingkat confidence yang sangat rendah. Ini berarti bahwa tidak ada pengaitan yang relatif sering dalam kumpulan data. Kita tidak dapat memilih nilai ini, rules yang dihasilkan tidak representatif.

Tingkat support 5%. Kita hanya mengidentifikasi rules dengan tingkat confidence minimal 50%. Tampaknya kita harus mencari level support di bawah 5% untuk mendapatkan jumlah rules yang lebih banyak dengan confidence yang wajar.

Tingkat support 1%. Kita mulai mendapatkan lusinan rules, yang 13 di antaranya memiliki tingkat confidence setidaknya 50%.

Tingkat support 0,5%. Terlalu banyak rules untuk dianalisis!

Singkatnya, kita akan menggunakan tingkat support 1% dan tingkat confidence 50%.


6.2 Eksekusi
Mari kita jalankan algoritma Apriori dengan nilai-nilai yang diperoleh di bagian sebelumnya.

Association rules yang dihasilkan adalah sebagai berikut,

# Inspect association rules
inspect(rules_sup1_conf50)
##      lhs                 rhs      support    confidence coverage   lift    
## [1]  {Tiffin}         => {Coffee} 0.01058361 0.5468750  0.01935289 1.134577
## [2]  {Spanish Brunch} => {Coffee} 0.01406108 0.6326531  0.02222558 1.312537
## [3]  {Scone}          => {Coffee} 0.01844572 0.5422222  0.03401875 1.124924
## [4]  {Toast}          => {Coffee} 0.02570305 0.7296137  0.03522830 1.513697
## [5]  {Alfajores}      => {Coffee} 0.02237678 0.5522388  0.04052011 1.145705
## [6]  {Juice}          => {Coffee} 0.02131842 0.5300752  0.04021772 1.099723
## [7]  {Hot chocolate}  => {Coffee} 0.02721500 0.5263158  0.05170850 1.091924
## [8]  {Medialuna}      => {Coffee} 0.03296039 0.5751979  0.05730269 1.193337
## [9]  {Cookies}        => {Coffee} 0.02978530 0.5267380  0.05654672 1.092800
## [10] {NONE}           => {Coffee} 0.04172966 0.5810526  0.07181736 1.205484
## [11] {Sandwich}       => {Coffee} 0.04233444 0.5679513  0.07453886 1.178303
## [12] {Pastry}         => {Coffee} 0.04868461 0.5590278  0.08708800 1.159790
## [13] {Cake}           => {Coffee} 0.05654672 0.5389049  0.10492894 1.118042
##      count
## [1]   70  
## [2]   93  
## [3]  122  
## [4]  170  
## [5]  148  
## [6]  141  
## [7]  180  
## [8]  218  
## [9]  197  
## [10] 276  
## [11] 280  
## [12] 322  
## [13] 374
Kita juga bisa membuat widget tabel HTML menggunakan fungsi inspectDT() dari library aruslesViz. rules dapat disaring dan diurutkan secara interaktif.

Bagaimana kita menafsirkan rules ini?

52% pelanggan yang membeli cokelat panas algo membeli kopi.
63% pelanggan yang membeli brunch ala Spanyol juga membeli kopi.
73% pelanggan yang membeli roti panggang juga membeli kopi.
Dan seterusnya. Sepertinya di bakery ini banyak pecinta kopi lho!

6.3 Visualisasikan association rules
Kita akan menggunakan library arulesViz untuk membuat visualisasi. Mari kita mulai dengan scatter plot sederhana dengan berbagai ukuran ketertarikan pada sumbu/axes ( lift dan support) dan ukuran ketiga (confidence) yang diwakili oleh warna titik.

Visualisasi berikut merepresentasikan rules sebagai grafik dengan item sebagai  labeled vertices, dan rules direpresentasikan sebagai vertices/simpul yang terhubung ke item menggunakan panah.

kita juga dapat mengubah tata letak grafik.

Apa lagi yang bisa kita lakukan? Kita dapat merepresentasikan rules sebagai visualisasi berbasis matriks yang dikelompokkan. Ukuran support dan lift masing-masing diwakili oleh ukuran dan warna balon. Dalam hal ini, ini bukan visualisasi yang bagus, karena kita hanya memiliki coffee di sisi kanan rules.

Ada fungsi luar biasa yang disebut ruleExplorer() yang mengeksplorasi association rules menggunakan manipulasi dan visualisasi interaktif menggunakan shiny.

6.4 Eksekusi lainnya

Kita telah mengeksekusi algoritma Apriori dengan nilai support dan confidence yang sesuai. Apa yang terjadi jika kita menjalankannya dengan nilai rendah? Bagaimana visualisasi apakah berubah? Mari kita coba dengan tingkat support 0,5% dan tingkat confidence 10%.

# Apriori algorithm execution with a support level of 0.5% and a confidence level of 10%
rules_sup0.5_conf10 <- apriori(trans, parameter=list(sup=supportLevels[4], conf=confidenceLevels[9], target="rules"))

Tidak mungkin menganalisis visualisasi ini! WKWKWKW.  Untuk kumpulan rules yang lebih besar, analisis visual menjadi sulit. Selain itu, sebagian besar rules menjadi tidak berguna. Itu sebabnya kita harus hati-hati memilih nilai support dan confidence diri.

Graph
Parallel coordinates plot
Grouped matrix plot

Scatter plot

Mungkin sekian dulu untuk post kali ini tentang MBA , Terimakasih


credit: https://github.com/lulukuo530/BakeryTranscation

Market Basket Analysis Menggunakan R Part 2 Market Basket Analysis Menggunakan R Part 2 Reviewed by Jimmy Pujoseno on November 07, 2020 Rating: 5

No comments:

Recent Post

Powered by Blogger.