Finding Hidden Patterns in Airline Maintenance Data with Association Rule Mining — SkyPattern
Airlines generate an enormous amount of operational data every single day, flight schedules, crew rosters, and maintenance logs but most of it never gets looked at for the patterns hiding inside it. That’s the gap this project set out to explore: can a classical, beginner-friendly machine learning technique uncover something genuinely useful in airline maintenance data? The answer turned out to be yes, and the way it got there is worth walking through.
The Problem
When an aircraft reports a fault, it’s usually logged and moved on from as a single, isolated event. But faults rarely happen in total isolation — an engine issue might frequently show up alongside a hydraulic fault, or a particular aircraft type might be more prone to certain fault combinations than others. Spotting these relationships manually, across hundreds of maintenance records, is close to impossible. This is exactly the kind of problem Association Rule Mining was built for.
Building and Preparing the Data
Since real airline maintenance data isn’t publicly available at a student level, the project used a synthetic dataset of 50 flights, each with an aircraft type, route, crew rank, flight hours logged, and a list of reported maintenance issues. Before any mining could happen, the data went through a preprocessing stage: attributes were classified by type (aircraft type and route as nominal, crew rank as ordinal, flight hours as ratio), missing values were handled, and the maintenance issues were converted into a transaction format, treating each flight’s set of faults like a shopping basket, the same structure used in retail market-basket analysis.
What the Visuals Revealed
Five visualizations were built to explore the data before and after mining, and each one told a different part of the story. The three most central to the findings are reproduced below.
A histogram of flight hours logged (not reproduced here) gave a quick sense of how flight duration was distributed across the dataset, confirming there were no extreme outliers skewing later analysis.
A scatter plot of the association rules, plotting support against confidence with bubble size representing lift, confirmed that the ENGINE_WARNING to HYDRAULIC_FAULT rule wasn’t just frequent, it was statistically meaningful, with high confidence and high lift. A line graph tracking the rolling rate of ENGINE_WARNING across the flight sequence added a temporal view, showing the pattern wasn’t a one-off spike but a sustained trend.
Mining the Patterns: Apriori and FP-Growth
With the data prepared, the Apriori algorithm was applied to generate frequent itemsets and association rules, using the standard metrics of support, confidence, and lift. The strongest finding was clear: ENGINE_WARNING and HYDRAULIC_FAULT co-occur in 40% of all flights with reported issues, and whenever HYDRAULIC_FAULT appears, ENGINE_WARNING is almost always present alongside it.
Get Alicia Joseph’s stories in your inbox
Join Medium for free to get updates from this writer.
HYDRAULIC_FAULT → ENGINE_WARNING (fleet-wide):
● Support: 0.36
● Confidence: 0.90
● Lift: 1.5
The FP-Growth algorithm was then run on the same data as a comparison, and it returned the exact same itemsets a useful demonstration that FP-Growth reaches the same conclusions as Apriori, just through a more computationally efficient route, since it avoids repeatedly scanning the full dataset.
Going Multilevel
The final step extended the analysis to a multilevel view: instead of treating the fleet as one block, the same pattern-mining process was repeated separately for each aircraft type. This revealed that the ENGINE_WARNING and HYDRAULIC_FAULT combination wasn’t spread evenly, it was present across all four aircraft types, but noticeably strongest on the A321 fleet.
● A320: support 0.27 · confidence 0.67 · lift 1.3
● A321: support 0.50 · confidence 0.93 · lift 1.8
● A319: support 0.25 · confidence 0.60 · lift 1.2
● B737: support 0.22 · confidence 0.50 · lift 1.0
That’s a meaningfully different insight than the fleet-wide number alone; it points toward a possible aircraft-type-specific root cause rather than a generic, fleet-wide issue exactly the kind of distinction a maintenance team would want to know before deciding where to focus an investigation.
Why This Matters
This project is intentionally small, 50 flights, six fault types, one algorithm applied two different ways but it demonstrates something important: classical, well-understood machine learning techniques don’t need massive datasets or complex models to produce genuinely actionable insight.



