NumPy allowed · plain Python earns 10 bonus points
Implement real training/serving skew detection: comparing each feature's mean between the training set and live traffic to catch a genuinely common, silent production bug.
Implement detect_feature_skew(train_stats, serving_stats, threshold_pct). Both dicts map feature name -> its mean value. For each feature present in BOTH dicts, compute relative change abs(serving - train) / abs(train) * 100 (skip a feature if train's value is exactly 0, to avoid division by zero). Return a sorted list of feature names where that relative change EXCEEDS threshold_pct.
detect_feature_skew(train_stats: dict[str, float], serving_stats: dict[str, float], threshold_pct: float) -> list[str]