Python을 사용한 Footprint Matrix 기반 프로세스 적합도 검증 연습 (단방향 모델 기준)

728x90

undraw_skateboard_d6or.png

개요

프로세스 모델 검증 방법 중 Footprint 기반의 Conformance Check를 구현하기 위한 코드 스니펫이고 보통 프로세스 모델은 여러가지 노드로 분기될 수 있는데 여기서는 단방향 프로세스 모델을 가정하고 모델과 로그를 모두 리스트로 생성해서 쉽게 작성됨. 즉, 실제 상황에서는 대부분 유효하지 않고, 커버하지 못하는 상황이 많음. 그냥 단방향 모델 상황에서 대략적인 정합도를 볼 수 있다 정도에 의미 부여가 될 듯. 상세한 내용은 레퍼런스 링크를 참고.

 

코드

# Check FootPrint Conformance
# 모델과 로그 Trace를 리스트로 구현
model = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
log = ['a', 'b', 'c', 'd', 'f', 'g', 'e']
model_list_self = []
log_list_self = []
# 모델 경우의 수 파악
for i in range(0, len(model)-1):
next_value = i + 1
if next_value <= len(model)-1:
tuple_element = (model[i], model[next_value])
model_list_self.append(tuple_element)
else:
pass
# 로그 경우의 수 파악
for i in range(0, len(log_trace)-1):
next_value = i + 1
if next_value <= len(log_trace)-1:
tuple_element = (log_trace[i], log_trace[next_value])
log_list_self.append(tuple_element)
else:
pass
same_value = list(set(model_list_self) & set(log_list_self))
model_lst_check = list(set(model_list_self) & set(same_value))
log_lst_check = list(set(log_list_self) & set(same_value))
lst_check = model_lst_check + log_lst_check
sum_value = model_list_self + log_list_self
len_sum = len(sum_value)
# 불일치 경우의 수 파악
len_uncorrected = len(sum_value) - len(lst_check)
# Fitness 계산
fitness_value = round((1 - (len_uncorrected / len_sum))*100,0)

 

레퍼런스

https://process-mining.tistory.com/14

 

Footprint Comparison Conformance Checking (Footprint Matrix를 이용한 적합도 검증)

Conformane Checking (적합도 검증)이란, 프로세스 모델이 실제 이벤트 로그에 얼마나 잘 부합하는지, 즉 프로세스 모델이 실제 데이터와 비교해봤을 때 얼마나 잘 맞는지를 검증하는 것을 말한다. 이�

process-mining.tistory.com

http://1ambda.github.io/data-analysis/process-mining-4/

 

Process Mining 4: Conformance Checking, Dotted Chart

Process Mining 4: Conformance Checking, Dotted Chart Two-Phase Process Discovery, Limitations 지난시간에 두 단계를 거치는 프로세스 마이닝 알고리즘을 봤었다. 하나는 heuristic mining 으로 dependency graph 를 만들고, 이것

1ambda.github.io

728x90