← ExhibitionFeature_02

Feature_02Predictive Intelligence

Machines fail quietly.This one is listening.

AutoIQAugust 20256 minute readML Engineering, Backend
Role
ML Engineering, Backend
Stack
Python · FastAPI · Scikit-Learn · SQLite · Docker

A predictive maintenance pipeline built around a single uncomfortable truth: the two kinds of mistake do not cost the same.

An end-to-end predictive maintenance platform: sensor data in, failure probability out, with cost-sensitive learning that treats a missed failure as the expensive mistake it actually is.

01

Premise

Premise

Equipment rarely fails without warning; it fails without anyone listening. AutoIQ builds the listener — an ingestion, feature engineering, and inference pipeline that keeps a running opinion on the health of every machine it watches.

02

Method

Method

Automated preprocessing and feature engineering feed a cost-sensitive classifier served through FastAPI. Model serving, health monitoring, and inference endpoints share one contract, so the interface never lags the model.

03

Result

Result

ROC-AUC of 0.97 with a deliberate asymmetry: false negatives are penalised harder than false positives. Semi-finalist, EY Techathon 6.0 — entered solo.

“A false alarm costs an hour. A missed failure costs a factory. The model should know the difference.”

Architecture

The topology, read top to bottom.

01Sensor Ingest
02Feature Pipeline
03Cost-Sensitive Model
04FastAPI Inference
05Health Monitor
Sensor Ingest01
Feature Pipeline02
Cost-Sensitive Model03
FastAPI Inference04
Health Monitor05
Topology

Fig. 02a — topology

Engineering Decisions

3 entries

01

Cost asymmetry encoded in the loss

A missed failure is forty times more expensive than a false alarm, so the training weights say exactly that. Accuracy was never the objective; expected cost was.

02

One contract for model and interface

Feature engineering, inference and health reporting share a single FastAPI schema, so the served model can never drift ahead of the thing calling it.

03

Deterministic preprocessing

Every transformation is versioned alongside the model. A prediction can be reconstructed from raw sensor data months later, exactly.

Challenges

What resisted.

Severe class imbalance

Failures are rare by definition. Stratified sampling plus weighted boosting kept the minority class from being optimised into silence.

Sensor drift

Readings shift as hardware ages. Rolling-window normalisation let the model judge behaviour relative to a machine's own recent history rather than a fixed factory baseline.

Trade-offs

Chosen

More false alarms

Against — Higher raw accuracy

The model is deliberately nervous. An hour of unnecessary inspection is cheaper than an unplanned stop.

Chosen

Gradient boosting

Against — A deep sequence model

Interpretability won. An engineer can ask why a machine was flagged and receive an answer.

0%

ROC-AUC

0

EY Techathon semi-final

0

Solo participant

Timeline

Phase I

Ingestion

Sensor schema, cleaning, and windowed feature extraction.

Phase II

Modelling

Cost-weighted training, threshold tuning against expected loss.

Phase III

Serving

FastAPI inference, health endpoints, containerised deployment.

Phase IV

Submission

EY Techathon 6.0 — entered and defended solo.

Gallery

1cost_weights = np.where(y_train == 1, 40.0, 1.0)
2clf = GradientBoostingClassifier()
3clf.fit(X_train, y_train, sample_weight=cost_weights)
Plate 02a

Fig. 02a — the forty-to-one penalty

1thresholds = np.linspace(0.05, 0.95, 91)
2expected = [(40 * fn(t)) + fp(t) for t in thresholds]
3operating_point = thresholds[np.argmin(expected)]
Plate 02b

Fig. 02b — threshold chosen by expected cost, not accuracy

Fig. 02c — signal field

Results

0.97 ROC-AUC

Held across validation folds with the cost-weighted objective in place.

Semi-finalist

EY Techathon 6.0, competing as a single-person team.

Operational

Inference and health monitoring served behind one reproducible container.

PreviousNext
Return to exhibitionContactFeature_02August 2025