Сложность: 800
После инцидента безопасности Holmes Industries восстановила репозитории и провела полное пересобирание окружений. Все разработчики прошли ревизию, контроль доступа был усилен. На первый взгляд — система стабильна.
Однако последующий анализ истории изменений выявил нетипичные паттерны. Некоторые коммиты изменяют логику выполнения, добавляют редкие зависимости, правят условия или точки входа в модули — формально корректно, но без очевидной инженерной причины. Отдельно такие изменения кажутся безвредными, но в совокупности образуют поведение, напоминающее преднамеренное внедрение вредоносного кода.
По истории изменений в кодовой базе Holmes Industries определить, какие коммиты вредоносные (инсайдерские вставки).
Для каждого коммита нужно выдать вероятность саботажа.
Можно скачать здесь https://www.kaggle.com/datasets/prok2027/infected-code/data
commits.csv| commit_id | author | time | file_path | lines_added | lines_deleted | entropy | message |
|---|---|---|---|---|---|---|---|
| c_0001 | person_456 | 1200 | /core/api/data.py | 12 | 3 | 0.73 | refactor logging |
| c_0002 | person_789 | 1250 | /core/security/auth.c | 3 | 2 | 0.10 | update auth |
| … | … | … | … | … | … | … | … |
time — минута с начала месяца (0…43 200) entropy — грубая мера нестандартности изменений (по токенам/диффу) message — текст сообщения коммитаdiff_vectors.parquetВекторные представления диффов/фрагментов (например, code2vec/AST-эмбеддинги) по commit_id.
meta.csvСлужебные признаки и статистика авторов/файлов: частоты, типичные размеры правок, переходы по модулям и пр.
is_malicious ∈ {0,1} — вредоносный коммит или нет.Файл с вероятностями для каждого коммита из теста:
| commit_id | score |
|---|---|
| c_0001 | 0.0021 |
| c_0002 | 0.5312 |
| c_0003 | 0.8475 |
| … | … |
Требования:
- Одна строка = один commit_id из тестового набора.
- score ∈ [0,1].
- Дубликаты, пропуски, несуществующие ID → невалидный сабмит.
Главная метрика: PR-AUC — площадь под кривой precision-recall,
которая особенно устойчива при редком положительном классе.
Формально:
$$ \text{PR-AUC} = \int_0^1 P(R)\,dR $$
где:
- ( P(R) ) — функция precision (точности), выраженная через recall (полноту):
$$
P = \frac{TP}{TP + FP}, \quad R = \frac{TP}{TP + FN}
$$
- интеграл вычисляется по всей кривой зависимости precision от recall,
построенной при изменении порога классификации.
Дополнительно оценивается F1@0.1 — F1 при пороге score ≥ 0.1:
$$
F1 = \frac{2 \cdot Precision \cdot Recall}{Precision + Recall}
$$
Чтобы отправить решение, войдите в аккаунт.
| ID | Дата | Статус | Детали | |
|---|---|---|---|---|
| Нет посылок | ||||