Wine class screening

This small real dataset tests robustcov on a tabular problem where class structure is present but not necessarily covariance-shaped.

Result at a glance

LocalOutlierFactor is best in this run with F1=0.900. robustcov Auto is second with F1=0.800 and strong ROC-AUC. This is a good example of competitive but not dominant behavior.

What the data represent

The sklearn wine dataset is reduced to a one-class screening task: one class is treated as normal and another as anomalous.

Why this estimator

AutoRobustScatter is used because the best robust scatter choice is not obvious in advance for this small real dataset.

Reproduce the result

python examples/use_case_wine_class_screening.py

Output from the run

wine class screening
method,seconds,precision,recall,f1,roc_auc,detected
sklearn LocalOutlierFactor,0.0015,0.9000,0.9000,0.9000,0.9932,10
robustcov Auto,0.0156,0.8000,0.8000,0.8000,0.9763,10
sklearn IsolationForest,0.1131,0.6000,0.6000,0.6000,0.8949,10
sklearn EllipticEnvelope,0.0275,0.4000,0.4000,0.4000,0.9017,10
sklearn OneClassSVM,0.0010,0.3077,0.4000,0.3478,0.8627,13
normal_class=0, anomaly_class=1, anomaly_count=10, n=69, p=8, anomaly_fraction=0.145
auto_detector_estimators=3
saved diagnostics to results/use_cases/wine_class

Figures and diagnostics

Wine class screening — baseline f1 Wine class screening — score profile Wine class screening — distance panel

How to read the result

The baseline plot is the key figure. It shows that robustcov is useful, but that local density can be better when class separation is more neighborhood-shaped than covariance-shaped.

What this does not prove

This page is intentionally not a victory lap. It shows how to compare robustcov fairly against familiar sklearn baselines.