Iterative Trace Partitioning in Practice: a Worked Example on the BPI Challenge 2013 (Incidents) Log

A step-by-step case study of one analysis session in TracePrism, kept as a supplementary reference alongside the TVCG submission and as teaching material for students learning the tool and the underlying method. Third in the series, after Road Traffic Fines and Sepsis Cases.

Dataset: BPI Challenge 2013 — IT incident management (Volvo IT / VINST), 7,553 traces, 13 activities, 3 outcomes · Session date: 2026-08-13 · Source material: the exported knowledge base (knowledge_groups.csv, knowledge_traces.csv, knowledge_report.html), the session log (analysis_log.html), and screen captures taken during the session. Click any figure to view it full-size.
A methodological decision made before any modeling started: excluding "highest support line reached." This dataset's outcome is defined as the highest support line (1st/2nd/3rd) an incident ever reached. The dataset also happens to carry a case attribute with exactly that same name and content — and the app's own encoding scorer confirmed it: scored against the working set, highest support line reached came back with NMI = 1.000, i.e. perfect mutual information with the outcome, and topped every encoding-recommendation table for the rest of the session as a result. Using it as an NMF modeling feature would not surface real structure — it would just let the model read the answer off a duplicate copy of the label. This is excluded from every round's encoding in this document, even on rounds where the app's own scorer marked it "suggested"; the figures below show that override directly (the switch stays visibly off in the encoding panel, and the reference table at the bottom of that panel shows no "currently on" marker next to it). This is not the same issue as the encoding-application bug documented in the Sepsis Cases companion document — that was an automation bug that silently failed to apply a legitimate recommendation; this is a deliberate, standing exclusion of one specific attribute because using it would be circular, not because anything is broken. For the same reason, the attribute is still shown in every group's descriptive fingerprint panel below (fingerprints are diagnostic — a first-pass account of what makes a group different — not a modeling input, so displaying it there is not circular the way modeling on it would be).
Headline result. Across one obvious-group commit, one productive topic-modeling round, a confirmed diminishing-returns check spanning three more rounds that found nothing further, and a UMAP + k-means clustering round on the residue, the session accumulated 9 committed groups covering 4,105 of 7,553 traces (54.3%). The remaining 3,448 traces (45.7%) resisted separation and were left unexplained — a substantially lower explained share than either the Road Traffic Fines (97.3%) or Sepsis Cases (89.4%) companion case studies, and itself a finding about this log, discussed below.
Contents
  1. Getting oriented: dataset overview and the process graph
  2. Step 1 — An obvious group: the quick single-call resolution
  3. Step 2 — Topic round: K=14 on the 5,804-trace remainder
  4. Step 3 — Diminishing returns: three more rounds find nothing further
  5. Step 4 — UMAP + k-means (N=24) on the 4,329-trace residue
  6. Final knowledge base and what was left unexplained
  7. Takeaways for students

Getting oriented: dataset overview and the process graph

STEP 0BPI Challenge 2013 (incidents) records IT incident-management activity at Volvo IT / VINST: 7,553 traces, only 13 distinct activities, median length 6 events (range 2–123). Unlike Fines or Sepsis, this log's outcome is not a separate business result — it is the highest of three tiered support lines (1st/2nd/3rd) an incident's handling ever escalated to, directly mirroring one of the challenge's own original questions ("does this incident get pushed to a higher support line?"). The outcome mix is skewed but less extreme than Sepsis: line_1_only 60.2% (resolved without ever leaving first-line support), reached_line_2 32.6%, reached_line_3 7.2% (the rarest outcome — the small minority of incidents escalated all the way to specialist support). Case attributes are organizational rather than clinical: distinct teams involved, team handoffs (a "ping-pong" proxy for the challenge's own handoff question), whether the incident was ever parked in a "Wait – User" sub-status, the starting support line, and the highest support line reached (excluded from modeling for the reason given above).

Figure 1. Stage 1 overview of the full 7,553-trace dataset: headline counts, outcome legend (line_1_only 60.2%, reached_line_2 32.6%, reached_line_3 7.2%), the case-attribute data dictionary, and the note explaining how the outcome is defined and why creation-date heatmaps are suppressed for this dataset (see the on-page note).

Step 1 — An obvious group: the quick single-call resolution

STEP 1BPI2013 has one common short trace variant clearing the ≥20-occurrence bar for an "obvious group": Accepted_In_Progress → Accepted_In_Progress → Completed_In_Call — an incident picked up, worked on directly, and closed out on a call without ever leaving first-line support. 1,749 traces (23.2% of the whole dataset), 98.3% pure line_1_only (1,720 of 1,749). This was committed immediately, for the same reason obvious groups are committed first in the other two case studies: it is a free, zero-modeling win that narrows what Step 2's topic model has to explain, and at 23.2% of the dataset it is the single largest committed group across the whole session.

