Chuỗi Markov là một hệ thống toán học trải qua các lần chuyển từ trạng thái này sang trạng thái khác theo một tập hợp quy tắc xác suất cho trước. Chuỗi Markov là các quá trình ngẫu nhiên (stochastic), nhưng khác ở chỗ chúng phải không có "bộ nhớ". Tức là, xác suất của trạng thái kế tiếp của hệ thống chỉ phụ thuộc vào trạng thái hiện tại và không phụ thuộc vào bất kỳ trạng thái trước đó nào. Điều này được gọi là tính chất Markov (như dưới đây):
Để có một mô hình chuỗi Markov vận hành, điều cốt yếu là phải xác định một ma trận chuyển trạng thái Pt. Ma trận chuyển trạng thái chứa thông tin về xác suất chuyển giữa các trạng thái khác nhau trong hệ thống. Để một ma trận chuyển trạng thái hợp lệ, mỗi hàng phải là một véc-tơ xác suất, và tổng của tất cả các phần tử trong hàng đó phải bằng 1.
Ma trận chuyển trạng thái có tính chất là tích của các ma trận liên tiếp có thể mô tả các xác suất chuyển trong một khoảng thời gian. Do đó, có thể mô hình hóa mức độ có khả năng ở một trạng thái nhất định sau k bước bằng cách tính như sau:
Hướng dẫn này cũng đề cập đến chuỗi Markov hấp thụ. Những chuỗi này xuất hiện khi có ít nhất một trạng thái mà một khi đã đạt tới thì xác suất ở lại đó là 1 (không thể rời khỏi).
Chuỗi Markov hấp thụ là gì?
Chuỗi Markov hấp thụ là một chuỗi Markov trong đó không thể rời khỏi một số trạng thái sau khi đã vào. Tuy nhiên, đây chỉ là một trong các điều kiện tiên quyết để một chuỗi Markov là chuỗi Markov hấp thụ. Để là chuỗi Markov hấp thụ, tất cả các trạng thái tạm (transient) khác phải có thể đi đến trạng thái hấp thụ với xác suất bằng 1.
Chuỗi Markov hấp thụ có các tính chất riêng biệt phân biệt chúng với chuỗi Markov thuần nhất theo thời gian (time-homogeneous) thông thường. Một trong các tính chất đó là cách viết ma trận chuyển trạng thái. Với một chuỗi có t trạng thái tạm và r trạng thái hấp thụ, ma trận chuyển trạng thái P có thể được viết dưới dạng chuẩn tắc như sau:
Trong đó Q là ma trận t x t, R là ma trận t x r, 0 là ma trận không r x t, và Ir là ma trận đơn vị r x r. Đặc biệt, việc phân rã ma trận chuyển thành ma trận cơ bản cho phép thực hiện một số phép tính như số bước kỳ vọng cho đến khi bị hấp thụ từ mỗi trạng thái. Ma trận cơ bản N được tính như sau:
Trong đó It là ma trận đơn vị t x t
Số bước kỳ vọng dựa trên khái niệm tính tuyến tính của kỳ vọng, và được tính như sau:
Trong đó 1 là một véc-tơ cột có độ dài bằng số trạng thái tạm với mọi phần tử đều bằng 1
Hơn nữa, ta có thể tính xác suất bị hấp thụ bởi một trạng thái hấp thụ cụ thể khi xuất phát từ bất kỳ trạng thái tạm nào. Xác suất này được tính như sau:
Phân tích tốc độ bán hàng
Chuỗi Markov được sử dụng rộng rãi trong nhiều lĩnh vực như tài chính, lý thuyết trò chơi và di truyền học. Tuy nhiên, trọng tâm của hướng dẫn này là cách dùng chúng để mô hình hóa độ dài quy trình bán hàng của một công ty vì đây có thể là một quá trình Markov. Điều này đã được kiểm chứng bằng cách kiểm tra liệu các chuỗi mô tả các bước mà một thương vụ trải qua trước khi chốt thành công có tuân theo tính chất Markov hay không.
Phân tích này giả định rằng các xác suất một thương vụ tiến triển trong quy trình bán hàng của chúng tôi là không đổi theo từng tháng đối với một ngành nhất định để có thể dùng chuỗi Markov thuần nhất theo thời gian. Tức là một chuỗi Markov trong đó các xác suất chuyển giữa các trạng thái giữ nguyên theo thời gian (khi số bước k tăng).
Các xác suất được tính như sau:
Xác suất một thương vụ chuyển từ các giai đoạn của đại diện bán hàng (sales representative) sang các giai đoạn của account executive so với việc ở lại đó trong một tháng nhất định.
Xác suất một thương vụ chuyển từ các giai đoạn của account executive sang một thương vụ chốt thành công so với việc ở lại đó trong một tháng nhất định.
Xác suất ở lại trong trạng thái đã chốt thành công, bằng 1. Do đó, trạng thái chốt (closed) là trạng thái hấp thụ.
Phân tích này được thực hiện bằng ngôn ngữ lập trình R. R có một gói tiện dụng gọi là Markov Chain có thể xử lý nhiều loại chuỗi Markov.
Trước hết, chúng tôi kiểm tra xem các chuỗi bán hàng của mình có tuân theo tính chất Markov hay không. Để làm điều đó, gói Markov Chain có một hàm hữu ích là verifyMarkovProperty() kiểm tra liệu một chuỗi sự kiện cho trước có tuân theo tính chất Markov hay không bằng cách thực hiện các kiểm định Chi-bình phương trên một loạt bảng chéo được suy ra từ chuỗi sự kiện. Giá trị p lớn cho thấy không nên bác bỏ giả thuyết không rằng chuỗi tuân theo tính chất Markov. Dưới đây là một chuỗi bán hàng ví dụ cho biết mỗi tháng một thương vụ đang ở đâu từ cuộc gặp đầu tiên cho đến khi chốt:
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)Được hỗ trợ bởi
## Testing markovianity property on given data sequence## Chi - square statistic is: 0.5733333 degrees of freedom are: 27 and corresponding p-value is: 1Được hỗ trợ bởi
Vì giá trị p hiển thị lớn hơn 0,05, chúng tôi không bác bỏ giả thuyết không rằng chuỗi này tuân theo tính chất Markov.
Sau khi xác minh điều đó, chúng tôi vẽ cấu trúc chuỗi Markov cùng với các xác suất chuyển được suy ra từ dữ liệu. Đoạn mã này khởi tạo một đối tượng chuỗi Markov bằng cách định nghĩa ma trận chuyển trạng thái cũng như tên các trạng thái. Nó cũng hiển thị chuỗi Markov và các xác suất chuyển.
source('TransProb.R')
source('MatDataBase.R')
source('GatherTransMat.R')
transElec <- GatherTransMat('Manufacturing','Between 100M and 500M','Between 500 and 1k')Được hỗ trợ bởi
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)Được hỗ trợ bởi
Vì chúng ta có một chuỗi Markov hấp thụ, hãy tính thời gian kỳ vọng cho đến khi bị hấp thụ. Phần tử thứ nhất của véc-tơ sẽ cho ra số bước kỳ vọng cho đến khi chốt kể từ phễu SDR, trong khi phần tử thứ hai sẽ cho ra số bước kỳ vọng nếu bắt đầu từ phễu 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)Được hỗ trợ bởi
Tuy nhiên, chúng ta cũng có thể trực quan hóa cách các xác suất thay đổi khi số bước tăng lên để đối chiếu với số bước kỳ vọng. Do đó, chúng tôi cũng kiểm tra các xác suất một thương vụ ở trong bất kỳ giai đoạn nào trong ba giai đoạn trong 24 bước.
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 in1: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))Được hỗ trợ bởi
Nếu kết hợp cả hai kết quả, có vẻ rõ ràng rằng trạng thái CW trở thành trạng thái có khả năng cao nhất sau 6–9 bước. Do các xác suất chuyển là xác suất chuyển theo tháng, bạn có thể lập luận rằng tốc độ bán hàng điển hình từ lúc đặt lịch hẹn ban đầu đến khi chốt thành công một thương vụ cho ngành đó có thể nằm trong khoảng 6 đến 9 tháng. Đó là một quy trình bán hàng khá dài.
Kết luận
Mục tiêu của phân tích này là cho thấy các nguyên lý cơ bản của chuỗi Markov và chuỗi Markov hấp thụ có thể được dùng để trả lời một câu hỏi liên quan đến kinh doanh như thế nào. Trong trường hợp này, kết quả chuỗi Markov khá chính xác bất chấp giả định thuần nhất theo thời gian, vì các phân tích thực nghiệm tiếp theo cho thấy tốc độ bán hàng trung bình của ngành được sử dụng trong phân tích này là 208 ngày, tức gần 7 tháng. Hy vọng ví dụ này sẽ giúp bạn tiếp tục khám phá chuỗi Markov và áp dụng chúng vào các câu hỏi kinh doanh của mình.
Nếu bạn quan tâm học thêm về R, hãy tham gia khóa Intermediate R của DataCamp.
Chuỗi Markov là gì?
Chuỗi Markov là một hệ thống toán học trải qua các lần chuyển từ trạng thái này sang trạng thái khác theo một tập hợp quy tắc xác suất cho trước. Chuỗi Markov là các quá trình ngẫu nhiên (stochastic), nhưng khác ở chỗ chúng phải không có "bộ nhớ". Tức là, xác suất của trạng thái kế tiếp của hệ thống chỉ phụ thuộc vào trạng thái hiện tại và không phụ thuộc vào bất kỳ trạng thái trước đó nào. Điều này được gọi là tính chất Markov (như dưới đây):
Để có một mô hình chuỗi Markov vận hành, điều cốt yếu là phải xác định một ma trận chuyển trạng thái Pt. Ma trận chuyển trạng thái chứa thông tin về xác suất chuyển giữa các trạng thái khác nhau trong hệ thống. Để một ma trận chuyển trạng thái hợp lệ, mỗi hàng phải là một véc-tơ xác suất, và tổng của tất cả các phần tử trong hàng đó phải bằng 1.
Ma trận chuyển trạng thái có tính chất là tích của các ma trận liên tiếp có thể mô tả các xác suất chuyển trong một khoảng thời gian. Do đó, có thể mô hình hóa mức độ có khả năng ở một trạng thái nhất định sau k bước bằng cách tính như sau:
Hướng dẫn này cũng đề cập đến chuỗi Markov hấp thụ. Những chuỗi này xuất hiện khi có ít nhất một trạng thái mà một khi đã đạt tới thì xác suất ở lại đó là 1 (không thể rời khỏi).
Chuỗi Markov hấp thụ là gì?
Chuỗi Markov hấp thụ là một chuỗi Markov trong đó không thể rời khỏi một số trạng thái sau khi đã vào. Tuy nhiên, đây chỉ là một trong các điều kiện tiên quyết để một chuỗi Markov là chuỗi Markov hấp thụ. Để là chuỗi Markov hấp thụ, tất cả các trạng thái tạm (transient) khác phải có thể đi đến trạng thái hấp thụ với xác suất bằng 1.
Chuỗi Markov hấp thụ có các tính chất riêng biệt phân biệt chúng với chuỗi Markov thuần nhất theo thời gian (time-homogeneous) thông thường. Một trong các tính chất đó là cách viết ma trận chuyển trạng thái. Với một chuỗi có t trạng thái tạm và r trạng thái hấp thụ, ma trận chuyển trạng thái P có thể được viết dưới dạng chuẩn tắc như sau:
Trong đó Q là ma trận t x t, R là ma trận t x r, 0 là ma trận không r x t, và Ir là ma trận đơn vị r x r. Đặc biệt, việc phân rã ma trận chuyển thành ma trận cơ bản cho phép thực hiện một số phép tính như số bước kỳ vọng cho đến khi bị hấp thụ từ mỗi trạng thái. Ma trận cơ bản N được tính như sau:
Trong đó It là ma trận đơn vị t x t
Số bước kỳ vọng dựa trên khái niệm tính tuyến tính của kỳ vọng, và được tính như sau:
Trong đó 1 là một véc-tơ cột có độ dài bằng số trạng thái tạm với mọi phần tử đều bằng 1
Hơn nữa, ta có thể tính xác suất bị hấp thụ bởi một trạng thái hấp thụ cụ thể khi xuất phát từ bất kỳ trạng thái tạm nào. Xác suất này được tính như sau:
Phân tích tốc độ bán hàng
Chuỗi Markov được sử dụng rộng rãi trong nhiều lĩnh vực như tài chính, lý thuyết trò chơi và di truyền học. Tuy nhiên, trọng tâm của hướng dẫn này là cách dùng chúng để mô hình hóa độ dài quy trình bán hàng của một công ty vì đây có thể là một quá trình Markov. Điều này đã được kiểm chứng bằng cách kiểm tra liệu các chuỗi mô tả các bước mà một thương vụ trải qua trước khi chốt thành công có tuân theo tính chất Markov hay không.
Phân tích này giả định rằng các xác suất một thương vụ tiến triển trong quy trình bán hàng của chúng tôi là không đổi theo từng tháng đối với một ngành nhất định để có thể dùng chuỗi Markov thuần nhất theo thời gian. Tức là một chuỗi Markov trong đó các xác suất chuyển giữa các trạng thái giữ nguyên theo thời gian (khi số bước k tăng).
Các xác suất được tính như sau:
Phân tích này được thực hiện bằng ngôn ngữ lập trình R. R có một gói tiện dụng gọi là Markov Chain có thể xử lý nhiều loại chuỗi Markov.
Trước hết, chúng tôi kiểm tra xem các chuỗi bán hàng của mình có tuân theo tính chất Markov hay không. Để làm điều đó, gói Markov Chain có một hàm hữu ích là verifyMarkovProperty() kiểm tra liệu một chuỗi sự kiện cho trước có tuân theo tính chất Markov hay không bằng cách thực hiện các kiểm định Chi-bình phương trên một loạt bảng chéo được suy ra từ chuỗi sự kiện. Giá trị p lớn cho thấy không nên bác bỏ giả thuyết không rằng chuỗi tuân theo tính chất Markov. Dưới đây là một chuỗi bán hàng ví dụ cho biết mỗi tháng một thương vụ đang ở đâu từ cuộc gặp đầu tiên cho đến khi chốt:
Vì giá trị p hiển thị lớn hơn 0,05, chúng tôi không bác bỏ giả thuyết không rằng chuỗi này tuân theo tính chất Markov.
Sau khi xác minh điều đó, chúng tôi vẽ cấu trúc chuỗi Markov cùng với các xác suất chuyển được suy ra từ dữ liệu. Đoạn mã này khởi tạo một đối tượng chuỗi Markov bằng cách định nghĩa ma trận chuyển trạng thái cũng như tên các trạng thái. Nó cũng hiển thị chuỗi Markov và các xác suất chuyển.
Vì chúng ta có một chuỗi Markov hấp thụ, hãy tính thời gian kỳ vọng cho đến khi bị hấp thụ. Phần tử thứ nhất của véc-tơ sẽ cho ra số bước kỳ vọng cho đến khi chốt kể từ phễu SDR, trong khi phần tử thứ hai sẽ cho ra số bước kỳ vọng nếu bắt đầu từ phễu AE.
Tuy nhiên, chúng ta cũng có thể trực quan hóa cách các xác suất thay đổi khi số bước tăng lên để đối chiếu với số bước kỳ vọng. Do đó, chúng tôi cũng kiểm tra các xác suất một thương vụ ở trong bất kỳ giai đoạn nào trong ba giai đoạn trong 24 bước.
Nếu kết hợp cả hai kết quả, có vẻ rõ ràng rằng trạng thái CW trở thành trạng thái có khả năng cao nhất sau 6–9 bước. Do các xác suất chuyển là xác suất chuyển theo tháng, bạn có thể lập luận rằng tốc độ bán hàng điển hình từ lúc đặt lịch hẹn ban đầu đến khi chốt thành công một thương vụ cho ngành đó có thể nằm trong khoảng 6 đến 9 tháng. Đó là một quy trình bán hàng khá dài.
Kết luận
Mục tiêu của phân tích này là cho thấy các nguyên lý cơ bản của chuỗi Markov và chuỗi Markov hấp thụ có thể được dùng để trả lời một câu hỏi liên quan đến kinh doanh như thế nào. Trong trường hợp này, kết quả chuỗi Markov khá chính xác bất chấp giả định thuần nhất theo thời gian, vì các phân tích thực nghiệm tiếp theo cho thấy tốc độ bán hàng trung bình của ngành được sử dụng trong phân tích này là 208 ngày, tức gần 7 tháng. Hy vọng ví dụ này sẽ giúp bạn tiếp tục khám phá chuỗi Markov và áp dụng chúng vào các câu hỏi kinh doanh của mình.
Nếu bạn quan tâm học thêm về R, hãy tham gia khóa Intermediate R của DataCamp.
Hãy xem Chuỗi Markov trong Python: Hướng dẫn cho người mới bắt đầu.