728x90

  이번 포스팅에서는, 실제 데이터를 분석할 때 가장 널리 쓰이는 process discovery 알고리즘 중 하나인 inductive miner를 이용하여 pm4py에서 프로세스 트리를 도출하는 방법에 대해 알아볼 것이다. 프로세스 트리가 무엇인지를 알고 싶다면 다음 포스팅을 참고하자.

2019/06/23 - [Theory/Process Model] - Process Tree란?

불러오는 중입니다...

 * 본 포스팅은 기본적인 python 문법을 알고 있다는 가정 하에 진행된다.

 * 현재 PM4Py는 다양한 Inductive Miner 알고리즘 중 Inductive Miner Directly Follows algorithm을 기본으로 한다. 알고리즘에 대해 자세히 알고 싶다면 다음 링크를 참고한다.

http://www.processmining.org/_media/blogs/pub2015/bpmds_directly-follows_mining.pdf

 

1. 우선, xes 파일을 import하여 이를 log에 저장해 준다.

import os
from pm4py.objects.log.importer.xes import factory as xes_importer

log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.

 

2. 이 log에 대해 inductive miner를 적용시켜 준다. 이 때, 페트리 넷이 아닌 process tree를 도출하기 위해 apply_tree function을 사용한다.

from pm4py.algo.discovery.inductive import factory as inductive_miner

tree = inductive_miner.apply_tree(log)

3. 이를 눈으로 확인하기 위해 다음 코드를 입력한다.

from pm4py.visualization.process_tree import factory as pt_vis_factory

gviz = pt_vis_factory.apply(tree)
pt_vis_factory.view(gviz)

*이 코드를 한 번에 입력하고 싶으면 다음 코드를 입력하면 된다. (순서대로 붙여넣기 해도 되지만, 보기 좋게 바꾸어 놓았다.)

import os
from pm4py.objects.log.importer.xes import factory as xes_importer
from pm4py.algo.discovery.inductive import factory as inductive_miner
from pm4py.visualization.process_tree import factory as pt_vis_factory


log = xes_importer.import_log(os.path.join("tests","input_data","running-example.xes")) #괄호 안에 원하는 파일의 경로를 쓴다.

tree = inductive_miner.apply_tree(log)

gviz = pt_vis_factory.apply(tree)
pt_vis_factory.view(gviz)

4. 다음과 같은 맵이 도출된다면 성공이다. 원 안에 연산자(operator)가, 네모 안에 액티비티가 표현된 것을 볼 수 있다.

도출된 process tree

5. 이 process tree를 페트리 넷으로 변환하는 것 또한 가능하다. 이것은 다음 코드를 통해 할 수 있다.

from pm4py.objects.conversion.process_tree import factory as pt_conv_factory

net, initial_marking, final_marking = pt_conv_factory.apply(tree, variant=pt_conv_factory.TO_PETRI_NET)

 위 코드를 통해 net에 petri net이, initial_marking에 해당 페트리 넷의 initial marking이, final_marking에 해당 페트리 넷의 final marking이 할당된다. 

 

 pm4py를 통해 코드 몇 줄로 간단하게 event log로부터 inductive miner를 이용하여 프로세스 트리를 도출할 수 있다.

 

References

1. PM4Py 공식 홈페이지: http://pm4py.pads.rwth-aachen.de/

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