Simplicity란, 프로세스 모델의 성능을 측정하는 척도 중 하나로, 맵의 간단한 정도(혹은 복잡한 정도)를 말한다. 같은 데이터를 정확하게 나타내는 모델이라면 그 모델이 간단할수록 더 가치가 있을 것이다. 이번 포스팅에서는 simplicity의 계산 방법과 함께 PM4Py로 프로세스 모델의 simplicity를 계산하는 방법에 대해 알아보겠다.
Simplicity의 계산
프로세스 모델의 simplicity는 다양한 방법으로 계산될 수 있다. 그 중에서도 PM4Py는 토큰을 사용할 수 있는 방법의 경우의 수가 적을수록 모델이 더 간단하다는 아이디어를 기반으로 simplicity를 계산한다. 즉, transition의 개수(place로부터 토큰을 사용할 수 있는 경우의 수)가 place의 개수에 비해 작으면 모델이 더 간단하다는 것이다. 그러므로 PM4Py는 다음과 같은 식으로 simplicity를 계산한다.
값이 0에 가까울수록 더 간단한 모델이다.
PM4Py 코드
1. 우선, 분석할 XES 파일을 import하여 이를 log에 저장하고, Conformance Checking을 원하는 모델을 net에 저장해준다. 필자는 inductive miner를 선택했다.
import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.inductive import factory as inductive_miner
log = xes_importer.import_log(os.path.join("input_data","running-example.xes")) #join 안에 원하는 파일의 경로
net, initial_marking, final_marking = inductive_miner.apply(log) #원하는 모델을 선택한다.
2. 해당 log와 net에 대해서 simplicity를 계산한다.
이 때, fitness나 precision과는 다르게 marking을 인수로 전달할 필요는 없다. 프로세스 모델의 simplicity는 로그와 모델의 관계가 아닌 모델 자체를 평가하는 값이기 때문이다.
from pm4py.evaluation.simplicity import factory as simplicity_factory
simplicity = simplicity_factory.apply(net)
print(simplicity)
3. 다음과 같은 값이 나오면 성공이다.
0.5217391304347826
이번 포스팅에서는 Simplicity를 계산하는 방법과 함께 PM4Py로 simplicity를 계산하는 방법에 대해 알아보았다.
References
1. Blum, Fabian Rojas. Metrics in process discovery. Technical Report TR/DCC-2015-6, Computer Science Department, University of Chile, 2015.
2. PM4Py 공식 문서: http://pm4py.pads.rwth-aachen.de/
최근댓글