कोर्स
मार्कोव चेन क्या है?
मार्कोव चेन एक गणितीय प्रणाली है जो एक निर्धारित प्रायिकता नियमों के सेट के अनुसार एक अवस्था से दूसरी अवस्था में संक्रमण करती है। मार्कोव चेन स्टोकेस्टिक प्रक्रियाएँ हैं, लेकिन इनमें एक महत्वपूर्ण अंतर यह है कि इनमें कोई “स्मृति” नहीं होती। अर्थात, अगली अवस्था की प्रायिकता केवल वर्तमान अवस्था पर निर्भर करती है, न कि किसी पूर्व अवस्था पर। इसे ही मार्कोव गुण कहते हैं (नीचे दर्शाया गया):
एक कार्यात्मक मार्कोव चेन मॉडल बनाने के लिए संक्रमण मैट्रिक्स Pt को परिभाषित करना आवश्यक है। संक्रमण मैट्रिक्स में प्रणाली की विभिन्न अवस्थाओं के बीच संक्रमण की प्रायिकताओं की जानकारी होती है। किसी संक्रमण मैट्रिक्स के वैध होने के लिए, प्रत्येक पंक्ति एक प्रायिकता वेक्टर होनी चाहिए और उसके सभी पदों का योग 1 होना चाहिए।
संक्रमण मैट्रिसेज़ का गुण यह है कि क्रमिक मैट्रिसेज़ का गुणन किसी समय-अंतराल में संक्रमण प्रायिकताओं का वर्णन कर सकता है। इसलिए, कोई व्यक्ति निम्नलिखित गणना करके k चरणों के बाद किसी निश्चित अवस्था में होने की प्रायिकता का मॉडल बना सकता है:
यह ट्यूटोरियल एब्ज़ॉर्बिंग मार्कोव चेन को भी कवर करेगा। ये वे चेन हैं जिनमें कम से कम एक ऐसी अवस्था होती है कि एक बार उस तक पहुँचने के बाद उस पर बने रहने की प्रायिकता 1 होती है (आप उससे बाहर नहीं जा सकते)।
एब्ज़ॉर्बिंग मार्कोव चेन क्या हैं?
एब्ज़ॉर्बिंग मार्कोव चेन वह मार्कोव चेन है जिसमें कुछ अवस्थाओं में प्रवेश करने के बाद उन्हें छोड़ना असंभव होता है। हालांकि, यह केवल एक पूर्वापेक्षा है। किसी मार्कोव चेन के एब्ज़ॉर्बिंग होने के लिए, सभी अन्य अस्थायी (transient) अवस्थाएँ प्रायिकता 1 के साथ एब्ज़ॉर्बिंग अवस्था तक पहुँचने में सक्षम होनी चाहिए।
एब्ज़ॉर्बिंग मार्कोव चेन में कुछ विशिष्ट गुण होते हैं जो उन्हें सामान्य समय-समरूप (time-homogeneous) मार्कोव चेन से अलग करते हैं। इन गुणों में से एक संक्रमण मैट्रिक्स को लिखने का तरीका है। यदि किसी चेन में t अस्थायी अवस्थाएँ और r एब्ज़ॉर्बिंग अवस्थाएँ हैं, तो संक्रमण मैट्रिक्स P को निम्नलिखित कैनोनिकल रूप में लिखा जा सकता है:
जहाँ Q एक t x t मैट्रिक्स है, R एक t x r मैट्रिक्स है, 0 एक r x t शून्य मैट्रिक्स है, और Ir एक r x r आइडेंटिटी मैट्रिक्स है। विशेष रूप से, संक्रमण मैट्रिक्स का मूलभूत (fundamental) मैट्रिक्स में विघटन ऐसी गणनाओं की अनुमति देता है जैसे प्रत्येक अवस्था से एब्ज़ॉर्प्शन तक अपेक्षित चरणों की संख्या। मूलभूत मैट्रिक्स N इस प्रकार निकाला जाता है:
जहाँ It एक t x t आइडेंटिटी मैट्रिक्स है
अपेक्षित चरणों की संख्या अपेक्षा की रैखिकता (linearity of expectation) की अवधारणा पर आधारित है, और इसे इस प्रकार गणना किया जाता है:
जहाँ 1 एक कॉलम वेक्टर है जिसकी लंबाई अस्थायी अवस्थाओं की संख्या के बराबर है और जिसके सभी प्रविष्टियाँ 1 हैं
इसके अलावा, हम किसी भी दी गई अस्थायी अवस्था से शुरू करते हुए किसी विशिष्ट एब्ज़ॉर्बिंग अवस्था द्वारा एब्ज़ॉर्ब होने की प्रायिकता भी गणना कर सकते हैं। यह प्रायिकता इस प्रकार निकाली जाती है:
बिक्री वेग का विश्लेषण
मार्कोव चेन का उपयोग वित्त, गेम थ्योरी और आनुवंशिकी सहित कई क्षेत्रों में व्यापक रूप से होता है। हालांकि, इस ट्यूटोरियल का आधार यह है कि किसी कंपनी की बिक्री प्रक्रिया की लंबाई को मॉडल करने के लिए उनका उपयोग कैसे किया जाए, क्योंकि यह एक मार्कोव प्रक्रिया हो सकती है। वास्तव में, इसे इस तरह सत्यापित किया गया कि सौदे के सफलतापूर्वक बंद होने से पहले वह किन-किन चरणों से गुज़रा, उनका अनुक्रम मार्कोव गुण का पालन करता है या नहीं।
इस विश्लेषण में यह मान लिया गया कि किसी दिए गए उद्योग के लिए समय-समरूप मार्कोव चेन का उपयोग करने हेतु हमारे बिक्री प्रक्रिया में किसी सौदे के आगे बढ़ने की प्रायिकताएँ महीने-दर-महीने स्थिर रहती हैं। अर्थात, ऐसी मार्कोव चेन जिसमें अवस्थाओं के बीच संक्रमण प्रायिकताएँ समय के साथ स्थिर रहती हैं (चरणों की संख्या k बढ़ने पर भी)।
गणना की गई प्रायिकताएँ इस प्रकार थीं:
- किसी दिए गए महीने में, किसी सौदे के हमारे सेल्स रिप्रेजेंटेटिव चरणों से हमारे अकाउंट एग्जीक्यूटिव चरणों की ओर बढ़ने बनाम उन्हीं पर बने रहने की प्रायिकता।
- किसी दिए गए महीने में, किसी सौदे के हमारे अकाउंट एग्जीक्यूटिव चरणों से सफलतापूर्वक बंद हुए सौदे में जाने बनाम उन्हीं में बने रहने की प्रायिकता।
- सफलतापूर्वक बंद हुए सौदे में बने रहने की प्रायिकता, जो 1 थी। इसलिए, “closed” एक एब्ज़ॉर्बिंग अवस्था बन जाती है।
यह विश्लेषण R प्रोग्रामिंग भाषा का उपयोग करके किया गया था। R में Markov Chain नाम का एक उपयोगी पैकेज है जो मार्कोव चेन के कई प्रकारों को संभाल सकता है।
शुरुआत में, हमने यह जाँचा कि हमारी बिक्री श्रेणियाँ (sequences) मार्कोव गुण का पालन करती हैं या नहीं। इसी उद्देश्य के लिए, Markov Chain पैकेज में verifyMarkovProperty() नाम का एक उपयोगी फ़ंक्शन है जो घटनाओं के किसी दिए गए अनुक्रम पर, उससे व्युत्पन्न कंटिन्जेंसी टेबल्स की शृंखला पर काई-स्क्वेयर (Chi-square) परीक्षण करके यह जाँचता है कि वह मार्कोव गुण का पालन करता है या नहीं। बड़े p-मूल्य इंगित करते हैं कि मार्कोव गुण का पालन करने वाले अनुक्रम की शून्य परिकल्पना को अस्वीकार नहीं किया जाना चाहिए। नीचे एक उदाहरण बिक्री अनुक्रम दिया गया है जो दर्शाता है कि पहली मीटिंग से लेकर सौदा बंद होने तक हर महीने वह कहाँ था:
library(markovchain)
library(dplyr)
# SDR Funnel is our sales representative stages, AE Funnel is our account executive stages, and CW is a successfully closed deal
seq <- c('SDR Funnel','SDR Funnel','AE Funnel','AE Funnel','AE Funnel','AE Funnel','AE Funnel','AE Funnel','CW')
verifyMarkovProperty(seq)
## Testing markovianity property on given data sequence
## Chi - square statistic is: 0.5733333 degrees of freedom are: 27 and corresponding p-value is: 1
क्योंकि प्रदर्शित p-मूल्य 0.05 से अधिक है, हम इस शून्य परिकल्पना को अस्वीकार नहीं करते कि अनुक्रम मार्कोव गुण का पालन करता है।
यह सत्यापित होने के बाद, हमने मार्कोव चेन संरचना को, हमारे डेटा से निकाली गई संक्रमण प्रायिकताओं के साथ, प्लॉट किया। यह कोड संक्रमण मैट्रिक्स के साथ-साथ अवस्थाओं के नाम परिभाषित कर एक मार्कोव चेन ऑब्जेक्ट बनाता है। यह मार्कोव चेन और संक्रमण प्रायिकताओं को प्रदर्शित भी करता है।
source('TransProb.R')
source('MatDataBase.R')
source('GatherTransMat.R')
transElec <- GatherTransMat('Manufacturing','Between 100M and 500M', 'Between 500 and 1k')
print(transElec)
markov2 <- new('markovchain',
transitionMatrix = transElec, # These are the transition probabilities of a random industry
states = c('SDR','AE','CW'))
layout <- matrix(c(0,0,0,1,1,0), ncol = 2, byrow = TRUE)
plot(markov2, node.size = 10, layout = layout)
## [,1] [,2] [,3]
## [1,] 0.5573215 0.4426785 0.0000000
## [2,] 0.0000000 0.8678118 0.1321882
## [3,] 0.0000000 0.0000000 1.0000000

