The problem
Predict whether a credit applicant is a good or bad risk, from the application data. The dataset is the UCI German Credit set: 1,000 applications, 20 features, a binary outcome. It is a well-known benchmark and a genuinely hard one. Only 30% of applicants are bad risks, and that minority is exactly the class you care about. A model that declares everyone good scores 70% accuracy and is worth nothing. The business asymmetry is the usual one. Lending to someone who defaults costs more than declining someone who would have repaid. So recall on the bad class matters more than headline accuracy, and the model you want may not be the one with the fewest errors overall.The files
Split 80/20, shuffled, labels kept in both.good and bad.
Part 1: Feature Refinery
Start the run
Feature Refinery → Refine Features.
Buckets are set to 4 here because the training file is small, 800 rows. On a larger file, leave it
at the recommended 10.
Over the API
Over the API
What happens
The run establishes a baseline first: it trains many models on all 21 columns and records how many decisions the best of them got wrong. Then it works through the columns one at a time, removing, retraining, and deciding. Expand the row to watch it. The progress bar and elapsed time are live.The result
52 minutes.
Before refining
54 false decisions · accuracy 0.730 · F1 0.625 · precision 0.536 · recall 0.750
After refining
46 false decisions · accuracy 0.770 · F1 0.646 · precision 0.600 · recall 0.700
- Column status: one
KEEPorREMOVEper original column. Download it from the Refined Datasets menu on the row. - A measured target of roughly
0.70. This is what the refined data can actually reach, and it is the number that makes or breaks the training run.
Run it twice and you will get different numbers. Different baselines, sometimes different column
decisions, occasionally a run that removes nothing at all. Many independent trainings are averaged
and they do not all land in the same place. Treat one run as evidence, not proof.
Part 2: Model Crucible
Build the dataset
Model Crucible → Datasets → Create Dataset.
German Credit Risk. There is nothing to upload: the
refined train and test files come across as they are, already split and already reduced, and the
bucket count and measured target come with them.
Wait for Completed.
Train
Training → New Training Job.
Over the API
Over the API
Read the target off the dataset rather than guessing it:
The result
Minutes, not hours. Open the finished run.
Model 1 is champion by default: fewest wrong decisions.
The refinement’s own scoring pass reported 46 false decisions and this training run landed on 47.
That is the same ballpark, and it is what to expect. The refinement’s number tells you what the
cleaned data can support. It is not a score the next run inherits.
Choose the champion on your own terms
This is the step people skip, and on this problem it is the step that matters. Model 1 has the fewest errors. That does not automatically make it the model you want. If catching a bad applicant is worth more to you than avoiding an unnecessary decline, then recall on the bad class is what you are buying, and you should take the candidate that gives you more of it even though its total error count is higher. Select it in Select the Champion Model, add a line saying why, and click Set champion. Predictions from that point on run against your choice. Earlier predictions are untouched: each one recorded the version it ran against.Part 3: Predict
Predictions → New Prediction. Choose the champion model and upload german-credit-unlabelled.csv.
class. You do not need to strip the
columns the refinement removed; the platform does it for you.
When the run completes, download the result: your rows, with the predicted class appended.
Over the API
Over the API
What the run showed
The refinement did the work. It took a hard, imbalanced, well-studied dataset and improved it by
removing columns, then told the training stage what target to aim for. Training then produced three
models to choose between rather than one to accept.
Total hands-on time: around ten minutes of clicking. Total wall clock: about an hour, nearly all of
it the refinement running unattended.
How this compares against tuned XGBoost, LightGBM, CatBoost, Random Forest and Logistic Regression
on the same held-back rows is published on the
benchmarks page. This run is a separate one from the benchmark, so
the figures differ slightly.
The other six use cases
Credit approval, warranty fraud, stroke screening, radar, cardiac disease, mortality risk.
Try it with your own data
The quickstart, without the commentary.
Automate it
The same run driven by a script or an agent.
Input data
Getting your own CSVs into the right shape.