Figure 2. The obvious-group candidate before committing: 1,749 traces, 98% line_1_only, with its outcome breakdown and process graph visible on hover.
Figure 3. After committing the obvious group: working set drops from 7,553 to 5,804 traces (1,749 already interpreted).

Step 2 — Topic round: K=14 on the 5,804-trace remainder

STEP 2With the obvious group removed, the encoding recommender was run against the remaining 5,804 traces. Its unfiltered top-ranked candidate combined every declared attribute facet, including the excluded highest support line reached (sharp 0.674, NMI 0.059, score 0.366) — per the note above, that facet was blocked. With it excluded, the switches actually turned on were activities + 2-grams + distinct teams involved + team handoffs + ever in "Wait User" status + starting support line, closely tracking the next-best legitimate candidates in the same table (activities + 2-grams + attribute-augmented activity, sharp 0.668/NMI 0.054/score 0.361, and activities + 2-grams + distinct teams involved, sharp 0.661/NMI 0.053/score 0.357).

Figure 4. Stage 2 encoding recommendation for the 5,804-trace remainder. The scorer's own top-ranked row (highlighted) includes highest support line reached — visibly left unchecked in the switch list on the left, and carrying no • marker in the encoding-reference table at the bottom, confirming the exclusion actually took effect rather than merely being described.

A K-sweep from K=3 to K=20 was run and seven candidate K's were compared under a dominant-outcome-share ≥ 0.85 (and n ≥ 15) rule; coverage rose from 1,326 of 5,804 traces at K=8 to a peak of 1,475 at K=14, then drifted back down through K=16–20 (1,446, 1,440, 1,407) as the extra splits added more topics without adding qualifying coverage — the textbook "diminishing returns" signature described in the app's own K-sweep guidance. K=14 was taken forward.

Figure 5. K-sweep pooled 2D embedding and Sankey, K=3–20, unfiltered, outcome-pies toggle on (dot size ∝ trace count, slices ∝ outcome mix). Several persistent, largely one-color bands are visible threading through the whole range even before any purity filter is applied.
Figure 6. The same sweep filtered to dominant-outcome share ≥ 0.85: a handful of bands survive across most of the K range, consistent with coverage peaking around the middle of the swept range rather than at either extreme.

At K=14, four of the fourteen topics cleared the purity bar and were committed: T1 (616 traces, 100% pure line_1_only), T6 (473 traces, 91.5% pure reached_line_2), T9 (251 traces, 90.4% pure line_1_only), and T13 (135 traces, 100% pure reached_line_3) — notably, a perfectly pure topic for the rarest outcome, on the very first modeling round. The other ten topics ranged 46–70% purity and were left for the next round.

Figure 7. Term×topic heatmap for the K=14 fit: T1, T6, T9, and T13 (the four committed topics) stand apart from the other ten on outcome purity; several top terms are the organizational attribute tokens (team-count and handoff tiers, starting line) rather than plain activity n-grams, since those facets are active in this round's encoding.
Figure 8. Small multiples of all 14 topics' process graphs, before this round's commits. Every topic shares the same short, simple Accepted/Queued/Completed backbone typical of this log — the outcome bars beneath each one are what actually distinguish them.
Figure 9. Topic T1 detail (K=14, n=616): 100% line_1_only. S 3.2× · O 1.00. Committed to knowledge.
Figure 10. Topic T6 detail (K=14, n=473): 91.5% reached_line_2 (433 of 473; the remaining 40 reached_line_3). S 2.9× · O 0.69. Committed to knowledge.
Figure 11. Topic T9 detail (K=14, n=251): 90.4% line_1_only. S 3.0× · O 0.66. Committed to knowledge.
Figure 12. Topic T13 detail (K=14, n=135): 100% reached_line_3 — the rarest outcome in the dataset (7.2% overall), isolated perfectly on the very first modeling round. S 3.0× · O 1.00. Committed to knowledge.
Figure 13. The same 14 topics immediately after committing T1, T6, T9, and T13 — each now carries a ✓ checkmark.
Figure 14. Knowledge base after Step 2: 5 groups committed (1 obvious + 4 topics), 3,224 of 7,553 traces (42.7%) explained so far.

Step 3 — Diminishing returns: three more rounds find nothing further