क्योंकि हमारे पास एक एब्ज़ॉर्बिंग मार्कोव चेन है, हम एब्ज़ॉर्प्शन तक अपेक्षित समय की गणना करते हैं। वेक्टर का पहला प्रविष्टि SDR फ़नल से बंद होने तक अपेक्षित चरणों की संख्या बताएगा जबकि दूसरा प्रविष्टि दर्शाएगा कि यदि हम AE फ़नल से शुरू करें तो अपेक्षित चरण कितने होंगे।
# Extract Q from the transition matrix
Q <- transElec[1:2,1:2]
# Generate It
It <- diag(2)
#Calculate fundamental matrix
N <- solve(It-Q)
#Generate column vector of 1s
one <- t(t(c(1,1)))
# Calculate the expected steps by matrix multiplication
expected <- N%*%one
print(expected)
## [,1]
## [1,] 9.823945
## [2,] 7.564969
हालाँकि, हम यह भी दर्शा सकते हैं कि चरणों की संख्या बढ़ने पर प्रायिकताएँ कैसे बदलती हैं, ताकि अपेक्षित चरणों की संख्या के साथ तुलना की जा सके। इसलिए, हमने 24 चरणों तक किसी सौदे के तीनों चरणों में होने की प्रायिकताओं की भी जाँच की।
library(ggplot2)
initState <- c(1,0,0) # The initial state will be SDR Funnel (mimicking setting an initial discovery appointment)
# Initiate probability vectors
SDRProb <- c()
AEProb <- c()
CW <- c()
# Calculate probabilities for 24 steps.
for(k in 1:24){
nsteps <- initState*markov2^k
SDRProb[k] <- nsteps[1,1]
AEProb[k] <- nsteps[1,2]
CW[k] <- nsteps[1,3]
}
# Make dataframes and merge them
SDRProb <- as.data.frame(SDRProb)
SDRProb$Group <- 'SDR'
SDRProb$Iter <- 1:24
names(SDRProb)[1] <- 'Value'
AEProb <- as.data.frame(AEProb)
AEProb$Group <- 'AE'
AEProb$Iter <- 1:24
names(AEProb)[1] <- 'Value'
CW <- as.data.frame(CW)
CW$Group <- 'CW'
CW$Iter <- 1:24
names(CW)[1] <- 'Value'
steps <- rbind(SDRProb,AEProb,CW)
# Plot the probabilities using ggplot
ggplot(steps, aes(x = Iter, y = Value, col = Group))+
geom_line() +
xlab('Chain Step') +
ylab('Probability') +
ggtitle('24 Step Chain Probability Prediction')+
theme(plot.title = element_text(hjust = 0.5))

