Ch03 Components of Process Data
I. 개요
지난시간에 patients
에 관한 데이터를 통해서 프로세스 분석에 대한 일반적인 개념을 접했다.
이번 포스트에서는 bupaR
에 대한 이론적인 내용과 함께 간단하게 실습을 진행하도록 한다.
지난시간과 마찬가지로 먼저 데이터를 획득하는 것에서부터 출발한다.
library(bupaR)
library(eventdataR)
patients <- patients
dim(patients)
## [1] 5442 7
5442행과 7개의 열이 확인되었다.
class(patients)
## [1] "eventlog" "tbl_df" "tbl" "data.frame"
II. 용어 정리
우선 용어 정리가 필요하다. Events, Event log, Activity 등등. 하나씩 살펴보자.
(1) Events
우선 Events에 관한 이해를 돕기 위해 아래 그림을 우선 살펴보자.
John이 X-Ray
를 촬영하면 크게 3가지의 log가 남을 것이다. Scheduled
, Started
, Completed
이러한 3가지 활동을 통칭해서 Events
라고 부른다.
(2) Event Log
시간대별로 이렇게 다양한 log가 남겨지는 것을 Event log
라고 불리운다.
patients %>%
filter(patient == "1") %>%
select(patient, handling, registration_type, time, force_df = TRUE) %>%
head(10)
## # A tibble: 10 x 4
## patient handling registration_type time
## <chr> <fct> <fct> <dttm>
## 1 1 Registration start 2017-01-02 11:41:53
## 2 1 Triage and Assessment start 2017-01-02 12:40:20
## 3 1 Blood test start 2017-01-05 08:59:04
## 4 1 MRI SCAN start 2017-01-05 21:37:12
## 5 1 Discuss Results start 2017-01-07 07:57:49
## 6 1 Check-out start 2017-01-09 17:09:43
## 7 1 Registration complete 2017-01-02 12:40:20
## 8 1 Triage and Assessment complete 2017-01-02 22:32:25
## 9 1 Blood test complete 2017-01-05 14:34:27
## 10 1 MRI SCAN complete 2017-01-06 01:54:23
-
위 코드에서 중요한 것은
Select(~, force_df = TRUE)
를 꼭 입력해줘야data.frame
형태로 출력된다. -
event log는 결과적으로 다음
Components
로 구성되어 있다.- case id
- activity label
- activity instance id
- timestamp
- lifecycle status
- resource
III. event log 데이터 생성
일반적인 데이터를 작성해서 event log
를 생성해보자. 어려운 것은 아니나, 기본적으로 포함해야 할 데이터가 있기 에 확인차 작성을 해본다.
(1) 데이터 생성
아래 소스코드를 활용하여 가상의 데이터를 만든다. 그 이후 eventlog()
함수를 활용하여, 각 데이터에 맞게 매칭해서 Column명을 입력하기만 하면 된다.
# 가상 데이터 생성
eventData <- data.frame(
id = c("pat_1", "pat_1", "pat_1", "pat_2", "pat_2"),
action = c(10002, 10011, 10015, 10024, 10024),
action_type = c("Check-in", "Payment", "Check-in", "Payment", "Payment"),
date = as.Date(c("2020-01-12", "2020-03-21", "2020-01-15", "2020-03-23", "2020-04-01")),
originator = c("Assistant_1", "Manager_2", "Assistant_7", "Manager_2", "Manager_2"),
status = c("start", "start", "start", "start", "complete")
)
# event log 데이터 생성
claims_log <- eventlog(
eventData,
case_id = "id",
activity_id = "action_type",
activity_instance_id = "action",
lifecycle_id = "status",
timestamp = "date",
resource_id = "originator"
)
(2) 두 데이터 비교
만들어진 소스코드를 통해서 실제로 summary()
를 통해 실제 구조를 비교해본다. 먼저 eventData
를 확인해보자.
# eventData
summary(eventData)
## id action action_type date
## Length:5 Min. :10002 Length:5 Min. :2020-01-12
## Class :character 1st Qu.:10011 Class :character 1st Qu.:2020-01-15
## Mode :character Median :10015 Mode :character Median :2020-03-21
## Mean :10015 Mean :2020-02-25
## 3rd Qu.:10024 3rd Qu.:2020-03-23
## Max. :10024 Max. :2020-04-01
## originator status
## Length:5 Length:5
## Class :character Class :character
## Mode :character Mode :character
##
매우 익숙한 구조가 나온 것을 확인할 수 있다. 이번에는 eventlog 데이터를 확인해보자.
# eventData
summary(claims_log)
## Number of events: 5
## Number of cases: 2
## Number of traces: 2
## Number of distinct activities: 2
## Average trace length: 2.5
##
## Start eventlog: 2020-01-12
## End eventlog: 2020-04-01
## id action action_type date
## Length:5 Length:5 Check-in:2 Min. :2020-01-12
## Class :character Class :character Payment :3 1st Qu.:2020-01-15
## Mode :character Mode :character Median :2020-03-21
## Mean :2020-02-25
## 3rd Qu.:2020-03-23
## Max. :2020-04-01
## originator status .order
## Assistant_1:1 complete:1 Min. :1
## Assistant_7:1 start :4 1st Qu.:2
## Manager_2 :3 Median :3
## Mean :3
## 3rd Qu.:4
## Max. :5
데이터의 구조가 달라진 것을 확인할 수 있다.
(3) Activity Label 확인
간단하게 바뀌어진 eventlog 데이터의 activity label
이 바뀌어졌는지 확인해본다.
activity_labels(claims_log)
## [1] Check-in Payment
## Levels: Check-in Payment
정상적으로 출력이 되었다면, 실제로 변환된 eventlog
데이터를 가지고 본격적인 분석을 진행할 수 있다.
IV. Reference
R on notast. “Process Mining (Part 1/3): Introduction to BupaR Package.” R, 7 Mar. 2019, www.r-bloggers.com/process-mining-part-1-3-introduction-to-bupar-package/.
Aalst, W.m.p. Van Der, and A.j.m.m. Weijters. “Process Mining: a Research Agenda.” Computers in Industry, vol. 53, no. 3, 2004, pp. 231–244., doi:10.1016/j.compind.2003.10.001.