728x90

 Correlation Mining은 Case ID 정보가 있어야 프로세스 분석이 가능하던 프로세스 마이닝의 한계점을 극복할 수 있게 해주는 알고리즘으로, Case ID 없이도 프로세스 모델을 도출한다. 이번 포스팅에서는 PM4Py에서 Correlation Mining을 하는 방법에 대해 알아보겠다.

 

1. 데이터로부터 Case ID 정보를 제거한다. 

 이 과정은 데이터에 Case ID 정보가 없는 데이터를 사용할 때에는 해당되지 않는다. (이 예시는 Case ID가 있는 데이터를 사용했기 때문에 Correlation Mining의 효과를 보여주고자 해당 컬럼을 삭제한 것이다.)

from pm4py.objects.log.adapters.pandas import csv_import_adapter

df = csv_import_adapter.import_dataframe_from_path("tests/input_data/receipt.csv")
df = df[["concept:name", "time:timestamp"]]

2. Correlation Mining을 적용한다.

 이 때, frequency DFG는 기본적으로 Correlation Mining으로부터 도출되는 결과이고, performance DFG는 duration matrix의 값을 통해 도출된다.

from pm4py.algo.discovery.correlation_mining import algorithm as correlation_miner

frequency_dfg, performance_dfg = correlation_miner.apply(df, parameters={correlation_miner.Variants.CLASSIC.value.Parameters.ACTIVITY_KEY: "concept:name",
                                correlation_miner.Variants.CLASSIC.value.Parameters.TIMESTAMP_KEY: "time:timestamp"})

3. DFG의 visualization을 위해 각 액티비티의 빈도를 저장한다.

activities_freq = dict(df["concept:name"].value_counts())

4. 도출된 DFG를 visualization한다.

from pm4py.visualization.dfg import visualizer as dfg_visualizer
gviz_freq = dfg_visualizer.apply(frequency_dfg, variant=dfg_visualizer.Variants.FREQUENCY, activities_count=activities_freq, parameters={"format": "svg"})
gviz_perf = dfg_visualizer.apply(performance_dfg, variant=dfg_visualizer.Variants.PERFORMANCE, activities_count=activities_freq, parameters={"format": "svg"})
dfg_visualizer.view(gviz_freq)
dfg_visualizer.view(gviz_perf)

5. 다음과 같은 결과가 도출되면 성공이다.

도출된 frequency DFG
도출된 performance DFG

 

 이렇게 PM4Py에서도 Correlation Mining을 통해 Case ID 없이 프로세스 모델을 도출할 수 있다.

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