Задача о коварном датасете и корпоративном споре - Академия Selectel

Задача о коварном датасете и корпоративном споре

Тирекс
Тирекс Самый зубастый автор
19 июня 2026

Будет полезна дата-сайентистам, аналитикам данных и всем, кто работает с метриками эффективности ML-моделей.

Изображение записи

Условие

В молодой финтех-стартап устроились два аналитика — Влад и Алена. Между ними сразу разгорелось соперничество за кресло тимлида. В качестве финального испытания им поручили обучить модели предсказания оттока пользователей на выделенных серверах Selectel.

Данные, разбитые по сегментам пользователей (регионам присутствия компании), хранились в Data Lake. Чтобы итоговое сравнение было честным, каждому аналитику поручили протестировать модель на собственноручно выбранном наборе сегментов, а итоговую метрику решили считать по всем своим сегментам сразу. Из-за неравномерного распределения клиентской базы по регионам объем данных у специалистов закономерно отличался: в одних регионах компания работает дольше и накопила больше логов, в других вышла на рынок недавно.

Сначала ребятам выгрузили данные за прошлый год (этап 1), а чуть позже — свежие метрики за текущий месяц (этап 2). При этом на каждом этапе сегменты, доставшиеся Владу и Алене, не совпадали по объему — это было всем известно. 

Вечером перед презентацией Влад проверил метрику точности моделей. На первом этапе его модель лидировала. На втором этапе — его алгоритм снова обошел модель Алены. И Влад со спокойной душой ушел спать, уверенный в победе. На утренней демонстрации Алена объединила оба датасета в общий пул, запустила финальный скрипт валидации, и графики показали, что ее общая точность на всем объеме данных оказалась выше, чем у Влада. Влад обвинил Алену в подтасовке логов в облаке, из-за чего возник скандал.

Задача

Рассудите коллег и объясните директору, возможна ли такая ситуация с точки зрения математики, или Влад действительно нашел баг в системе аналитики? Чтобы ваше решение было максимально верным, подойдите к решению с трех сторон: логической, математической и программной.

Решение

Владу рано винить облачную платформу: никакого бага здесь нет. Перед нами классический парадокс Симпсона: статистический эффект, при котором в объединенных данных направление зависимости меняется на противоположное из-за разного «веса» выборок.

  • Способ №1. Логический

Точность (Accuracy) — это не абсолютная величина, а дробь: отношение правильных предсказаний к общему числу тестов. При объединении датасетов мы не можем просто сложить или усреднить проценты точности. Итоговый результат будет «тяготеть» к тому этапу, где объем данных был больше. 

В чем может скрываться секрет победы Алены:

  1. На первом этапе ей мог достаться огромный кусок массива данных, а Владу — совсем крошечный.
  2. На своем куске Влад мог обойти ее только на 1% (80% против 79%). Но Алена могла показать высокий результат (79%) на гигантском объеме данных, что в разы ценнее для общего зачета.
  3. На втором этапе ситуация перевернулась: Владу достался большой массив, а Алене — маленький. И Влад снова победил локально.

В итоге, когда данные объединили, гигантская база Алены с первого этапа, где она показала отличную точность, «вытянула» ее финальный результат вверх. А у Влада все произошло наоборот: огромная выборка со второго этапа была с низкой точностью и «утащила» его общий итог на дно. Влад победил в двух локальных стычках на разных объемах, но Алена победила за счет стабильности на больших данных.

  • Способ №2. Математический

Давайте подберем объемы данных, при которых парадокс сработает наглядно. Начнем с первого этапа.

  1. Влад протестировал модель на 100 объектах и сделал 80 верных прогнозов (точность = 80%).
  2. Алена тестировала на 1 000 объектах и угадала 790 (точность = 79%).
  3. Влад лидирует: 80% > 79%.

Переходим ко второму:

  • Влад тестировал модель на 1 000 объектах и угадал 400 (точность = 40%).
  • Алена тестировала на 100 и угадала 39 (точность = 39%).
  • Влад снова лидирует: 40% > 39%.

Объединяем данные:

Итоговый результат Влада: угадал 80 + 400 = 480 результатов из 100 + 1 000 = 1 100. Общая точность: 480 / 1100 = 43,6%.

Итоговый результат Алены: верно спрогнозировала 790 + 39 = 829 результатов из 1 000 + 100 = 1100. Общая точность: 829 / 1100 = 75,4%.

  • Способ №3. Проверим на Python

Напишем короткий скрипт симуляции, чтобы окончательно доказать Владу правоту Алены. Временная сложность алгоритма — стабильное O(1).

Скрипт симуляции на Python.

Программа наглядно подтверждает: система считает все корректно, а Алена забирает пальму первенства.

Заключение

Владу пришлось признать поражение, отозвать тикеты из техподдержки и сесть за повторение матстатистики. Алена же получила кресло тимлида и поделилась с коллегой доступом к материалам Академии Selectel, где регулярно выходят разборы архитектурных кейсов, нюансов работы с Big Data и машинным обучением. Теперь их модели в продакшене будут застрахованы от любых статистических аномалий!