Part VIII: Industrial, Energy, and Infrastructure Sensor AI
Chapter 36: Predictive Maintenance and Prognostics

Failure modes and degradation

"Nothing breaks without warning. It breaks with warning, in a channel nobody was reading, on a timescale nobody was watching."

A Retrospective AI Agent

Prerequisites

This section assumes the measurement view of Part I, that a sensor reading is a noisy, biased transducer output rather than a direct readout of a machine's internal state, developed in Chapter 2, and the vibration and spectral vocabulary from Chapter 7. It also assumes the telemetry framing (assets, tags, machines versus processes) from Chapter 35. No reliability-engineering background is required; the terms you need (failure mode, hazard rate, degradation path) are introduced here. We deliberately stop short of predicting when failure arrives; turning a degradation curve into a numeric remaining useful life is the job of Section 36.2.

The Big Picture

Prognostics is only possible because most machines do not fail instantaneously. Between the first physical defect and the final loss of function there is an interval, sometimes seconds, sometimes months, during which the machine is measurably sick but still running. Every predictive-maintenance system is a bet that this interval exists, that it leaves a fingerprint in the sensor stream, and that the fingerprint grows monotonically enough to extrapolate. Before you fit a single model, you must answer three physical questions about the asset in front of you: what actually fails, how the damage accumulates, and which channel carries the signature. Get these right and the rest of this chapter is estimation. Get them wrong and you will build a beautifully calibrated model of the wrong quantity, watching a flat, reassuring signal while a bearing quietly turns to powder.

Fault, failure, and the P-F interval

Three words that colloquial speech treats as synonyms must be kept distinct. A fault is an incipient defect: a hairline crack, a pit of corrosion, a film of fouling. A failure is the loss of a required function: the pump no longer delivers head, the gearbox no longer transmits torque. Degradation is the process that carries the asset from the first fault to functional failure. Prognostics lives entirely inside that process, which reliability engineering names the P-F interval: the time from the point \(P\), where a potential failure first becomes detectable, to the point \(F\), where the function is actually lost.

The P-F interval is the resource prognostics spends. A model can only warn you if it detects the defect after \(P\) but comfortably before \(F\), and the usable warning is not the whole interval but the slice left after your detection latency. This is why the choice of sensor is a prognostics decision, not an afterthought. On a rolling-element bearing the same defect announces itself first in ultrasonic acoustic emission (a P-F interval of months), later in high-frequency vibration (weeks), later still in audible noise and heat (days), and finally in the machine seizing (hours). Every modality trades interval length for signal-to-noise and cost. The art of the field is to instrument as early on that cascade as the budget allows, because you cannot extrapolate a curve you started sampling the day before it went vertical.

Key Insight

The predictability of a failure is a property of the sensor channel, not of the machine. A single bearing spall has a P-F interval of months in acoustic emission and hours in the motor thermal trip. Choosing the channel sets the ceiling on how much warning any downstream model can possibly extract; no amount of modeling recovers a lead time that the sensor never captured. Prognostics engineering is therefore front-loaded into instrument selection, long before the first line of learning code.

A taxonomy of failure modes and their hazard shapes

Machines do not fail in one way; they fail in a small, enumerable set of failure modes, each with its own physics, timescale, and signature. Practitioners catalog them with a Failure Modes and Effects Analysis (FMEA), which for each mode records the mechanism, the observable symptom, and the effect on function. The dominant mechanisms are worth naming because they behave differently under the sensor. Fatigue accumulates microscopic crack growth under cyclic load and tends to progress slowly then accelerate. Wear and abrasion remove material gradually and roughly linearly. Corrosion and erosion are chemically and environmentally driven. Fouling and scaling deposit material and choke flow or heat transfer. Thermal and electrical breakdown (insulation aging, dielectric failure) often show a long quiet phase and a sudden collapse.

These mechanisms map onto the classic bathtub curve of the hazard rate \(h(t)\), the instantaneous probability that an asset still alive at time \(t\) fails in the next instant. Early life shows a falling hazard (infant mortality from manufacturing and installation defects), a long flat middle of roughly constant, random hazard, and a rising tail as wear-out mechanisms dominate. A convenient parametric family is the Weibull hazard,

