728x90

  Simplicity란, 프로세스 모델의 성능을 측정하는 척도 중 하나로, 맵의 간단한 정도(혹은 복잡한 정도)를 말한다. 같은 데이터를 정확하게 나타내는 모델이라면 그 모델이 간단할수록 더 가치가 있을 것이다. 이번 포스팅에서는 simplicity의 계산 방법과 함께 PM4Py로 프로세스 모델의 simplicity를 계산하는 방법에 대해 알아보겠다. 

Simplicity의 계산

 프로세스 모델의 simplicity는 다양한 방법으로 계산될 수 있다. 그 중에서도 PM4Py는 토큰을 사용할 수 있는 방법의 경우의 수가 적을수록 모델이 더 간단하다는 아이디어를 기반으로 simplicity를 계산한다. 즉, transition의 개수(place로부터 토큰을 사용할 수 있는 경우의 수)가 place의 개수에 비해 작으면 모델이 더 간단하다는 것이다. 그러므로 PM4Py는 다음과 같은 식으로 simplicity를 계산한다.

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/

 

 

300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기