Checklist IOAI 2024 Scientific Round (At-Home) · ML task
Save the Factory: Feature Engineering Challenge
Engineer features from 187×8 widget arrays so fixed-depth decision trees classify widgets as Ruby or Sapphire, scored by ROC AUC.
The task
In the storybook town of Widgetville, a trickster sprite has meddled with the Widget Corp assembly lines. As the new Chief Engineering Detective, you have to sort widgets into two classes, Ruby and Sapphire, using labels recovered from the previous month's production.
Each widget comes with its 'Pulse of the Machine': 8 threads of 187 numbers, stored as a 187 × 8 array. The classifier is fixed to scikit-learn's DecisionTreeClassifier with no hyperparameter changes, so your job is to build good features. There are two difficulty levels, Efficient and Super Duper Efficient, which differ in the tree depth allowed (20 and 4 in the notebook).
For each level, feature generation plus training and inference must finish within 5 minutes on a standard non-GPU Colab instance. The organisers hint that no time series is involved and that the data itself, not only the labels, may have been corrupted. Test data was shared 48 hours before the deadline.
Abridged by SOTA from the official materials. The official statement has the exact rules, and it wins wherever this summary differs.
At a glance
- You get
- A pickle (
FE_hometask_data_v3.pickle) with labelled train and validation splits, where each widget is a 187 × 8 array, and a test pickle (FE_hometask_data_v3_test.pickle) shared 48 hours before the deadline. Split sizes are not stated. The official download link for the train and validation file returned an error (HTTP 404) when checked on 14 September 2026; the test file still downloads. - You submit
- Two files,
efficient_test_predictions.txtandsuper_duper_efficient_test_predictions.txt, each one string of 0/1 predicted labels for the test widgets, plus the notebook so results and time limits can be checked. - Scoring
- ROC AUC (the notebook's evaluation functions compute
roc_auc_scoreon the decision tree's predicted labels). - Rules
- Only DecisionTreeClassifier may be used, with no hyperparameter changes (the notebook fixes
max_depth=20 for Efficient andmax_depth=4 for Super Duper Efficient,random_state=2024) - Training from scratch plus inference, including feature generation, must take no more than 5 minutes per solution on a standard non-GPU Colab instance
- The provided evaluation and prediction-writing functions must not be changed
- Only DecisionTreeClassifier may be used, with no hyperparameter changes (the notebook fixes
- Format
- Scientific round, at-home stage (teams had one month for the three at-home tasks)