$$ h(t) = \frac{\beta}{\eta}\left(\frac{t}{\eta}\right)^{\beta-1}, $$

whose single shape parameter \(\beta\) selects the regime: \(\beta<1\) is the decreasing, infant-mortality branch, \(\beta=1\) is the memoryless constant-hazard middle (failures arrive as a Poisson process), and \(\beta>1\) is the rising wear-out tail. The distinction matters enormously for AI. A purely random, constant-hazard failure has, by construction, no degradation trajectory to learn; nothing in the past predicts it, and sensor-based prognostics cannot beat a fixed schedule. Only wear-out modes, the \(\beta>1\) tail, carry a growing signature that a model can ride. Knowing which of your failure modes are random and which are progressive tells you which are even candidates for prediction, a point revisited when hazard models arrive in Section 36.3.

Degradation as a latent state and its sensor signature

For the progressive modes, the useful abstraction is a hidden degradation state \(x(t)\), a scalar summarizing accumulated damage that we never observe directly. We observe only sensor readings \(y(t) = g(x(t)) + \varepsilon(t)\), a possibly nonlinear, noisy projection of that state. Two properties make \(x(t)\) tractable. It is typically monotone (damage rarely heals), and it is often well described by a small growth law. A widely used model for bearings, batteries, and turbine components is exponential degradation,

$$ x(t) = \phi + \theta \exp\!\big(\beta t + \epsilon(t)\big), $$

with a slow initial rise that sharpens near end of life, matching the empirically observed knee in most wear-out curves. The modeling task is then to invert the noisy observation back to \(x(t)\), which is a state-estimation problem of exactly the kind Part III treats; a Kalman or particle filter tracking the latent damage state, from Chapter 10, is a standard prognostic backbone.

The signature is where sensor physics re-enters. A localized bearing defect strikes the rolling elements at a geometry-determined defect frequency (ball-pass frequency outer race, and its relatives), so the earliest degradation shows up not as higher overall vibration energy but as growing energy at specific sidebands, which is precisely why the envelope and spectral tools of Chapter 7 matter. Statistical shape features help too: as isolated impacts appear, the kurtosis of the vibration waveform spikes long before its RMS amplitude moves, because kurtosis is sensitive to rare large excursions while RMS averages them away. Different modes light up different features, which is the whole reason feature engineering (Chapter 8) is the connective tissue of prognostics.

In Practice: the wind-turbine gearbox that failed in the right channel

A wind operator monitors a fleet of gearboxes, each with an accelerometer on the high-speed shaft bearing. The SCADA dashboard tracks vibration RMS, and for one turbine it sits flat and healthy for eleven weeks. The reliability team, suspicious after a sibling gearbox seized, recomputes the same raw waveform into two extra health indicators: spectral kurtosis and the energy in the outer-race defect band. Both begin climbing at week four, seven weeks before RMS finally twitches. The physics is unremarkable in hindsight: an early spall produces sharp, low-energy impacts that barely move the total energy (RMS) but sharply raise the impulsiveness (kurtosis) and concentrate at the defect frequency. The lesson generalizes past wind: choose the health indicator that matches the failure mode's signature, not the one that is easiest to plot. That indicator then becomes the input to the remaining-useful-life estimator of Section 36.2.

Health indicators: turning a signal into a degradation curve

A health indicator (HI) is a scalar, derived per time window from raw sensor data, that is meant to track the latent state \(x(t)\). A good HI has three measurable virtues: monotonicity (it moves in one direction as damage grows), trendability (it correlates with elapsed life across units), and prognosability (its end-of-life values cluster tightly across units so a threshold means the same thing everywhere). You do not have to eyeball these; monotonicity is quantifiable as the normalized net directionality of the differenced series,

