# NTO 2025/2026 — "Artificial Intelligence" profile

*English translation by SOTA – AI Community of the Russian original. Organisers who would like this translation removed can email sota.ai.community@gmail.com.*

## Individual stage

---

## 1. Task description

**Context:** A large online book platform collects data on users' interactions with books. The data are split chronologically into several parts (chunks). For this stage, we model a real-world situation: we have the history of user interactions up to a certain point in time (`train.csv`), and we need to predict the rating for their next interaction in the future (`test.csv`).

**Goal:** Develop a machine learning model that, based on a user's interaction history (`train.csv`), predicts the rating (`rating`) that this user will give to the next book they read.

**Features of the task:**
- **Time gap:** The training set (`train.csv`) contains data for one period of time, and the test set for the following one. This imitates a real-world task in which the model has to predict future preferences.
- **No "cold" users:** The test set includes only those users who have a history in the training set. This makes it possible to focus on the quality of recommendations for the existing audience.
- **One prediction per user:** For each user in the test set, you need to predict the rating for only one book: the last one they read.

This is a classic regression task in the context of recommender systems. It tests the skills of working with sparse tabular data, generating features and building accurate predictive models.

---

## 2. Baseline solution

For a quick start, a baseline solution is provided, which can and should be used as a starting point for developing your own solution.

**The baseline is available at:** [https://github.com/Orange-Hack/nto-ai-25-26-individual-baseline](https://github.com/Orange-Hack/nto-ai-25-26-individual-baseline)

**Recommendation:** To get started, it is recommended to fork the repository. This will let you receive baseline updates seamlessly by syncing with the original repository.

The baseline contains:
- A fully working training and prediction pipeline
- Examples of feature engineering (aggregated features, working with text via TF-IDF and BERT)
- The project structure and the utilities needed to validate a solution

**Important:** For training, the baseline uses only books with `has_read=1` (books that were given a rating). Records with `has_read=0` are excluded from the training set. This matches the task statement, according to which predictions are made only for books that have been read and rated.

It is recommended to study the baseline before starting work on the task.

---

## 3. Data

> A detailed description of the data structure, the fields and the relationships between the tables is given in the "Data" section.

## 4. Solution format

> A detailed description of the data structure, the fields and the relationships between the tables is given in the "Data" section.

## 5. Evaluation metric

The final score is computed from two standard regression quality metrics: the root mean squared error (RMSE) and the mean absolute error (MAE).

### 5.1. Root mean squared error (RMSE)

Shows how large the typical deviations of the predictions from the true values are.

$$
\mathrm{RMSE} = \sqrt{\frac{1}{N} \sum_{i=1}^N (\hat{y}_i - y_i)^2}
$$

### 5.2. Mean absolute error (MAE)

Shows the mean absolute difference between the predicted and the true values.

$$
\mathrm{MAE} = \frac{1}{N} \sum_{i=1}^N |\hat{y}_i - y_i|
$$

*Where $N$ is the number of records in the set, $y_i$ is the true rating and $\hat{y}_i$ is the predicted rating.*

### 5.3. Final score (Score)

To compute the final score, the errors are normalised by dividing them by the width of the rating range ($R=10$). The final score is computed as the arithmetic mean of the normalised errors, subtracted from one. **The higher the Score, the better the result.**

$$
\mathrm{Score} = 1 - \left(0.5 \cdot \frac{\mathrm{RMSE}}{10} + 0.5 \cdot \frac{\mathrm{MAE}}{10}\right)
$$

The leaderboard is sorted by Score in descending order.

---

## 6. Competition conditions

### 6.1. Checking and leaderboard

- **Public leaderboard (Public):** Computed on the visible part of the test data. The result is updated after each successful submission.
- **Private leaderboard (Private):** Computed on the hidden part of the test data. The final results of the competition are determined solely by this leaderboard.
- **Limits:** There is a limit on the number of submissions per day and for the whole stage. The exact values will be given on the competition page.

### 6.2. Constraints

- It is forbidden to use any external data and pre-trained models, except for publicly available ones (e.g. for text processing).
- The solution must be fully self-contained and must not require internet access while running.

For details, see the Participation Rules