STEP 3The 4,329 traces left after Step 2 were re-scored (top-ranked candidate this round: activities + 2-grams + gap-augmented 2-grams, sharp 0.674, NMI 0.018, score 0.346 — no excluded facet involved this time). A K-sweep under the same purity logic as Step 2, but progressively widened and loosened to make sure nothing was missed, was run three times over the same 4,329-trace remainder: K=4–16 at ≥0.80 purity/n≥12, then K=3–12 at the same threshold with n≥10, then K=2–8 with n≥8. Every single K tried, across all three passes, produced zero qualifying topics. The best any individual topic ever reached in these three rounds was 67.7% dominant-outcome share — informative as a topic, but well short of even a relaxed purity bar, and this pattern held whether K was small or large. This is a sharper, more absolute version of the "thin round" both companion case studies eventually hit (Sepsis's Step 4 still found one 7-trace topic; here, nothing at all cleared the bar at any K from 2 to 16) — a clean, unambiguous, and early diminishing-returns signal that further topic modeling on this remainder was not going to pay off, so the session moved directly to Stage 5.

Figure 15. Stage 2 encoding re-scored against the 4,329-trace remainder — this round's top-ranked candidate adds gap-augmented 2-grams rather than any attribute facet.
Figure 16. K-sweep pooled 2D embedding and Sankey on the 4,329-trace remainder, K=3–20, filtered to dominant-outcome share ≥ 0.80 — visibly empty across the whole swept range, the clearest possible signature of a remainder that has run out of separable topic structure at this purity bar.

Step 4 — UMAP + k-means (N=24) on the 4,329-trace residue

STEP 4Topics were refit at K=10 purely as a feature space (not evaluated for purity in their own right — the K=10 choice itself came from comparing K=4/6/8/10/12 as candidate feature spaces and taking the one whose downstream clustering covered the most traces), then UMAP-embedded and clustered with k-means swept across N=8–28. At the standard 0.80 homogeneity bar used throughout the other two case studies, this sweep also came back completely empty, at every N from 8 to 20 — the residue resisted clustering just as thoroughly as it resisted topic modeling. Relaxing the bar to 0.75 (the loosest threshold used anywhere in this session, and looser than either companion study needed) finally surfaced real structure: coverage peaked at 881 of 4,329 traces (20.3%) at N=24, across four qualifying clusters, ahead of every other N tried (0–662 traces).

Figure 17. Topics refit at K=10 on the 4,329-trace residue — used only as an input feature space for this stage's clustering, not evaluated for topic purity in its own right.
Figure 18. UMAP embedding of the 4,329-trace residue, colored by outcome. A large, loosely-differentiated central mass with no sharp partition — visually consistent with the empty topic-modeling and 0.80-threshold clustering sweeps above.

N=24 was taken forward and re-fit directly (rather than read off the sweep) before committing. All four qualifying clusters — 190, 283, 248, and 160 traces, at 75.8%, 78.4%, 75.0%, and 75.6% homogeneity respectively — turned out to be line_1_only-dominant. Neither reached_line_2 nor reached_line_3 ever formed a homogeneous cluster at any N tried, at any threshold down to 0.75 — a mirror image of Step 2, where the very first topic round found a perfectly pure reached_line_3 topic essentially for free. Whatever distinguishes a clean single-line resolution from one that escalates seems to survive both NMF and k-means once the obvious group and Step 2's four topics are removed; the four Step 4 clusters mostly separate different flavors of still-tidy line_1_only handling from each other, not escalation from non-escalation.

Figure 19. The same 4,329-trace UMAP embedding, after running k-means at N=24, colored by cluster assignment (24 distinct colors) rather than by outcome.
Figure 20. The N=24 k-means run's cluster table: four clusters clear the 0.75 homogeneity bar — 190 traces at 75.8%, 283 at 78.4%, 248 at 75.0%, and 160 at 75.6%, all line_1_only-dominant — while every other cluster in the table stays well below it, mixing outcomes roughly in proportion to the residue's own baseline mix.

The four qualifying clusters were committed directly from the cluster table.

Figure 21. The cluster table immediately after committing the four qualifying clusters — each now shows “Added ✓” in place of its “Add to knowledge” button.
Figure 22. Knowledge base after Step 4: 9 groups committed, 4,105 of 7,553 traces (54.3%) explained. 3,448 traces (45.7%) remain — split 52% reached_line_2, 38% line_1_only, 10% reached_line_3, shown directly in the app's own “remaining / unexplained” panel.

Final knowledge base and what was left unexplained

Table 1 lists every group committed during the session, in commit order, with its size, share of the full dataset, dominant outcome, and provenance.

#Descriptionn% of datasetDominant outcomePurityS · OSource / step
0Obvious group: Accepted_In_Progress → Accepted_In_Progress → Completed_In_Call1,74923.2%line_1_only98.3%– · 0.90obvious group (Step 1)
1Topic T1-dominant (K=14)6168.2%line_1_only100%3.2× · 1.00topic (Step 2)
2Topic T6-dominant (K=14)4736.3%reached_line_291.5%2.9× · 0.69topic (Step 2)
3Topic T9-dominant (K=14)2513.3%line_1_only90.4%3.0× · 0.66topic (Step 2)
4Topic T13-dominant (K=14)1351.8%reached_line_3100%3.0× · 1.00topic (Step 2)
5Homogeneous cluster: line_1_only-dominant (N=24, K=10)1902.5%line_1_only75.8%2.4× · 0.31k-means cluster (Step 4)
6Homogeneous cluster: line_1_only-dominant (N=24, K=10)2833.7%line_1_only78.4%2.8× · 0.35k-means cluster (Step 4)
7Homogeneous cluster: line_1_only-dominant (N=24, K=10)2483.3%line_1_only75.0%2.6× · 0.31k-means cluster (Step 4)
8Homogeneous cluster: line_1_only-dominant (N=24, K=10)1602.1%line_1_only75.6%2.7× · 0.37k-means cluster (Step 4)
Total interpreted4,10554.3%

Table 2 breaks down the 3,448-trace residue by outcome, compared against its share of the whole dataset.

Outcomen in residue% of residue% of that outcome dataset-wide left unexplained
reached_line_21,79051.9%1,790 of 2,464 (72.6%)
line_1_only1,30938.0%1,309 of 4,545 (28.8%)
reached_line_334910.1%349 of 544 (64.2%)
The pattern here inverts what both companion case studies found. In Fines and Sepsis, the rarest outcome was consistently the hardest to capture. Here, the rarest outcome (reached_line_3, 7.2% of the dataset) was comparatively easy — a single clean topic isolated it perfectly on the very first modeling round (Table 1, row 4), and 35.8% of all reached_line_3 traces ended up explained overall. The middle outcome, reached_line_2, was by far the hardest: 72.6% of it — nearly three in four such incidents — remains in the residue, and despite being only 32.6% of the whole dataset it makes up 51.9% of everything left unexplained. Every committed group across both Step 2 and Step 4 was either line_1_only- or (once) reached_line_3-dominant; no group at any point in the session was ever reached_line_2-dominant. Escalating to second-line support and then resolving there, without going further, appears to be the least structurally distinctive trajectory shape in this log — not rare enough to isolate the way the top-line escalations were, and not common enough to dominate a broad topic the way first-line-only resolution did.

Takeaways for students

Check whether a case attribute is the outcome before modeling on it, not after. This session's most consequential methodological decision happened before any K-sweep ran: scoring the encoding candidates surfaced an NMI of exactly 1.000 for one attribute, an unambiguous sign that it wasn't a predictor of the outcome but a restatement of it. Excluding it changed which encoding was actually usable for the rest of the session. A tool that helpfully surfaces "this attribute correlates with the outcome" cannot, by itself, distinguish a genuine predictor from a disguised copy of the label — that judgment call is the analyst's to make, and it has to be made before the first fit, not discovered afterward as a revision.
Diminishing returns can be immediate and total, not just gradual. Both companion case studies show purity eroding round over round — a productive round, then a thinner one, then a thin one. Here, one productive round was followed immediately by three rounds that found nothing at any K tried, across three separately widened sweeps. Confirming that took extra work (three separate sweeps rather than one), but the alternative — assuming a single empty sweep means nothing further exists — would have been a shortcut worth distrusting on a dataset this small and low-dimensional.
Fewer activities and a smaller vocabulary do not make a dataset easier to partition. BPI2013 has the smallest activity vocabulary of all three case studies (13, vs. Sepsis's 16 and Fines' larger set) and ended with the lowest explained share (54.3%, vs. 89.4% and 97.3%). A short, simple process backbone repeated across almost every trace — as Figure 8 shows directly — leaves NMF and k-means with less behavioral variation to work with, even when there is plenty of data (7,553 traces is not a small dataset) and a reasonably balanced three-way outcome split to try to separate.
The hardest-to-capture outcome is not always the rarest one. Both other case studies found their rarest outcomes hardest to isolate. Here, the rarest outcome was the easiest — captured almost immediately with perfect purity — while the numerically dominant escalation tier, sitting in the middle of the severity scale rather than at either extreme, proved the hardest by a wide margin (Table 2). Whether an outcome is easy or hard to structurally isolate is an empirical question about the specific log, not something to assume from its base rate alone.
Loosening a threshold is a reportable decision, and the loosest threshold used should be the most visible one. Step 4's clustering literally could not surface anything at the 0.80 bar used throughout the other two studies, at any cluster count tried. Relaxing to 0.75 is what this document actually reports (Table 1) — a looser bar than either companion study needed, stated plainly rather than blended in as if it were the default.