$$ \mathrm{Mon}(y) = \left| \frac{\#\{\Delta y_k > 0\} - \#\{\Delta y_k < 0\}}{n-1} \right|, $$

which is \(1\) for a perfectly monotone indicator and near \(0\) for noise. The listing below computes two candidate indicators from a synthetic vibration run, RMS and kurtosis, and scores each for monotonicity, reproducing the wind-turbine finding that kurtosis is the earlier, cleaner degradation channel.

import numpy as np

rng = np.random.default_rng(0)
T = 120                                   # 120 windows over the machine's life
t = np.arange(T)
damage = np.exp(0.045 * t) - 1.0          # hidden exponential degradation x(t)

def health_indicators(win):
    rms = np.sqrt(np.mean(win**2))
    k = np.mean((win - win.mean())**4) / (win.var()**2 + 1e-12)  # kurtosis
    return rms, k

rms_hi, kurt_hi = [], []
for d in damage:
    base = rng.normal(0, 1.0, 4096)                       # background vibration
    impacts = rng.normal(0, 6.0 * d, 4096) * (rng.random(4096) < 0.02 * d)
    win = base + impacts                                  # sharp, rare defect impacts
    r, k = health_indicators(win)
    rms_hi.append(r); kurt_hi.append(k)

def monotonicity(y):
    dy = np.diff(y)
    return abs((np.sum(dy > 0) - np.sum(dy < 0)) / (len(y) - 1))

print(f"RMS      monotonicity = {monotonicity(rms_hi):.2f}")
print(f"Kurtosis monotonicity = {monotonicity(kurt_hi):.2f}")
Listing 36.1. Two candidate health indicators computed from the same synthetic vibration windows and scored by monotonicity. Kurtosis, sensitive to the rare sharp impacts of an early defect, earns a higher monotonicity score than RMS, which averages those impacts into a nearly flat energy trend. This quantifies the intuition behind the wind-turbine example and is exactly how you would screen indicators before feeding one to an RUL model.

As Listing 36.1 shows, the choice of indicator is empirical and rankable: two functions of the identical raw signal produce degradation curves of very different quality, and a one-line monotonicity score tells you which to trust. That screening step, computed on held-out run-to-failure units so the ranking does not leak, is the bridge from raw telemetry to the prediction machinery of the rest of this chapter.

The Right Tool

Hand-coding a handful of indicators is fine for two features, but a real screen sweeps hundreds of candidates (spectral moments, wavelet energies, entropy, autoregressive coefficients) and ranks them. The tsfresh library extracts roughly 750 time-series features per window and runs a hypothesis-test relevance filter in a few calls, replacing perhaps 200 to 300 lines of bespoke feature code and the statistical selection loop:

from tsfresh import extract_features, select_features
X = extract_features(windows_long_df, column_id="unit", column_sort="t")
X_relevant = select_features(X.dropna(axis=1), life_fraction)   # keep trendable HIs
Listing 36.2. tsfresh extracts and relevance-filters a large feature bank in two calls, collapsing about 250 lines of manual indicator engineering. It handles the extraction and the significance test; deciding the target (here elapsed life fraction) and preventing leakage across run-to-failure units, per Chapter 5, remains your responsibility.

Exercise

A pump has two documented failure modes: (a) a bearing spall that grows over weeks, and (b) a sudden shaft-coupling shear triggered by an unpredictable load transient. For each, state whether sensor-based prognostics can plausibly provide useful warning, name the Weibull shape regime you would expect (\(\beta<1\), \(\beta=1\), or \(\beta>1\)), and if prediction is possible, name one health indicator and the modality it would come from. Then explain in one sentence why a maintenance policy for mode (b) should look nothing like one for mode (a).

Self-Check

1. Define the P-F interval and explain why it is a property of the chosen sensor channel rather than of the machine alone.

2. Why can a constant-hazard (\(\beta=1\)) failure mode not be beaten by sensor-based prognostics, and what should you do about it instead?

3. An early bearing defect raises waveform kurtosis long before it raises RMS. Explain the statistical reason, and name the property (monotonicity, trendability, or prognosability) you would compute to confirm kurtosis is the better indicator.

What's Next

In Section 36.2, we take the degradation curve built here and turn it into a number: the remaining useful life. You will see why a point estimate is almost never enough, how the prediction horizon interacts with the P-F interval we just defined, and why extrapolating a health indicator toward a failure threshold is far subtler than fitting a line to its recent slope.