यदि हम दोनों परिणामों को मिलाएँ, तो यह स्पष्ट लगता है कि 6–9 चरणों के बाद CW अवस्था सबसे अधिक संभावित हो जाती है। यह देखते हुए कि संक्रमण प्रायिकताएँ मासिक संक्रमण प्रायिकताएँ हैं, आप तर्क दे सकते हैं कि उस उद्योग के लिए प्रारंभिक नियुक्ति से सौदे के सफलतापूर्वक बंद होने तक सामान्य बिक्री वेग 6 से 9 महीनों के बीच हो सकता है। यह काफ़ी लंबी बिक्री प्रक्रिया है।
निष्कर्ष
इस विश्लेषण का उद्देश्य यह दिखाना था कि व्यवसाय से संबंधित प्रश्न का उत्तर देने के लिए मार्कोव चेन और एब्ज़ॉर्बिंग मार्कोव चेन के बुनियादी सिद्धांतों का उपयोग कैसे किया जा सकता है। इस मामले में, समय-समरूप धारणाओं के बावजूद मार्कोव चेन के परिणाम काफ़ी सटीक रहे, क्योंकि आगे के अनुभवजन्य विश्लेषण से पता चला कि इस विश्लेषण में उपयोग किए गए उद्योग के लिए औसत बिक्री वेग 208 दिन था, जो लगभग 7 महीने हैं। आशा है, यह उदाहरण आपको स्वयं मार्कोव चेन को और अधिक खोजने और उन्हें अपने व्यावसायिक प्रश्नों पर लागू करने के लिए प्रेरित करेगा।
यदि आप R के बारे में और सीखने में रुचि रखते हैं, तो DataCamp का Intermediate R कोर्स करें।
हमारा Markov Chains in Python: Beginner Tutorial देखें।