मार्केट बास्केट विश्लेषण और उसके पीछे काम करने वाले APRIORI एल्गोरिद्म के बारे में जानें। देखिए यह कैसे रिटेलर्स को यह भविष्यवाणी करके कारोबार बढ़ाने में मदद कर रहा है कि ग्राहक कौन-से आइटम साथ में खरीदते हैं।
आप एक डेटा वैज्ञानिक हैं (या बनने की राह पर हैं!) और आपको एक क्लाइंट मिलता है जो एक रिटेल स्टोर चलाता है। आपका क्लाइंट आपको सभी लेनदेन का डेटा देता है, जिसमें एक निश्चित अवधि में कई ग्राहकों द्वारा स्टोर से खरीदी गई वस्तुएं शामिल हैं, और आपसे कहता है कि उस डेटा का उपयोग करके उनके व्यवसाय को बढ़ाने में मदद करें। आपका क्लाइंट आपकी खोजों का उपयोग न केवल इन्वेंटरी में वस्तुओं को बदलने/अपडेट/जोड़ने के लिए करेगा बल्कि भौतिक स्टोर या ऑनलाइन स्टोर के लेआउट को बदलने के लिए भी करेगा। ऐसे परिणाम खोजने के लिए जो आपके क्लाइंट की मदद करेंगे, आप मार्केट बास्केट एनालिसिस (MBA) का उपयोग करेंगे, जो दिए गए ट्रांजैक्शन डेटा पर एसोसिएशन रूल माइनिंग लागू करता है।
इस ट्यूटोरियल में आप सीखेंगे:
एसोसिएशन रूल माइनिंग क्या है और उसके अनुप्रयोग
APRIORI एल्गोरिद्म क्या है?
R और विज़ुअलाइज़ेशन के साथ MBA/एसोसिएशन रूल माइनिंग कैसे लागू करें
Association Rule Mining
एसोसिएशन रूल माइनिंग तब उपयोग की जाती है जब आप किसी सेट में अलग-अलग वस्तुओं के बीच संबंध खोजना चाहते हैं, किसी ट्रांजैक्शन डेटाबेस, रिलेशनल डेटाबेस या किसी अन्य सूचना रिपॉज़िटरी में बार-बार आने वाले पैटर्न ढूंढना चाहते हैं। एसोसिएशन रूल माइनिंग के अनुप्रयोग मार्केटिंग, रिटेलिंग में बास्केट डेटा एनालिसिस (या मार्केट बास्केट एनालिसिस), क्लस्टरिंग और क्लासिफिकेशन में पाए जाते हैं। यह एसोसिएशन रूल्स नामक नियमों का सेट बनाकर आपको बता सकता है कि ग्राहक कौन-सी वस्तुएं अक्सर साथ में खरीदते हैं। सरल शब्दों में, यह आपको यदि यह तो वह के रूप में नियमों का आउटपुट देता है। क्लाइंट इन नियमों का उपयोग कई मार्केटिंग रणनीतियों के लिए कर सकते हैं:
ट्रेंड्स के अनुसार स्टोर लेआउट में बदलाव
ग्राहक व्यवहार विश्लेषण
कैटलॉग डिज़ाइन
ऑनलाइन स्टोर्स पर क्रॉस मार्केटिंग
ग्राहकों द्वारा खरीदी जाने वाली ट्रेंडिंग वस्तुएं क्या हैं
ऐड-ऑन बिक्री के साथ निजीकरण ईमेल्स
निम्नलिखित उदाहरण पर विचार करें:
एक ट्रांजैक्शन डेटा सेट दिया गया है। आप 1 से 5 तक क्रमांकित लेनदेन देख सकते हैं। प्रत्येक लेनदेन उस लेनदेन में खरीदी गई वस्तुएं दिखाता है। आप देख सकते हैं कि तीन लेनदेन में डायपर बीयर के साथ खरीदा गया है। इसी तरह, तीन लेनदेन में ब्रेड दूध के साथ खरीदी गई है, जिससे वे दोनों फ्रिक्वेंट आइटम सेट बनते हैं। एसोसिएशन रूल्स निम्नलिखित रूप में दिए जाते हैं:
$A=>B[Support,Confidence]$
$=>$ से पहले का भाग if (Antecedent) कहलाता है और $=>$ के बाद का भाग then (Consequent) कहलाता है।
जहाँ A और B ट्रांजैक्शन डेटा में वस्तुओं के सेट हैं। A और B असहभाजी (disjoint) सेट हैं।
A और B दोनों वाले लेनदेन की संख्या, A वाले कुल लेनदेन की संख्या से विभाजित।
$Confidence(Bread=>Milk)=\frac{3}{4}=0.75=75\%$
अब Milk=>Diaper के लिए कॉन्फिडेंस निकालें।
ध्यान दें: सपोर्ट और कॉन्फिडेंस इस बात को मापते हैं कि नियम कितना रोचक है। इन्हें न्यूनतम सपोर्ट और न्यूनतम कॉन्फिडेंस थ्रेशहोल्ड से निर्धारित किया जाता है। ये थ्रेशहोल्ड, जो क्लाइंट द्वारा तय किए जाते हैं, आपको अपनी या क्लाइंट की प्राथमिकताओं के अनुसार नियम की ताकत की तुलना करने में मदद करते हैं। जितना अधिक थ्रेशहोल्ड के निकट, उतना ही नियम क्लाइंट के लिए उपयोगी।
Frequent Itemsets: वे आइटम-सेट जिनका सपोर्ट न्यूनतम सपोर्ट थ्रेशहोल्ड (min_sup) से अधिक या बराबर हो। ऊपर के उदाहरण में min_sup=3 है। यह उपयोगकर्ता की पसंद से तय होता है।
Strong rules: यदि नियम A=>B[Support, Confidence] min_sup और min_confidence को संतुष्ट करता है, तो वह एक स्ट्रॉन्ग रूल है।
Lift: लिफ्ट नियम A=>B में A और B के बीच सहसम्बंध (correlation) देता है। सहसम्बंध बताता है कि आइटम-सेट A का आइटम-सेट B पर कितना प्रभाव है।
$Lift(A=>B)=\frac{Support}{Supp(A)Supp(B)}$
उदाहरण के लिए, नियम {Bread}=>{Milk} के लिए, लिफ्ट इस प्रकार निकलेगा:
$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$
यदि नियम का लिफ्ट 1 है, तो A और B स्वतंत्र हैं और उनसे कोई नियम नहीं निकाला जा सकता।
यदि लिफ्ट > 1 है, तो A और B एक-दूसरे पर निर्भर हैं, और निर्भरता की डिग्री लिफ्ट मान बताता है।
यदि लिफ्ट < 1 है, तो A की उपस्थिति B पर नकारात्मक प्रभाव डालेगी।
Goal of Association Rule Mining
जब आप दिए गए ट्रांजैक्शन सेट T पर एसोसिएशन रूल माइनिंग लागू करते हैं, तो आपका लक्ष्य होगा उन सभी नियमों को खोजना जिनके:
सपोर्ट min_support से अधिक या बराबर हो
कॉन्फिडेंस min_confidence से अधिक या बराबर हो
APRIORI Algorithm
ट्यूटोरियल के इस भाग में, आप उस एल्गोरिद्म के बारे में जानेंगे जो मार्केट बास्केट एनालिसिस के लिए R लाइब्रेरियों के पीछे चलता है। इससे आपको अपने क्लाइंट्स को बेहतर समझने और अधिक ध्यान से विश्लेषण करने में मदद मिलेगी। यदि आप पहले से APRIORI एल्गोरिद्म और उसके काम करने के तरीके के बारे में जानते हैं, तो आप सीधे कोडिंग भाग पर जा सकते हैं।
एसोसिएशन रूल माइनिंग को दो-चरणीय दृष्टिकोण के रूप में देखा जाता है:
Frequent Itemset Generation: सभी फ़्रिक्वेंट आइटम-सेट्स खोजें जिनका सपोर्ट पूर्व-निर्धारित min_support काउंट से ≥ हो
Rule Generation: फ़्रिक्वेंट आइटम-सेट्स से सभी एसोसिएशन रूल्स सूचीबद्ध करें। सभी नियमों के लिए सपोर्ट और कॉन्फिडेंस की गणना करें। वे नियम हटाएं (prune) जो min_support और min_confidence थ्रेशहोल्ड में विफल हों।
Frequent Itemset Generation सबसे अधिक गणनात्मक रूप से महंगा चरण है क्योंकि इसमें पूरे डेटाबेस को स्कैन करना पड़ता है।
ऊपर दिए गए चरणों में, फ़्रिक्वेंट आइटम-सेट जनरेशन गणना के लिहाज से सबसे महंगा है।
ऊपर आपने केवल 5 लेनदेन का उदाहरण देखा है, लेकिन वास्तविक दुनिया में रिटेल के ट्रांजैक्शन डेटा GBs और TBs तक हो सकते हैं, जिनके लिए एक अनुकूलित एल्गोरिद्म की आवश्यकता होती है ताकि उन आइटम-सेट्स को छाँटा जा सके जो अगले चरणों में सहायक नहीं होंगे। इसके लिए APRIORI एल्गोरिद्म का उपयोग किया जाता है। यह कहता है:
किसी फ़्रिक्वेंट आइटम-सेट का कोई भी सबसेट भी फ़्रिक्वेंट होना चाहिए। दूसरे शब्दों में, किसी इंफ्रिक्वेंट आइटम-सेट का कोई सुपरसैट न तो जनरेट किया जाए और न ही टेस्ट।
इसे आइटमसेट लैटिस में दर्शाया जाता है, जो APRIORI एल्गोरिद्म के सिद्धांत का एक ग्राफिकल निरूपण है। इसमें k-आइटम-सेट नोड और उस k-आइटम-सेट के सबसेट्स के संबंध होते हैं।
आप ऊपर के चित्र में देख सकते हैं कि सबसे नीचे ट्रांजैक्शन डेटा की सभी वस्तुएं हैं और फिर आप ऊपर की ओर बढ़ते हुए सबसेट बनाते हैं जब तक कि नल सेट तक न पहुँच जाएं। d वस्तुओं के लिए लैटिस का आकार $2^d$ हो जाएगा। इससे पता चलता है कि प्रत्येक संयोजन के लिए सपोर्ट निकालकर फ़्रिक्वेंट आइटम-सेट जनरेट करना कितना कठिन होगा। निम्नलिखित चित्र दिखाता है कि APRIORI सेटों की संख्या घटाने में कितना मदद करता है:
यदि आइटम-सेट {a,b} इंफ्रिक्वेंट है तो हमें उसके सभी सुपरसैट्स पर विचार करने की आवश्यकता नहीं है।
इसे एक उदाहरण से समझते हैं। निम्न उदाहरण में आप देखेंगे कि APRIORI एक प्रभावी एल्गोरिद्म क्यों है और साथ ही चरण-दर-चरण मजबूत एसोसिएशन रूल्स कैसे जनरेट होते हैं। अपने नोटबुक और पेन के साथ साथ चलें!
जैसा कि आप देख सकते हैं, आप 1-आइटम-सेट के लिए कैंडिडेट लिस्ट बनाकर शुरू करते हैं जिसमें ट्रांजैक्शन डेटा में मौजूद सभी वस्तुएं, व्यक्तिगत रूप से, शामिल होंगी। वास्तविक दुनिया के रिटेल ट्रांजैक्शन डेटा को देखते हुए, आप समझ सकते हैं कि यह कैंडिडेट जनरेशन कितना महंगा है। यहाँ APRIORI अपनी भूमिका निभाता है और कैंडिडेट लिस्ट की संख्या कम करने में मदद करता है, और अंत में उपयोगी नियम जनरेट होते हैं। अगले चरणों में, आप देखेंगे कि हम एसोसिएशन रूल माइनिंग के पहले चरण यानी फ़्रिक्वेंट आइटम-सेट जनरेशन के अंत तक कैसे पहुँचते हैं।
आपका अगला कदम सभी फ़्रिक्वेंट आइटम-सेट्स को सूचीबद्ध करना होगा। आप अंतिम नॉन-एम्प्टी फ़्रिक्वेंट आइटम-सेट लेंगे, जो इस उदाहरण में L2={I1, I2},{I2, I3} है। फिर उस फ़्रिक्वेंट आइटम-सेट लिस्ट में मौजूद आइटम-सेट्स के सभी नॉन-एम्प्टी सबसेट्स बनाएं। नीचे दी गई चित्रात्मक व्याख्या के अनुसार आगे बढ़ें:
आप ऊपर देख सकते हैं कि चार मजबूत नियम हैं। उदाहरण के लिए, ${I2}=>I3$ जिसका कॉन्फिडेंस 75% के बराबर है, बताता है कि जिन लोगों ने I2 खरीदा उनमें से 75% ने I3 भी खरीदा।
अब आपने संपूर्ण APRIORI एल्गोरिद्म सीख लिया है, जो डेटा माइनिंग में सबसे अधिक उपयोग किए जाने वाले एल्गोरिद्म्स में से एक है। अब कोड पर चलते हैं, फ्यूँ!
R का उपयोग करके MBA/Association Rule Mining लागू करना
इस ट्यूटोरियल में, आप UCI Machine Learning Repository का एक डेटासेट उपयोग करेंगे। डेटासेट का नाम Online-Retail है, और आप इसे यहाँ से डाउनलोड कर सकते हैं। यह डेटासेट 01/12/2010 से 09/12/2011 तक के लेनदेन डेटा को शामिल करता है, जो यूके-आधारित रजिस्टर्ड नॉन-स्टोर ऑनलाइन रिटेल का है। इसे और R के बिल्ट-इन डेटासेट्स को नहीं लेने का कारण यह है कि आपको रिटेल डेटा इसी रूप में मिलने की अधिक संभावना है, जिस पर आपको डेटा प्री-प्रोसेसिंग लागू करनी होगी।
Dataset Description
पंक्तियों की संख्या:541909
गुणों (Attributes) की संख्या:08
Attribute Information
InvoiceNo: चालान संख्या। नोमिनल, 6-अंकों की पूर्णांक संख्या जो प्रत्येक लेनदेन को अद्वितीय रूप से सौंपी जाती है। यदि यह कोड अक्षर 'c' से शुरू होता है, तो यह रद्दीकरण को दर्शाता है। +StockCode: उत्पाद (आइटम) कोड। नोमिनल, 5-अंकों की पूर्णांक संख्या जो प्रत्येक अलग उत्पाद को अद्वितीय रूप से सौंपी जाती है।
Description: उत्पाद (आइटम) का नाम। नोमिनल।
Quantity: प्रति लेनदेन प्रत्येक उत्पाद (आइटम) की मात्रा। संख्यात्मक।
InvoiceDate: चालान की तिथि और समय। संख्यात्मक, वह दिन और समय जब प्रत्येक लेनदेन जनरेट हुआ। डेटासेट से उदाहरण: 12/1/2010 8:26
UnitPrice: यूनिट प्राइस। संख्यात्मक, प्रति यूनिट उत्पाद का मूल्य (स्टर्लिंग में)।
CustomerID: ग्राहक संख्या। नोमिनल, 5-अंकों की पूर्णांक संख्या जो प्रत्येक ग्राहक को अद्वितीय रूप से सौंपी जाती है।
Country: देश का नाम। नोमिनल, वह देश जहाँ प्रत्येक ग्राहक निवास करता है।
Loading Libraries
सबसे पहले, आप आवश्यक लाइब्रेरियाँ लोड करेंगे। लाइब्रेरियों का एक संक्षिप्त विवरण (जो यहाँ से लिया गया है) नीचे दी गई तालिका में दिया गया है, ताकि आपको पता हो कि हर लाइब्रेरी क्या करती है:
Package
Description
arules
ट्रांजैक्शन डेटा और पैटर्न्स (फ्रिक्वेंट आइटमसेट्स और एसोसिएशन रूल्स) को निरूपित करने, संशोधित करने और विश्लेषण करने के लिए बुनियादी ढांचा प्रदान करता है।
arulesViz
पैकेज 'arules' को एसोसिएशन रूल्स और आइटम-सेट्स के लिए विभिन्न विज़ुअलाइज़ेशन तकनीकों के साथ विस्तार देता है। पैकेज में रूल एक्सप्लोरेशन के लिए कई इंटरैक्टिव विज़ुअलाइज़ेशन भी शामिल हैं।
tidyverse
टाइडिवर्स डेटा साइंस के लिए डिज़ाइन किए गए R पैकेजों का एक सुविचारित संग्रह है
readxl
R में Excel फ़ाइलें पढ़ें
plyr
डेटा को विभाजित करने, लागू करने और संयोजित करने के लिए टूल्स
ggplot2
ग्राफ़िक्स और चार्ट बनाएं
knitr
R में डायनेमिक रिपोर्ट जेनरेशन
lubridate
Lubridate एक R पैकेज है जो तिथियों और समय के साथ काम करना आसान बनाता है।
#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)संचालित द्वारा
Data Pre-processing
डाउनलोड की गई फ़ाइल से डेटासेट को R में पढ़ने के लिए read_excel(path to file) का उपयोग करें। 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))संचालित द्वारा
retail %>% mutate(Country = as.factor(Country))संचालित द्वारा
#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))संचालित द्वारा
#get a glimpse of your data
glimpse(retail)संचालित द्वारा
नोट: पृष्ठ 1 का 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...संचालित द्वारा
अब, डेटाफ्रेम retail में 10 गुण होंगे, जिनमें दो अतिरिक्त गुण Date और Time हैं।
MBA/एसोसिएशन रूल माइनिंग लागू करने से पहले, हमें डेटाफ्रेम को ट्रांजैक्शन डेटा में बदलना होगा ताकि एक चालान में साथ खरीदी गई सभी वस्तुएं एक ही पंक्ति में हों। आप glimpse आउटपुट में देख सकते हैं कि प्रत्येक लेनदेन परमाणवी (atomic) रूप में है, यानी एक चालान से संबंधित सभी उत्पाद रिलेशनल डेटाबेस की तरह अलग-अलग हैं। इस फ़ॉर्मैट को singles फ़ॉर्मैट भी कहा जाता है।
आपको जो करना है वह है retail डेटाफ्रेम में डेटा को या तो CustomerID, CustomerID और Date के आधार पर समूहित करना, या आप InvoiceNo और Date का उपयोग करके भी समूह बना सकते हैं। हमें इस ग्रुपिंग की आवश्यकता है, उस पर एक फ़ंक्शन लागू करना है और आउटपुट को दूसरे डेटाफ्रेम में स्टोर करना है। यह ddply से किया जा सकता है।
निम्नलिखित कोड की पंक्तियाँ एक ही InvoiceNo और date से सभी उत्पादों को मिलाएँगी और उस InvoiceNo और date के सभी उत्पादों को एक पंक्ति के रूप में जोड़ देंगी, जिसमें प्रत्येक आइटम , से अलग होगा
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 usedसंचालित द्वारा
अगले चरण में, क्योंकि रूल माइनिंग में InvoiceNo और Date का उपयोग नहीं होगा, आप इन्हें 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
transactionDataसंचालित द्वारा
नोट: पृष्ठ 1 का 100।
ट्रांजैक्शन डेटा के लिए इस फ़ॉर्मैट को basket फ़ॉर्मैट कहा जाता है। अगला कदम, आपको इस ट्रांजैक्शन डेटा को एक .csv (कॉमा सेपरेटेड वैल्यूज़) फ़ाइल में स्टोर करना है। इसके लिए, 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.संचालित द्वारा
देखें कि आपका ट्रांजैक्शन डेटा सही फ़ॉर्म में है या नहीं:
अगले चरण में, आपको इस ट्रांजैक्शन डेटा को ट्रांजैक्शन क्लास की एक ऑब्जेक्ट में लोड करना होगा। यह arules पैकेज के R फ़ंक्शन read.transactions का उपयोग करके किया जाता है।
निम्न कोड पंक्ति basket फ़ॉर्मैट में मौजूद ट्रांजैक्शन डेटा फ़ाइल D:/Documents/market_basket_transactions.csv लेगी और इसे ट्रांजैक्शन क्लास की ऑब्जेक्ट में बदल देगी।
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 ','संचालित द्वारा
जब आप ऊपर दी गई कोड पंक्तियाँ चलाएँगे तो आपको अपने आउटपुट में बहुत से EOF within quoted string दिख सकते हैं, इसकी चिंता न करें।
यदि आपके पास पहले से डेटाफ्रेम में ट्रांजैक्शन डेटा है, तो उसे ट्रांजैक्शन ऑब्जेक्ट में बदलने के लिए निम्न कोड पंक्ति का उपयोग करें:
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 BALLOONSसंचालित द्वारा
summary(tr) एक बहुत उपयोगी कमांड है जो हमें हमारे ट्रांजैक्शन ऑब्जेक्ट के बारे में जानकारी देता है। आइए देखें कि ऊपर का आउटपुट क्या कहता है:
यहाँ 22191 लेनदेन (पंक्तियाँ) और 7876 वस्तुएँ (कॉलम) हैं। ध्यान दें कि 7876 डेटासेट में शामिल उत्पाद विवरणों की संख्या है और 22191 लेनदेन इन वस्तुओं के संग्रह हैं।
घनत्व (Density) स्पार्स मैट्रिक्स में नॉन-ज़ीरो कोशिकाओं का प्रतिशत बताता है। आप इसे इस तरह भी कह सकते हैं कि खरीदी गई कुल वस्तुओं की संख्या, उस मैट्रिक्स में संभावित वस्तुओं की संख्या से विभाजित। आप डेंसिटी का उपयोग करके खरीदी गई वस्तुओं की संख्या निकाल सकते हैं: 22191x7876x0.001930725=337445
जानकारी! स्पार्स मैट्रिक्स: स्पार्स मैट्रिक्स या स्पार्स एरे वह मैट्रिक्स है जिसमें अधिकांश अवयव शून्य होते हैं। इसके विपरीत, यदि अधिकांश अवयव नॉन-ज़ीरो हों, तो मैट्रिक्स को डेंस माना जाता है। शून्य-मूल्य वाले अवयवों की संख्या को कुल अवयवों की संख्या से विभाजित करने पर प्राप्त मान मैट्रिक्स की स्पार्सिटी कहलाती है (जो डेंसिटी के 1 माइनस के बराबर होती है)।
समरी आपको सबसे अधिक बार आने वाली वस्तुओं के बारे में भी बताती है।
एलीमेंट (आइटमसेट/ट्रांजैक्शन) लंबाई वितरण: यह बता रहा है कि 1-आइटमसेट, 2-आइटमसेट आदि के लिए कितने लेनदेन हैं। पहली पंक्ति वस्तुओं की संख्या बता रही है और दूसरी पंक्ति लेनदेन की संख्या।
उदाहरण के लिए, केवल 3598 लेनदेन एक वस्तु के लिए हैं, 1594 लेनदेन 2 वस्तुओं के लिए हैं, और एक लेनदेन में 419 वस्तुएँ हैं जो सबसे लंबा है।
आप itemFrequencyPlot जनरेट कर सकते हैं जो itemMatrix पर आधारित ऑब्जेक्ट्स के वितरण को देखने के लिए आइटम फ्रीक्वेंसी बार प्लॉट बनाता है (जैसे, >transactions या >itemsets और >rules में वस्तुएँ), जो हमारे मामले में लागू है।
# 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")संचालित द्वारा
इस
itemFrequencyPlot(tr,topN=20,type="absolute")संचालित द्वारा
का पहला आर्ग्युमेंट प्लॉट किए जाने वाला ट्रांजैक्शन ऑब्जेक्ट है यानी tr। topN आपको टॉप N उच्चतम फ्रीक्वेंसी वाली वस्तुएँ प्लॉट करने देता है। typetype="absolute" या type="relative" हो सकता है। यदि absolute है तो यह प्रत्येक आइटम की संख्यात्मक फ्रीक्वेंसियाँ स्वतंत्र रूप से प्लॉट करेगा। यदि relative है तो यह प्लॉट करेगा कि अन्य के मुकाबले ये आइटम कितनी बार आए हैं।
itemFrequencyPlot(tr,topN=20,type="relative",col=brewer.pal(8,'Pastel2'),main="Relative Item Frequency Plot")संचालित द्वारा
यह प्लॉट दिखाता है कि 'WHITE HANGING HEART T-LIGHT HOLDER' और 'REGENCY CAKESTAND 3 TIER' की बिक्री सबसे अधिक है। इसलिए 'SET OF 3 CAKE TINS PANTRY DESIGN' की बिक्री बढ़ाने के लिए रिटेलर इसे 'REGENCY CAKESTAND 3 TIER' के पास रख सकता/सकती है।
आप itemFrequencyPlot के अन्य विकल्पों का पता यहाँ लगा सकते हैं।
Generating Rules!
अगला कदम APRIORI एल्गोरिद्म का उपयोग करके नियमों का खनन (माइन) करना है। फ़ंक्शन apriori() पैकेज arules से है।
# Min Support as 0.001, confidence as 0.8.
association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8,maxlen=10))संचालित द्वारा
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 12345678910संचालित द्वारा
Mining stopped (maxlen reached). Only patterns up to a length of 10 returned!संचालित द्वारा
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.8संचालित द्वारा
aprioritr को उस ट्रांजैक्शन ऑब्जेक्ट के रूप में लेगा जिस पर माइनिंग लागू की जानी है। parameter आपको min_sup और min_confidence सेट करने देगा। parameter के डिफ़ॉल्ट मान हैं: न्यूनतम सपोर्ट 0.1, न्यूनतम कॉन्फिडेंस 0.8, अधिकतम 10 आइटम (maxlen)।
summary(association.rules) निम्नलिखित दिखाता है:
Parameter Specification: min_sup=0.001 और min_confidence=0.8 के मान, और एक नियम में अधिकतम 10 आइटम।
कुल नियमों की संख्या:49122 नियमों का सेट
रूल लंबाई का वितरण: 5 आइटम की लंबाई में सबसे अधिक नियम: 16424 और 2 आइटम की लंबाई में सबसे कम नियम: 105
क्वालिटी मापों का सारांश: सपोर्ट, कॉन्फिडेंस और लिफ्ट के लिए न्यूनतम और अधिकतम मान।
नियम बनाने में उपयोग की गई जानकारी: वह डेटा, सपोर्ट और कॉन्फिडेंस जो हमने एल्गोरिद्म को प्रदान किए।
चूँकि 49122 नियम हैं, आइए केवल शीर्ष 10 प्रिंट करें:
उपरोक्त आउटपुट का उपयोग करके, आप ऐसे विश्लेषण कर सकते हैं, जैसे:
'WOBBLY CHICKEN' खरीदने वाले 100% ग्राहकों ने 'METAL' भी खरीदा।
'BLACK TEA' खरीदने वाले 100% ग्राहकों ने 'SUGAR JARS' भी खरीदे।
नियमों की संख्या और आकार सीमित करना
आप जनरेट किए गए नियमों की संख्या और आकार को कैसे सीमित कर सकते हैं? आप यह apriori में parameters सेट करके कर सकते हैं। आप इन पैरामीटर्स को इस अनुसार सेट करते हैं कि आपको कितने नियम चाहिए। यदि आप मजबूत नियम चाहते हैं, तो आप conf का मान बढ़ा सकते हैं और अधिक लंबाई वाले नियमों के लिए maxlen का मान अधिक दें।
shorter.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8,maxlen=3))संचालित द्वारा
बेमानी (रेडंडेंट) नियम हटाना
आप बड़े नियमों के उपसमुच्चय (subsets) वाले नियम हटा सकते हैं। ऐसे नियम हटाने के लिए नीचे दिया गया कोड उपयोग करें:
subset.rules <- which(colSums(is.subset(association.rules, association.rules))>1)# get subset rules in vector
length(subset.rules)#> 3913संचालित द्वारा
subset.association.rules.<- association.rules[-subset.rules] # remove subset rules.संचालित द्वारा
which() उस वेक्टर में उन तत्त्वों की स्थिति लौटाता है जिनका मान TRUE होता है।
colSums() डेटा फ्रेम और संख्यात्मक ऐरे के लिए पंक्ति और स्तंभ योग बनाता है।
is.subset() निर्धारित करता है कि क्या एक वेक्टर के तत्त्व दूसरे के सभी तत्त्वों को समाहित करते हैं
दिए गए आइटम्स से संबंधित नियम ढूंढना
कभी-कभी, आप किसी विशेष उत्पाद पर काम करना चाहेंगे। यदि आप जानना चाहते हैं कि आइटम X की खरीद पर किन कारणों का प्रभाव पड़ता है, तो आप apriori कमांड में appearance विकल्प का उपयोग कर सकते हैं। appearance हमें नियम के LHS (IF भाग) और RHS (THEN भाग) सेट करने के विकल्प देता है।
उदाहरण के लिए, यह जानने के लिए कि ग्राहक 'METAL' खरीदने से पहले क्या खरीदते हैं, नीचे दी गई कोड लाइन चलाएँ:
metal.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8),appearance = list(default="lhs",rhs="METAL"))संचालित द्वारा
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 12345678910संचालित द्वारा
Mining stopped (maxlen reached). Only patterns up to a length of 10 returned!संचालित द्वारा
# 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))संचालित द्वारा
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.8234संचालित द्वारा
इसी तरह, प्रश्न का उत्तर ढूंढने के लिए जिन ग्राहकों ने METAL खरीदा उन्होंने साथ में और क्या खरीदा.... आप METAL को lhs पर रखेंगे:
metal.association.rules <- apriori(tr, parameter = list(supp=0.001, conf=0.8),appearance = list(lhs="METAL",default="rhs"))संचालित द्वारा
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].संचालित द्वारा
# 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))संचालित द्वारा
lhs rhs support confidence lift count
[1]{METAL}=>{DECORATION}0.0022531661443.8250संचालित द्वारा
एसोसिएशन नियमों का विज़ुअलाइज़ेशन
क्योंकि डेटा के आधार पर सैकड़ों या हजारों नियम बनेंगे, आपको अपने निष्कर्षों को प्रस्तुत करने के लिए कुछ तरीके चाहिए। ऊपर ItemFrequencyPlot पर पहले ही चर्चा हो चुकी है, जो सबसे अधिक बिकने वाले आइटम्स पाने का एक बेहतरीन तरीका है।
यहाँ निम्नलिखित विज़ुअलाइज़ेशन पर चर्चा होगी:
स्कैटर-प्लॉट
इंटरैक्टिव स्कैटर-प्लॉट
व्यक्तिगत नियम अभिविन्यास
स्कैटर-प्लॉट
एसोसिएशन नियमों का सीधा-सादा विज़ुअलाइज़ेशन arulesViz पैकेज के plot() का उपयोग करके स्कैटर प्लॉट बनाना है। इसमें अक्षों पर Support और Confidence होते हैं। साथ ही, तीसरा माप Lift डिफ़ॉल्ट रूप से बिंदुओं के रंग (ग्रे स्तर) के लिए उपयोग होता है।
# Filter rules with confidence greater than 0.4 or 40%
subRules<-association.rules[quality(association.rules)$confidence>0.4]#Plot SubRules
plot(subRules)संचालित द्वारा
ऊपर दिया गया प्लॉट दिखाता है कि उच्च लिफ्ट वाले नियमों का सपोर्ट कम होता है। आप प्लॉट के लिए निम्नलिखित विकल्पों का उपयोग कर सकते हैं:
plot(rulesObject, measure, shading, method)संचालित द्वारा
rulesObject: प्लॉट किए जाने वाला नियम ऑब्जेक्ट
measure: नियम की रोचकता के माप। Support, Confidence, lift या method के मान के अनुसार इनका संयोजन हो सकता है।
shading: बिंदुओं के रंग के लिए प्रयुक्त माप (Support, Confidence, lift)। डिफ़ॉल्ट Lift है।
टू-की प्लॉट में क्रमशः x और y-अक्ष पर सपोर्ट और कॉन्फिडेंस होते हैं। यह रंग के लिए order का उपयोग करता है। Order नियम में आइटम्स की संख्या है।
इंटरैक्टिव स्कैटर-प्लॉट
नियमों को प्रस्तुत करने के लिए arulesViz और plotly का उपयोग करके एक शानदार इंटरैक्टिव प्लॉट बनाया जा सकता है। आप हर नियम पर होवर कर सकते हैं और सभी क्वालिटी माप (support, confidence और 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.संचालित द्वारा
ग्राफ-आधारित विज़ुअलाइज़ेशन
ग्राफ-आधारित तकनीकें वर्टिसेज़ और एजेज़ का उपयोग करके एसोसिएशन नियमों को विज़ुअलाइज़ करती हैं, जहाँ वर्टिसेज़ पर आइटम नाम लगे होते हैं, और आइटम सेट्स या नियमों को वर्टिसेज़ के दूसरे सेट के रूप में दर्शाया जाता है। आइटम्स को आइटम-सेट्स/नियमों से निर्देशित तीरों के माध्यम से जोड़ा जाता है। आइटम्स से नियम वर्टेक्स की ओर इशारा करते तीर LHS आइटम्स को इंगित करते हैं और नियम से आइटम की ओर तीर RHS को दर्शाता है। वर्टिसेज़ का आकार और रंग अक्सर इंटरेस्ट मापों का प्रतिनिधित्व करते हैं।
ग्राफ प्लॉट नियमों को विज़ुअलाइज़ करने का बेहतरीन तरीका हैं लेकिन नियमों की संख्या बढ़ने पर ये भीड़भाड़ वाले हो जाते हैं। इसलिए ग्राफ-आधारित विज़ुअलाइज़ेशन के साथ कम नियमों का विज़ुअलाइज़ेशन करना बेहतर है।
आइए subRules से सबसे अधिक कॉन्फिडेंस वाले 10 नियम चुनते हैं।
top10subRules <- head(subRules, n =10, by ="confidence")संचालित द्वारा
अब, एक इंटरैक्टिव ग्राफ प्लॉट करें:
नोट: आप plot में engine=htmlwidget पैरामीटर का उपयोग करके अपने सभी प्लॉट्स को इंटरैक्टिव बना सकते हैं
plot(top10subRules, method ="graph", engine ="htmlwidget")संचालित द्वारा
arulesViz से एसोसिएशन नियमों के सेट के लिए ग्राफ्स को GraphML फ़ॉर्मेट में या Graphviz dot-file के रूप में एक्सपोर्ट किया जा सकता है ताकि उन्हें Gephi जैसे टूल्स में एक्सप्लोर किया जा सके। उदाहरण के लिए, सबसे अधिक लिफ्ट वाले 1000 नियमों को इस प्रकार एक्सपोर्ट किया जाता है:
saveAsGraph(head(subRules, n =1000, by ="lift"), file ="rules.graphml")संचालित द्वारा
व्यक्तिगत नियम अभिविन्यास
इसे पैरेलल कोऑर्डिनेट्स प्लॉट भी कहा जाता है। यह देखने में उपयोगी है कि कौन से उत्पाद किन आइटम्स के साथ किस तरह की बिक्री का कारण बनते हैं।
जैसा कि ऊपर बताया गया, RHS परिणाम (Consequent) है या वह आइटम जिसे हम मानते हैं कि ग्राहक खरीदेगा; स्थितियाँ LHS में होती हैं जहाँ 2 हमारी टोकरी (basket) में सबसे हाल का जोड़ है और 1 वह आइटम है जो पहले से था।
# Filter top 20 rules with highest lift
subRules2<-head(subRules, n=20, by="lift")
plot(subRules2, method="paracoord")संचालित द्वारा
सबसे ऊपर वाले तीर को देखें। यह दिखाता है कि जब मेरे शॉपिंग कार्ट में 'CHILDS GARDEN SPADE PINK' और 'CHILDS GARDEN RAKE PINK' होते हैं, तो मैं इनके साथ 'CHILDS GARDEN RAKE BLUE' खरीदने की भी संभावना रखता हूँ।
निष्कर्ष
बधाई हो! आपने APRIORI सीखा, जो डेटा माइनिंग में सबसे ज़्यादा उपयोग किए जाने वाले एल्गोरिद्म्स में से एक है। आपने एसोसिएशन रूल माइनिंग, उसके अनुप्रयोगों, और रिटेलिंग में उसके अनुप्रयोग—जिसे मार्केट बास्केट विश्लेषण कहा जाता है—के बारे में सब कुछ सीखा। अब आप R में मार्केट बास्केट विश्लेषण लागू करने और अपने एसोसिएशन नियमों को बेहतरीन प्लॉट्स के साथ प्रस्तुत करने में भी सक्षम हैं! सीखते रहें!
आप एक डेटा वैज्ञानिक हैं (या बनने की राह पर हैं!) और आपको एक क्लाइंट मिलता है जो एक रिटेल स्टोर चलाता है। आपका क्लाइंट आपको सभी लेनदेन का डेटा देता है, जिसमें एक निश्चित अवधि में कई ग्राहकों द्वारा स्टोर से खरीदी गई वस्तुएं शामिल हैं, और आपसे कहता है कि उस डेटा का उपयोग करके उनके व्यवसाय को बढ़ाने में मदद करें। आपका क्लाइंट आपकी खोजों का उपयोग न केवल इन्वेंटरी में वस्तुओं को बदलने/अपडेट/जोड़ने के लिए करेगा बल्कि भौतिक स्टोर या ऑनलाइन स्टोर के लेआउट को बदलने के लिए भी करेगा। ऐसे परिणाम खोजने के लिए जो आपके क्लाइंट की मदद करेंगे, आप मार्केट बास्केट एनालिसिस (MBA) का उपयोग करेंगे, जो दिए गए ट्रांजैक्शन डेटा पर एसोसिएशन रूल माइनिंग लागू करता है।
इस ट्यूटोरियल में आप सीखेंगे:
Association Rule Mining
एसोसिएशन रूल माइनिंग तब उपयोग की जाती है जब आप किसी सेट में अलग-अलग वस्तुओं के बीच संबंध खोजना चाहते हैं, किसी ट्रांजैक्शन डेटाबेस, रिलेशनल डेटाबेस या किसी अन्य सूचना रिपॉज़िटरी में बार-बार आने वाले पैटर्न ढूंढना चाहते हैं। एसोसिएशन रूल माइनिंग के अनुप्रयोग मार्केटिंग, रिटेलिंग में बास्केट डेटा एनालिसिस (या मार्केट बास्केट एनालिसिस), क्लस्टरिंग और क्लासिफिकेशन में पाए जाते हैं। यह एसोसिएशन रूल्स नामक नियमों का सेट बनाकर आपको बता सकता है कि ग्राहक कौन-सी वस्तुएं अक्सर साथ में खरीदते हैं। सरल शब्दों में, यह आपको यदि यह तो वह के रूप में नियमों का आउटपुट देता है। क्लाइंट इन नियमों का उपयोग कई मार्केटिंग रणनीतियों के लिए कर सकते हैं:
निम्नलिखित उदाहरण पर विचार करें:
एक ट्रांजैक्शन डेटा सेट दिया गया है। आप 1 से 5 तक क्रमांकित लेनदेन देख सकते हैं। प्रत्येक लेनदेन उस लेनदेन में खरीदी गई वस्तुएं दिखाता है। आप देख सकते हैं कि तीन लेनदेन में डायपर बीयर के साथ खरीदा गया है। इसी तरह, तीन लेनदेन में ब्रेड दूध के साथ खरीदी गई है, जिससे वे दोनों फ्रिक्वेंट आइटम सेट बनते हैं। एसोसिएशन रूल्स निम्नलिखित रूप में दिए जाते हैं:
$A=>B[Support,Confidence]$
$=>$ से पहले का भाग if (Antecedent) कहलाता है और $=>$ के बाद का भाग then (Consequent) कहलाता है।
जहाँ A और B ट्रांजैक्शन डेटा में वस्तुओं के सेट हैं। A और B असहभाजी (disjoint) सेट हैं।
$Computer=>Anti-virus Software[Support=20\%,confidence=60\%]$
ऊपर दिए गए नियम का अर्थ है:
अगले भाग में आप एसोसिएशन रूल माइनिंग की बुनियादी अवधारणाओं के बारे में जानेंगे:
Basic Concepts of Association Rule Mining
Itemset: एक या अधिक वस्तुओं का संग्रह। K-item-set का मतलब k वस्तुओं का सेट।
Support Count: किसी आइटम-सेट के आने की आवृत्ति
Support (s): उन लेनदेन का अंश जिनमें आइटम-सेट 'X' शामिल है
$Support(X)=\frac{frequency(X)}{N}$
नियम A=>B के लिए, सपोर्ट इस प्रकार दिया जाता है:
$Support(A=>B)=\frac{frequency(A,B)}{N}$
ध्यान दें: P(AUB) A और B के साथ-साथ होने की प्रायिकता है। P प्रायिकता को निरूपित करता है।
आगे बढ़ें, अभ्यास के तौर पर Milk=>Diaper का सपोर्ट निकालने का प्रयास करें।
$Confidence(A=>B)=\frac{P(A\cap B)}{P(A)}=\frac{frequency(A,B)}{frequency(A)}$
A और B दोनों वाले लेनदेन की संख्या, A वाले कुल लेनदेन की संख्या से विभाजित।
$Confidence(Bread=>Milk)=\frac{3}{4}=0.75=75\%$
अब Milk=>Diaper के लिए कॉन्फिडेंस निकालें।
ध्यान दें: सपोर्ट और कॉन्फिडेंस इस बात को मापते हैं कि नियम कितना रोचक है। इन्हें न्यूनतम सपोर्ट और न्यूनतम कॉन्फिडेंस थ्रेशहोल्ड से निर्धारित किया जाता है। ये थ्रेशहोल्ड, जो क्लाइंट द्वारा तय किए जाते हैं, आपको अपनी या क्लाइंट की प्राथमिकताओं के अनुसार नियम की ताकत की तुलना करने में मदद करते हैं। जितना अधिक थ्रेशहोल्ड के निकट, उतना ही नियम क्लाइंट के लिए उपयोगी।
Frequent Itemsets: वे आइटम-सेट जिनका सपोर्ट न्यूनतम सपोर्ट थ्रेशहोल्ड (min_sup) से अधिक या बराबर हो। ऊपर के उदाहरण में min_sup=3 है। यह उपयोगकर्ता की पसंद से तय होता है।
Strong rules: यदि नियम A=>B[Support, Confidence] min_sup और min_confidence को संतुष्ट करता है, तो वह एक स्ट्रॉन्ग रूल है।
Lift: लिफ्ट नियम A=>B में A और B के बीच सहसम्बंध (correlation) देता है। सहसम्बंध बताता है कि आइटम-सेट A का आइटम-सेट B पर कितना प्रभाव है।
$Lift(A=>B)=\frac{Support}{Supp(A)Supp(B)}$
उदाहरण के लिए, नियम
{Bread}=>{Milk}के लिए, लिफ्ट इस प्रकार निकलेगा:$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$
यदि नियम का लिफ्ट 1 है, तो A और B स्वतंत्र हैं और उनसे कोई नियम नहीं निकाला जा सकता।
यदि लिफ्ट > 1 है, तो A और B एक-दूसरे पर निर्भर हैं, और निर्भरता की डिग्री लिफ्ट मान बताता है।
यदि लिफ्ट < 1 है, तो A की उपस्थिति B पर नकारात्मक प्रभाव डालेगी।
Goal of Association Rule Mining
जब आप दिए गए ट्रांजैक्शन सेट T पर एसोसिएशन रूल माइनिंग लागू करते हैं, तो आपका लक्ष्य होगा उन सभी नियमों को खोजना जिनके:
APRIORI Algorithm
ट्यूटोरियल के इस भाग में, आप उस एल्गोरिद्म के बारे में जानेंगे जो मार्केट बास्केट एनालिसिस के लिए R लाइब्रेरियों के पीछे चलता है। इससे आपको अपने क्लाइंट्स को बेहतर समझने और अधिक ध्यान से विश्लेषण करने में मदद मिलेगी। यदि आप पहले से APRIORI एल्गोरिद्म और उसके काम करने के तरीके के बारे में जानते हैं, तो आप सीधे कोडिंग भाग पर जा सकते हैं।
एसोसिएशन रूल माइनिंग को दो-चरणीय दृष्टिकोण के रूप में देखा जाता है:
Frequent Itemset Generation: सभी फ़्रिक्वेंट आइटम-सेट्स खोजें जिनका सपोर्ट पूर्व-निर्धारित min_support काउंट से ≥ हो
Rule Generation: फ़्रिक्वेंट आइटम-सेट्स से सभी एसोसिएशन रूल्स सूचीबद्ध करें। सभी नियमों के लिए सपोर्ट और कॉन्फिडेंस की गणना करें। वे नियम हटाएं (prune) जो min_support और min_confidence थ्रेशहोल्ड में विफल हों।
Frequent Itemset Generation सबसे अधिक गणनात्मक रूप से महंगा चरण है क्योंकि इसमें पूरे डेटाबेस को स्कैन करना पड़ता है।
ऊपर दिए गए चरणों में, फ़्रिक्वेंट आइटम-सेट जनरेशन गणना के लिहाज से सबसे महंगा है।
ऊपर आपने केवल 5 लेनदेन का उदाहरण देखा है, लेकिन वास्तविक दुनिया में रिटेल के ट्रांजैक्शन डेटा GBs और TBs तक हो सकते हैं, जिनके लिए एक अनुकूलित एल्गोरिद्म की आवश्यकता होती है ताकि उन आइटम-सेट्स को छाँटा जा सके जो अगले चरणों में सहायक नहीं होंगे। इसके लिए APRIORI एल्गोरिद्म का उपयोग किया जाता है। यह कहता है:
इसे आइटमसेट लैटिस में दर्शाया जाता है, जो APRIORI एल्गोरिद्म के सिद्धांत का एक ग्राफिकल निरूपण है। इसमें k-आइटम-सेट नोड और उस k-आइटम-सेट के सबसेट्स के संबंध होते हैं।
आप ऊपर के चित्र में देख सकते हैं कि सबसे नीचे ट्रांजैक्शन डेटा की सभी वस्तुएं हैं और फिर आप ऊपर की ओर बढ़ते हुए सबसेट बनाते हैं जब तक कि नल सेट तक न पहुँच जाएं। d वस्तुओं के लिए लैटिस का आकार $2^d$ हो जाएगा। इससे पता चलता है कि प्रत्येक संयोजन के लिए सपोर्ट निकालकर फ़्रिक्वेंट आइटम-सेट जनरेट करना कितना कठिन होगा। निम्नलिखित चित्र दिखाता है कि APRIORI सेटों की संख्या घटाने में कितना मदद करता है:
यदि आइटम-सेट {a,b} इंफ्रिक्वेंट है तो हमें उसके सभी सुपरसैट्स पर विचार करने की आवश्यकता नहीं है।
इसे एक उदाहरण से समझते हैं। निम्न उदाहरण में आप देखेंगे कि APRIORI एक प्रभावी एल्गोरिद्म क्यों है और साथ ही चरण-दर-चरण मजबूत एसोसिएशन रूल्स कैसे जनरेट होते हैं। अपने नोटबुक और पेन के साथ साथ चलें!
जैसा कि आप देख सकते हैं, आप 1-आइटम-सेट के लिए कैंडिडेट लिस्ट बनाकर शुरू करते हैं जिसमें ट्रांजैक्शन डेटा में मौजूद सभी वस्तुएं, व्यक्तिगत रूप से, शामिल होंगी। वास्तविक दुनिया के रिटेल ट्रांजैक्शन डेटा को देखते हुए, आप समझ सकते हैं कि यह कैंडिडेट जनरेशन कितना महंगा है। यहाँ APRIORI अपनी भूमिका निभाता है और कैंडिडेट लिस्ट की संख्या कम करने में मदद करता है, और अंत में उपयोगी नियम जनरेट होते हैं। अगले चरणों में, आप देखेंगे कि हम एसोसिएशन रूल माइनिंग के पहले चरण यानी फ़्रिक्वेंट आइटम-सेट जनरेशन के अंत तक कैसे पहुँचते हैं।
आपका अगला कदम सभी फ़्रिक्वेंट आइटम-सेट्स को सूचीबद्ध करना होगा। आप अंतिम नॉन-एम्प्टी फ़्रिक्वेंट आइटम-सेट लेंगे, जो इस उदाहरण में L2={I1, I2},{I2, I3} है। फिर उस फ़्रिक्वेंट आइटम-सेट लिस्ट में मौजूद आइटम-सेट्स के सभी नॉन-एम्प्टी सबसेट्स बनाएं। नीचे दी गई चित्रात्मक व्याख्या के अनुसार आगे बढ़ें:
आप ऊपर देख सकते हैं कि चार मजबूत नियम हैं। उदाहरण के लिए, ${I2}=>I3$ जिसका कॉन्फिडेंस 75% के बराबर है, बताता है कि जिन लोगों ने I2 खरीदा उनमें से 75% ने I3 भी खरीदा।
अब आपने संपूर्ण APRIORI एल्गोरिद्म सीख लिया है, जो डेटा माइनिंग में सबसे अधिक उपयोग किए जाने वाले एल्गोरिद्म्स में से एक है। अब कोड पर चलते हैं, फ्यूँ!
R का उपयोग करके MBA/Association Rule Mining लागू करना
इस ट्यूटोरियल में, आप UCI Machine Learning Repository का एक डेटासेट उपयोग करेंगे। डेटासेट का नाम Online-Retail है, और आप इसे यहाँ से डाउनलोड कर सकते हैं। यह डेटासेट 01/12/2010 से 09/12/2011 तक के लेनदेन डेटा को शामिल करता है, जो यूके-आधारित रजिस्टर्ड नॉन-स्टोर ऑनलाइन रिटेल का है। इसे और R के बिल्ट-इन डेटासेट्स को नहीं लेने का कारण यह है कि आपको रिटेल डेटा इसी रूप में मिलने की अधिक संभावना है, जिस पर आपको डेटा प्री-प्रोसेसिंग लागू करनी होगी।
Dataset Description
Attribute Information
Loading Libraries
सबसे पहले, आप आवश्यक लाइब्रेरियाँ लोड करेंगे। लाइब्रेरियों का एक संक्षिप्त विवरण (जो यहाँ से लिया गया है) नीचे दी गई तालिका में दिया गया है, ताकि आपको पता हो कि हर लाइब्रेरी क्या करती है:
arulesarulesViztidyversereadxlplyrggplot2knitrlubridateData Pre-processing
डाउनलोड की गई फ़ाइल से डेटासेट को R में पढ़ने के लिए
read_excel(path to file)का उपयोग करें।read_excel(path-to-file-with-filename)में फ़ाइल का पूरा पथ, फ़ाइल नाम सहित दें।अब, डेटाफ्रेम retail में 10 गुण होंगे, जिनमें दो अतिरिक्त गुण
DateऔरTimeहैं।MBA/एसोसिएशन रूल माइनिंग लागू करने से पहले, हमें डेटाफ्रेम को ट्रांजैक्शन डेटा में बदलना होगा ताकि एक चालान में साथ खरीदी गई सभी वस्तुएं एक ही पंक्ति में हों। आप
glimpseआउटपुट में देख सकते हैं कि प्रत्येक लेनदेन परमाणवी (atomic) रूप में है, यानी एक चालान से संबंधित सभी उत्पाद रिलेशनल डेटाबेस की तरह अलग-अलग हैं। इस फ़ॉर्मैट को singles फ़ॉर्मैट भी कहा जाता है।आपको जो करना है वह है
retailडेटाफ्रेम में डेटा को या तोCustomerID,CustomerIDऔरDateके आधार पर समूहित करना, या आपInvoiceNoऔरDateका उपयोग करके भी समूह बना सकते हैं। हमें इस ग्रुपिंग की आवश्यकता है, उस पर एक फ़ंक्शन लागू करना है और आउटपुट को दूसरे डेटाफ्रेम में स्टोर करना है। यहddplyसे किया जा सकता है।निम्नलिखित कोड की पंक्तियाँ एक ही
InvoiceNoऔरdateसे सभी उत्पादों को मिलाएँगी और उसInvoiceNoऔरdateके सभी उत्पादों को एक पंक्ति के रूप में जोड़ देंगी, जिसमें प्रत्येक आइटम,से अलग होगाअगले चरण में, क्योंकि रूल माइनिंग में InvoiceNo और Date का उपयोग नहीं होगा, आप इन्हें
NULLसेट कर सकते हैं।ट्रांजैक्शन डेटा के लिए इस फ़ॉर्मैट को basket फ़ॉर्मैट कहा जाता है। अगला कदम, आपको इस ट्रांजैक्शन डेटा को एक .csv (कॉमा सेपरेटेड वैल्यूज़) फ़ाइल में स्टोर करना है। इसके लिए,
write.csv()देखें कि आपका ट्रांजैक्शन डेटा सही फ़ॉर्म में है या नहीं:
अगले चरण में, आपको इस ट्रांजैक्शन डेटा को ट्रांजैक्शन क्लास की एक ऑब्जेक्ट में लोड करना होगा। यह
arulesपैकेज के R फ़ंक्शनread.transactionsका उपयोग करके किया जाता है।निम्न कोड पंक्ति basket फ़ॉर्मैट में मौजूद ट्रांजैक्शन डेटा फ़ाइल
D:/Documents/market_basket_transactions.csvलेगी और इसे ट्रांजैक्शन क्लास की ऑब्जेक्ट में बदल देगी।जब आप ऊपर दी गई कोड पंक्तियाँ चलाएँगे तो आपको अपने आउटपुट में बहुत से
EOF within quoted stringदिख सकते हैं, इसकी चिंता न करें।यदि आपके पास पहले से डेटाफ्रेम में ट्रांजैक्शन डेटा है, तो उसे ट्रांजैक्शन ऑब्जेक्ट में बदलने के लिए निम्न कोड पंक्ति का उपयोग करें:
trट्रांजैक्शन ऑब्जेक्ट देखें:summary(tr)एक बहुत उपयोगी कमांड है जो हमें हमारे ट्रांजैक्शन ऑब्जेक्ट के बारे में जानकारी देता है। आइए देखें कि ऊपर का आउटपुट क्या कहता है:यहाँ 22191 लेनदेन (पंक्तियाँ) और 7876 वस्तुएँ (कॉलम) हैं। ध्यान दें कि 7876 डेटासेट में शामिल उत्पाद विवरणों की संख्या है और 22191 लेनदेन इन वस्तुओं के संग्रह हैं।
घनत्व (Density) स्पार्स मैट्रिक्स में नॉन-ज़ीरो कोशिकाओं का प्रतिशत बताता है। आप इसे इस तरह भी कह सकते हैं कि खरीदी गई कुल वस्तुओं की संख्या, उस मैट्रिक्स में संभावित वस्तुओं की संख्या से विभाजित। आप डेंसिटी का उपयोग करके खरीदी गई वस्तुओं की संख्या निकाल सकते हैं: 22191x7876x0.001930725=337445
समरी आपको सबसे अधिक बार आने वाली वस्तुओं के बारे में भी बताती है।
एलीमेंट (आइटमसेट/ट्रांजैक्शन) लंबाई वितरण: यह बता रहा है कि 1-आइटमसेट, 2-आइटमसेट आदि के लिए कितने लेनदेन हैं। पहली पंक्ति वस्तुओं की संख्या बता रही है और दूसरी पंक्ति लेनदेन की संख्या।
उदाहरण के लिए, केवल 3598 लेनदेन एक वस्तु के लिए हैं, 1594 लेनदेन 2 वस्तुओं के लिए हैं, और एक लेनदेन में 419 वस्तुएँ हैं जो सबसे लंबा है।
आप
itemFrequencyPlotजनरेट कर सकते हैं जोitemMatrixपर आधारित ऑब्जेक्ट्स के वितरण को देखने के लिए आइटम फ्रीक्वेंसी बार प्लॉट बनाता है (जैसे,>transactionsया>itemsetsऔर>rulesमें वस्तुएँ), जो हमारे मामले में लागू है।इस
का पहला आर्ग्युमेंट प्लॉट किए जाने वाला ट्रांजैक्शन ऑब्जेक्ट है यानी
tr।topNआपको टॉप N उच्चतम फ्रीक्वेंसी वाली वस्तुएँ प्लॉट करने देता है।typetype="absolute"याtype="relative"हो सकता है। यदि absolute है तो यह प्रत्येक आइटम की संख्यात्मक फ्रीक्वेंसियाँ स्वतंत्र रूप से प्लॉट करेगा। यदि relative है तो यह प्लॉट करेगा कि अन्य के मुकाबले ये आइटम कितनी बार आए हैं।यह प्लॉट दिखाता है कि 'WHITE HANGING HEART T-LIGHT HOLDER' और 'REGENCY CAKESTAND 3 TIER' की बिक्री सबसे अधिक है। इसलिए 'SET OF 3 CAKE TINS PANTRY DESIGN' की बिक्री बढ़ाने के लिए रिटेलर इसे 'REGENCY CAKESTAND 3 TIER' के पास रख सकता/सकती है।
आप
itemFrequencyPlotके अन्य विकल्पों का पता यहाँ लगा सकते हैं।Generating Rules!
अगला कदम APRIORI एल्गोरिद्म का उपयोग करके नियमों का खनन (माइन) करना है। फ़ंक्शन
apriori()पैकेजarulesसे है।aprioritrको उस ट्रांजैक्शन ऑब्जेक्ट के रूप में लेगा जिस पर माइनिंग लागू की जानी है।parameterआपको min_sup और min_confidence सेट करने देगा।parameterके डिफ़ॉल्ट मान हैं: न्यूनतम सपोर्ट 0.1, न्यूनतम कॉन्फिडेंस 0.8, अधिकतम 10 आइटम (maxlen)।summary(association.rules)निम्नलिखित दिखाता है:Parameter Specification: min_sup=0.001 और min_confidence=0.8 के मान, और एक नियम में अधिकतम 10 आइटम।
कुल नियमों की संख्या: 49122 नियमों का सेट
रूल लंबाई का वितरण: 5 आइटम की लंबाई में सबसे अधिक नियम: 16424 और 2 आइटम की लंबाई में सबसे कम नियम: 105
क्वालिटी मापों का सारांश: सपोर्ट, कॉन्फिडेंस और लिफ्ट के लिए न्यूनतम और अधिकतम मान।
नियम बनाने में उपयोग की गई जानकारी: वह डेटा, सपोर्ट और कॉन्फिडेंस जो हमने एल्गोरिद्म को प्रदान किए।
चूँकि 49122 नियम हैं, आइए केवल शीर्ष 10 प्रिंट करें:
उपरोक्त आउटपुट का उपयोग करके, आप ऐसे विश्लेषण कर सकते हैं, जैसे:
'WOBBLY CHICKEN' खरीदने वाले 100% ग्राहकों ने 'METAL' भी खरीदा।
'BLACK TEA' खरीदने वाले 100% ग्राहकों ने 'SUGAR JARS' भी खरीदे।
नियमों की संख्या और आकार सीमित करना
आप जनरेट किए गए नियमों की संख्या और आकार को कैसे सीमित कर सकते हैं? आप यह
aprioriमेंparametersसेट करके कर सकते हैं। आप इन पैरामीटर्स को इस अनुसार सेट करते हैं कि आपको कितने नियम चाहिए। यदि आप मजबूत नियम चाहते हैं, तो आपconfका मान बढ़ा सकते हैं और अधिक लंबाई वाले नियमों के लिएmaxlenका मान अधिक दें।बेमानी (रेडंडेंट) नियम हटाना
आप बड़े नियमों के उपसमुच्चय (subsets) वाले नियम हटा सकते हैं। ऐसे नियम हटाने के लिए नीचे दिया गया कोड उपयोग करें:
which()उस वेक्टर में उन तत्त्वों की स्थिति लौटाता है जिनका मान TRUE होता है।colSums()डेटा फ्रेम और संख्यात्मक ऐरे के लिए पंक्ति और स्तंभ योग बनाता है।is.subset()निर्धारित करता है कि क्या एक वेक्टर के तत्त्व दूसरे के सभी तत्त्वों को समाहित करते हैंदिए गए आइटम्स से संबंधित नियम ढूंढना
कभी-कभी, आप किसी विशेष उत्पाद पर काम करना चाहेंगे। यदि आप जानना चाहते हैं कि आइटम X की खरीद पर किन कारणों का प्रभाव पड़ता है, तो आप
aprioriकमांड मेंappearanceविकल्प का उपयोग कर सकते हैं।appearanceहमें नियम के LHS (IF भाग) और RHS (THEN भाग) सेट करने के विकल्प देता है।उदाहरण के लिए, यह जानने के लिए कि ग्राहक 'METAL' खरीदने से पहले क्या खरीदते हैं, नीचे दी गई कोड लाइन चलाएँ:
इसी तरह, प्रश्न का उत्तर ढूंढने के लिए जिन ग्राहकों ने METAL खरीदा उन्होंने साथ में और क्या खरीदा.... आप METAL को lhs पर रखेंगे:
एसोसिएशन नियमों का विज़ुअलाइज़ेशन
क्योंकि डेटा के आधार पर सैकड़ों या हजारों नियम बनेंगे, आपको अपने निष्कर्षों को प्रस्तुत करने के लिए कुछ तरीके चाहिए। ऊपर
ItemFrequencyPlotपर पहले ही चर्चा हो चुकी है, जो सबसे अधिक बिकने वाले आइटम्स पाने का एक बेहतरीन तरीका है।यहाँ निम्नलिखित विज़ुअलाइज़ेशन पर चर्चा होगी:
स्कैटर-प्लॉट
एसोसिएशन नियमों का सीधा-सादा विज़ुअलाइज़ेशन
arulesVizपैकेज केplot()का उपयोग करके स्कैटर प्लॉट बनाना है। इसमें अक्षों पर Support और Confidence होते हैं। साथ ही, तीसरा माप Lift डिफ़ॉल्ट रूप से बिंदुओं के रंग (ग्रे स्तर) के लिए उपयोग होता है।ऊपर दिया गया प्लॉट दिखाता है कि उच्च लिफ्ट वाले नियमों का सपोर्ट कम होता है। आप प्लॉट के लिए निम्नलिखित विकल्पों का उपयोग कर सकते हैं:
rulesObject: प्लॉट किए जाने वाला नियम ऑब्जेक्टmeasure: नियम की रोचकता के माप। Support, Confidence, lift याmethodके मान के अनुसार इनका संयोजन हो सकता है।shading: बिंदुओं के रंग के लिए प्रयुक्त माप (Support, Confidence, lift)। डिफ़ॉल्ट Lift है।method: प्रयुक्त विज़ुअलाइज़ेशन विधि (scatterplot, two-key plot, matrix3D)।टू-की प्लॉट में क्रमशः x और y-अक्ष पर सपोर्ट और कॉन्फिडेंस होते हैं। यह रंग के लिए order का उपयोग करता है। Order नियम में आइटम्स की संख्या है।
इंटरैक्टिव स्कैटर-प्लॉट
नियमों को प्रस्तुत करने के लिए
arulesVizऔरplotlyका उपयोग करके एक शानदार इंटरैक्टिव प्लॉट बनाया जा सकता है। आप हर नियम पर होवर कर सकते हैं और सभी क्वालिटी माप (support, confidence और lift) देख सकते हैं।ग्राफ-आधारित विज़ुअलाइज़ेशन
ग्राफ-आधारित तकनीकें वर्टिसेज़ और एजेज़ का उपयोग करके एसोसिएशन नियमों को विज़ुअलाइज़ करती हैं, जहाँ वर्टिसेज़ पर आइटम नाम लगे होते हैं, और आइटम सेट्स या नियमों को वर्टिसेज़ के दूसरे सेट के रूप में दर्शाया जाता है। आइटम्स को आइटम-सेट्स/नियमों से निर्देशित तीरों के माध्यम से जोड़ा जाता है। आइटम्स से नियम वर्टेक्स की ओर इशारा करते तीर LHS आइटम्स को इंगित करते हैं और नियम से आइटम की ओर तीर RHS को दर्शाता है। वर्टिसेज़ का आकार और रंग अक्सर इंटरेस्ट मापों का प्रतिनिधित्व करते हैं।
ग्राफ प्लॉट नियमों को विज़ुअलाइज़ करने का बेहतरीन तरीका हैं लेकिन नियमों की संख्या बढ़ने पर ये भीड़भाड़ वाले हो जाते हैं। इसलिए ग्राफ-आधारित विज़ुअलाइज़ेशन के साथ कम नियमों का विज़ुअलाइज़ेशन करना बेहतर है।
आइए
subRulesसे सबसे अधिक कॉन्फिडेंस वाले 10 नियम चुनते हैं।अब, एक इंटरैक्टिव ग्राफ प्लॉट करें:
नोट: आप
plotमेंengine=htmlwidgetपैरामीटर का उपयोग करके अपने सभी प्लॉट्स को इंटरैक्टिव बना सकते हैंarulesVizसे एसोसिएशन नियमों के सेट के लिए ग्राफ्स को GraphML फ़ॉर्मेट में या Graphviz dot-file के रूप में एक्सपोर्ट किया जा सकता है ताकि उन्हें Gephi जैसे टूल्स में एक्सप्लोर किया जा सके। उदाहरण के लिए, सबसे अधिक लिफ्ट वाले 1000 नियमों को इस प्रकार एक्सपोर्ट किया जाता है:व्यक्तिगत नियम अभिविन्यास
इसे पैरेलल कोऑर्डिनेट्स प्लॉट भी कहा जाता है। यह देखने में उपयोगी है कि कौन से उत्पाद किन आइटम्स के साथ किस तरह की बिक्री का कारण बनते हैं।
जैसा कि ऊपर बताया गया, RHS परिणाम (Consequent) है या वह आइटम जिसे हम मानते हैं कि ग्राहक खरीदेगा; स्थितियाँ LHS में होती हैं जहाँ 2 हमारी टोकरी (basket) में सबसे हाल का जोड़ है और 1 वह आइटम है जो पहले से था।
सबसे ऊपर वाले तीर को देखें। यह दिखाता है कि जब मेरे शॉपिंग कार्ट में 'CHILDS GARDEN SPADE PINK' और 'CHILDS GARDEN RAKE PINK' होते हैं, तो मैं इनके साथ 'CHILDS GARDEN RAKE BLUE' खरीदने की भी संभावना रखता हूँ।
निष्कर्ष
बधाई हो! आपने APRIORI सीखा, जो डेटा माइनिंग में सबसे ज़्यादा उपयोग किए जाने वाले एल्गोरिद्म्स में से एक है। आपने एसोसिएशन रूल माइनिंग, उसके अनुप्रयोगों, और रिटेलिंग में उसके अनुप्रयोग—जिसे मार्केट बास्केट विश्लेषण कहा जाता है—के बारे में सब कुछ सीखा। अब आप R में मार्केट बास्केट विश्लेषण लागू करने और अपने एसोसिएशन नियमों को बेहतरीन प्लॉट्स के साथ प्रस्तुत करने में भी सक्षम हैं! सीखते रहें!
संदर्भ:
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
यदि आप R के बारे में और सीखना चाहते हैं, तो DataCamp का Importing and Managing Financial Data in R कोर्स लें।