1모듈과 답하는 질문
| 모듈 | 답하는 질문 | 결과물 | 시간 |
|---|---|---|---|
| C1 객체 중심 이벤트 데이터 | 업무, PR, 사람이 얽힌 기록을 사례 하나로 줄이지 않고 분석할 수 있는가. 사례 하나로 줄이면 숫자가 어떻게 바뀌는가 | OCEL 2.0 파일(JSON, SQLite), 객체 유형별 흐름 보고, 객체 중심 직접 이어짐 그래프 | 180분 |
| C2 발견과 적합성 심화 | 알고리즘마다 다른 모델이 나올 때 무엇을 기준으로 고르는가. 프로세스가 중간에 바뀐 것을 날짜를 모르고도 찾을 수 있는가 | 모델 비교 보고, 규칙 파일 개정안, 표류 점검 보고 | 180분 |
| C3 대기열, 자원, 시뮬레이션 | 리뷰어를 한 명 늘리는 것과 리뷰 당번을 두는 것 중 어느 쪽이 대기를 더 줄이는가. 2단계의 어림은 어디서 틀리는가 | 대기열 보고, 조직·결정 마이닝 보고, 검증한 시뮬레이션 모델과 정책 비교표 | 180분 |
| C4 예측 모니터링과 운영 | 지금 열린 업무 가운데 늦어질 것을 미리 알 수 있는가. 프로세스가 바뀌면 예측은 어떻게 되는가. 경보는 하루 몇 건이 적당한가 | 예측 평가 보고, 경보 기준과 하루 경보 목록, 모델 문서 | 180분 |
모듈은 순서대로 듣는 것을 전제로 한다. C2의 표류 점검과 선언적 제약 비교는 C3의 결정 마이닝과 시뮬레이션 검증에서, C3의 “리뷰 대기는 응답 지연에서 왔다”는 결론과 C1의 사람 객체는 C4의 예측과 감시 우려에서 다시 쓴다.
2설치와 환경
트랙 C의 스크립트는 Python으로 쓰였다. 실습 24에서 PM4Py를 설치했으면 SimPy와 scikit-learn만 더한다.
python3 -m pip install pm4py==2.7.23.8 simpy scikit-learn
교안의 출력은 위 판으로 실행한 결과다. 시뮬레이션과 예측 스크립트는 씨앗값을 고정하므로 같은 판에서는 같은 숫자가 나온다. PM4Py 설치가 cvxopt 빌드에서 실패하면 실습 24의 막히면 표대로 --no-deps로 설치한 뒤 의존 패키지를 따로 설치한다. PM4Py는 AGPL-3.0 라이선스이고, 불러올 때 표준 오류로 라이선스 안내문을 낸다. 교안의 출력에서는 그 안내문을 뺐다.
3다시 쓰는 Level 1 결과
| 모듈 | 다시 쓰는 실습과 결과 |
|---|---|
| C1 | 실습 20 event-log.sh의 CSV 형식, 실습 22의 로그 품질 점검과 정리한 로그, 실습 24 pm4py-notebook.py의 셀 방식 |
| C2 | 실습 23 변형, 실습 24 귀납적 마이너와 적합도·정밀도, 실습 26 팀 절차 모델과 범위를 정한 process-rules.tsv |
| C3 | 실습 15 리틀의 법칙, 실습 25 리뷰 집중도와 roles.tsv, 실습 27 기간 비교, 실습 28 whatif.sh의 어림(36.8h → 33.1h, 실제 27.7h) |
| C4 | 실습 10 스프린트 운영 이슈(PM_SPRINT_URL), 실습 22 원본 로그와 관측 기간의 끝, 실습 26 첫 리뷰 규칙 |
실습 저장소가 없어도 모든 실습을 할 수 있다. 계산은 모두 키트의 Orbit 로그로 하고, GitHub에 접속하는 명령(event-log.sh, gh pr list, gh issue comment)은 실습 저장소가 있을 때 따라 한다. 그 명령은 출력 없이 명령만 실었다.
4데이터
| 데이터 | 내용 | 쓰는 모듈 |
|---|---|---|
Orbit 원본 로그 (samples/orbit-event-log.csv) | 가상 팀 Orbit의 합성 이벤트 로그. 업무 260건, 사건 1,988건, 2026-03-03 ~ 09-04. 끝나지 않은 업무 3건이 들어 있다. 실제 팀의 기록이 아니다 | C4 |
Orbit 정리한 로그 (samples/orbit-event-log-clean.csv) | 실습 22의 log-check.sh --clean 결과. 업무 257건, 사건 1,975건 | C1~C3 |
Orbit OCEL (samples/c-orbit-ocel.json) | 정리한 로그를 ocel-export.py로 바꾼 OCEL 2.0 JSON. 사건 1,975건, 객체 512개(task 257, pr 247, person 8) | C1 |
Launchpad 로그 (samples/event-log.sample.csv) | Level 1 사례의 업무 6건, 사건 51건. 스크립트를 작은 로그로 먼저 시험할 때 쓴다 | C1 |
| 내 저장소의 로그 | event-log.sh로 만든 같은 형식의 CSV | C1~C4 |
5키트 파일
모두 실습 키트의 github-pm-starter-kit/ 폴더에 있다. GitHub에 접속하지 않고, 입력 파일을 인자로 받는다. ocel-notebook.py를 뺀 스크립트는 -h로 사용법을 본다.
| 파일 | 내용 | 필요한 패키지 | 모듈 |
|---|---|---|---|
ocel-export.py | 키트 형식의 CSV를 OCEL 2.0(JSON 또는 SQLite)으로 바꾼다. 객체 유형 task, pr, person, 한정자, PR과 업무의 관계, 상태 변화. 가명화 옵션 | 표준 라이브러리 | C1 |
ocel-notebook.py | # %% 셀로 나뉜 분석 스크립트. 객체 수, 평탄화 비교, 수렴과 발산, OC-DFG, 속성 변화 | pm4py, pandas | C1 |
model-compare.py | 발견 알고리즘 여섯 개와 손으로 쓴 프로세스 트리의 크기, 건전성, 적합도, 정밀도, 일반화, 단순성, 동기 곱 크기 | pm4py, pandas | C2 |
declare-rules.py | 선언적 제약 발견, 규칙 파일과 비교, 규칙 후보, 기간 사이에 신뢰도가 바뀐 제약 | pm4py, pandas, scipy | C2 |
drift-check.py | 달 또는 4주 창의 흐름(순열 검정)과 시간(맨-휘트니 U)을 비교하는 개념 표류 점검 | numpy, scipy | C2 |
queue-mining.py | PR 첫 리뷰의 도착, 리뷰어별 몫과 대기, L = λW, 대기열 길이와 대기, 묶음 리뷰 | numpy | C3 |
org-mining.py | 넘김·함께 일함 네트워크, 역할 발견, 작성자와 첫 리뷰어, 첫 리뷰 분기의 결정 나무 | pm4py, pandas, scikit-learn | C3 |
review-sim.py | PR 첫 리뷰의 SimPy 시뮬레이션. delay와 queue 모델, 배정 정책 네 가지, 다른 기간 재생, 도착률 배수 | simpy, numpy | C3 |
pr-predict.py | 작업일 09:00 스냅숏의 접두사 표본으로 업무 지연(또는 첫 리뷰 규칙 위반)을 예측. 시간 순 평가, 보정 표, 다시 학습, 경보 목록, 모델 문서 초안 | numpy, scikit-learn | C4 |
6수업 운영과 읽을 것
모듈마다 수업 전에 논문 하나 이상의 서론과 방법 부분을 읽는다. 수업은 설명, 시연, 개별 실습 순서로 진행하고, 실습마다 페이지 끝의 완료 확인 항목을 채운다. 숫자를 해석하는 문제(어느 모델을 고르는가, 시뮬레이션 검증이 실패한 이유는 무엇인가)는 두세 명씩 토론한 뒤 발표한다.
| 모듈 | 수업 전에 읽을 것 |
|---|---|
| C1 | van der Aalst(2019)의 1~3절, OCEL 2.0 명세의 메타모델 부분, Suriadi 외(2017)의 패턴 목록 |
| C2 | Augusto 외(2019)의 서론과 평가 방법, Bose 외(2014)의 1~3절 |
| C3 | Senderovich 외(2015)의 서론, Rozinat 외(2009)의 서론과 시뮬레이션 모델 구성 부분 |
| C4 | Teinemaa 외(2019)의 2~4절, Weytjens & De Weerdt(2021), Mitchell 외(2019) |
7참고 자료
교재와 도구
- van der Aalst, Process Mining: Data Science in Action 2판, Springer(2016). van der Aalst & Carmona 편, Process Mining Handbook, LNBIP 448, Springer(2022, 공개 접근) link.springer.com
- PM4Py 문서 processintelligence.solutions/pm4py. SimPy 문서 simpy.readthedocs.io. scikit-learn 문서 scikit-learn.org
객체 중심 이벤트 데이터 (C1)
- van der Aalst, “Object-Centric Process Mining: Dealing with Divergence and Convergence in Event Data”, SEFM 2019, LNCS 11724(2019)
- OCEL 2.0 명세(2023) ocel-standard.org. Berti 외, “OCEL (Object-Centric Event Log) 2.0 Specification”, arXiv:2403.01975(2024)
- Suriadi, Andrews, ter Hofstede, Wynn, “Event log imperfection patterns for process mining: Towards a systematic approach to cleaning event logs”, Information Systems 64(2017)
- 개인정보 보호법 제2조 제1호의2(가명처리), 제28조의2~제28조의5(가명정보의 처리)
발견과 적합성 (C2)
- Günther & van der Aalst, “Fuzzy Mining: Adaptive Process Simplification Based on Multi-perspective Metrics”, BPM 2007
- van der Werf, van Dongen, Hurkens, Serebrenik, “Process discovery using integer linear programming”, Fundamenta Informaticae 94(2009). van Zelst, van Dongen, van der Aalst, Verbeek, “Discovering workflow nets using integer linear programming”, Computing 100(2018)
- Leemans, Fahland, van der Aalst, “Discovering Block-Structured Process Models from Event Logs Containing Infrequent Behaviour”, BPM 2013 워크숍, LNBIP 171(2014). 같은 저자, “Scalable process discovery and conformance checking”, Software & Systems Modeling 17(2018)
- Augusto, Conforti, Dumas, La Rosa, Polyvyanyy, “Split miner: automated discovery of accurate and simple business process models from event logs”, Knowledge and Information Systems 59(2019)
- Pesic & van der Aalst, “A Declarative Approach for Flexible Business Processes Management”, BPM 2006 워크숍, LNCS 4103(2006). Di Ciccio & Mecella, “On the Discovery of Declarative Control Flows for Artful Processes”, ACM TMIS 5(4)(2015)
- Adriansyah, van Dongen, van der Aalst, “Conformance Checking using Cost-Based Fitness Analysis”, IEEE EDOC 2011
- Muñoz-Gama & Carmona, “A Fresh Look at Precision in Process Conformance”, BPM 2010. Adriansyah, Muñoz-Gama, Carmona, van Dongen, van der Aalst, “Measuring precision of modeled behavior”, Information Systems and e-Business Management 13(2015)
- Polyvyanyy, Solti, Weidlich, Di Ciccio, Mendling, “Monotone Precision and Recall Measures for Comparing Executions and Specifications of Dynamic Systems”, ACM TOSEM 29(3)(2020)
- Fahland & van der Aalst, “Model repair — aligning process models to reality”, Information Systems 47(2015)
- Bose, van der Aalst, Žliobaitė, Pechenizkiy, “Dealing With Concept Drifts in Process Mining”, IEEE Transactions on Neural Networks and Learning Systems 25(1)(2014)
대기열, 자원, 시뮬레이션 (C3)
- Little, “A Proof for the Queuing Formula: L = λW”, Operations Research 9(3)(1961)
- Senderovich, Weidlich, Gal, Mandelbaum, “Queue mining for delay prediction in multi-class service processes”, Information Systems 53(2015)
- Nakatumba & van der Aalst, “Analyzing Resource Behavior Using Process Mining”, BPM 2009 워크숍, LNBIP 43(2010)
- van der Aalst, Reijers, Song, “Discovering Social Networks from Event Logs”, Computer Supported Cooperative Work 14(6)(2005)
- Rozinat & van der Aalst, “Decision Mining in ProM”, BPM 2006, LNCS 4102(2006)
- Rozinat, Mans, Song, van der Aalst, “Discovering simulation models”, Information Systems 34(3)(2009)
예측 모니터링 (C4)
- Teinemaa, Dumas, La Rosa, Maggi, “Outcome-Oriented Predictive Process Monitoring: Review and Benchmark”, ACM TKDD 13(2)(2019)
- Tax, Verenich, La Rosa, Dumas, “Predictive Business Process Monitoring with LSTM Neural Networks”, CAiSE 2017
- Weytjens & De Weerdt, “Creating Unbiased Public Benchmark Datasets with Data Leakage Prevention for Predictive Process Monitoring”, BPM 2021 워크숍
- Fahrenkrog-Petersen, Tax, Teinemaa, Dumas, de Leoni, Maggi, Weidlich, “Fire now, fire later: alarm-based systems for prescriptive process monitoring”, Knowledge and Information Systems 64(2)(2022)
- Brier, “Verification of forecasts expressed in terms of probability”, Monthly Weather Review 78(1)(1950). Mitchell 외, “Model Cards for Model Reporting”, FAT* 2019
마치며...
트랙 C의 네 모듈은 2단계와 같은 Orbit 기록을 쓰되, 사례 하나로 줄인 로그의 한계에서 시작해 모델의 선택과 검증, 대기의 원인과 정책 비교, 진행 중인 업무의 예측으로 나아간다. 모듈마다 결과물이 pm-lab/에 파일로 남고, 뒤 모듈이 앞 모듈의 결론을 다시 쓴다. C1에서는 Orbit 로그를 업무, PR, 사람을 객체로 나눈 OCEL 2.0 파일로 바꾸고, 사례 하나로 줄일 때 생기는 복제와 누락을 숫자로 잰다.