Competition: Multi-Label Playlist Intent Prediction from Lyrics and Audio Features

Problem statement
Build a model that predicts a track’s playlist suitability tags (multi-label) using its lyrics, audio descriptors, and metadata. Each song can be suitable for multiple contexts simultaneously (e.g., Party and Driving). Your task is to output, for every test track, the probability that each context applies.

Targets (multi-label)
Nine binary targets, each indicating whether the track fits the corresponding playlist context:
- Good for Party
- Good for Work/Study
- Good for Relaxation/Meditation
- Good for Exercise
- Good for Running
- Good for Yoga/Stretching
- Good for Driving
- Good for Social Gatherings
- Good for Morning Routine

Files provided (all paths under public/)
- public/train.csv: Training rows with features and all nine target columns. Contains an integer id column that uniquely identifies rows.
- public/test.csv: Test rows with the same feature columns as train.csv but WITHOUT the nine target columns. Contains id.
- public/sample_submission.csv: Example submission with id plus one column per target, populated with random but valid probabilities in [0,1]. Use it as a template.
- public/description.txt: This file.

Data description (features)
Each row represents one track and includes:
- Text: lyrics in a free-text column (text).
- Metadata: Artist(s), song title, album, release date, genre, key, length, time signature, explicit flag.
- Numeric audio/contextual features: popularity, energy, danceability, positiveness (valence), speechiness, liveness, acousticness, instrumentalness, tempo, loudness, plus top-3 similar songs and similarity scores.
Notes:
- Some numeric-looking fields may be stored as strings (e.g., "-6.85db" in Loudness (db)); participants may parse/clean as needed.
- The emotion column (derived from lyrics) is available and may be used as a feature.

Submission format
- CSV with columns: id, followed by the nine target columns listed above (exactly the same set and order as in public/sample_submission.csv).
- Values for target columns must be probabilities in [0,1].

Evaluation metric
- Macro F1 averaged across targets after thresholding probabilities at 0.5.
  - For each target label independently: binarize predictions at 0.5, then F1 = 2*TP / (2*TP + FP + FN). If a label has no positive examples in the test set, it is omitted from the average.
  - The final score is the arithmetic mean of per-label F1 across all labels with at least one positive example in test.
  - Submissions containing NaN/Inf or values outside [0,1] are invalid.

Deliverables
- Submit a CSV following public/sample_submission.csv exactly in column names and order. Values must be probabilities in [0,1].
