7 Process Mining
| (require spindle/mining) | package: spindle |
The process mining module discovers defeasible rules from event logs, enabling automated rule extraction from observed behavior.
7.1 Overview
Process mining in Spindle:
Reads event logs (traces of activities)
Discovers process structure using the Alpha algorithm
Converts to defeasible rules with support/confidence
Identifies conflicts and choice points
7.2 Event Logs
procedure
(make-event timestamp activity [ #:actor actor #:bindings bindings]) → event? timestamp : any/c activity : string? actor : (or/c string? #f) = #f bindings : hash? = (hash)
procedure
cases : (listof case?)
7.2.1 Loading Event Logs
procedure
input : input-port?
{ "cases": [ { "id": "case-1", "events": [ {"timestamp": "2024-01-01T10:00:00Z", "activity": "start"}, {"timestamp": "2024-01-01T10:05:00Z", "activity": "process"} ] } ] }
procedure
input : input-port?
7.3 Rule Discovery
procedure
(mine-rules log [ #:min-support min-support #:min-confidence min-confidence #:generalize generalize]) → mining-result? log : event-log? min-support : exact-positive-integer? = 1 min-confidence : (real-in 0 1) = 0.0 generalize : boolean? = #f
min-support —
Minimum number of occurrences min-confidence —
Minimum confidence threshold generalize —
Generalize with variables
(define result (mine-rules my-log #:min-confidence 0.8)) (for ([rule (mining-result-rules result)]) (displayln (learned-rule-rule rule)))
7.4 Mining Results
procedure
(mining-result-rules r) → (listof learned-rule?)
r : mining-result?
procedure
(mining-result-conflicts r) → (listof conflict?)
r : mining-result?
procedure
(mining-result-choice-points r) → (listof choice-point?)
r : mining-result?
7.4.1 Learned Rules
procedure
(learned-rule-rule lr) → rule?
lr : learned-rule?
procedure
(learned-rule-support lr) → exact-positive-integer?
lr : learned-rule?
procedure
(learned-rule-confidence lr) → (real-in 0 1)
lr : learned-rule?
7.5 Petri Net Discovery
The Alpha algorithm first discovers a Petri net:
procedure
(petri-net->dfl net log) → (listof learned-rule?)
net : petri-net? log : event-log?
7.6 Conflict Detection
choice —
XOR split from structure (exclusive paths) mutex —
Mutual exclusion from traces (never co-occur)