Всем привет! Сегодня хочется поговорить про важную тему, а именно - стат. значимость. Почти на каждом собеседо…
Всем привет! Сегодня хочется поговорить про важную тему, а именно - стат. значимость. Почти на каждом собеседовании в бигтех спрашивают данную тему и ожидают услышать с одной стороны четкий математический рассказ, с другой стороны развернуть все в сторону прикладную: как это использовать в проде?
Представим такую задачу: у тебя есть две модели машинного обучения, первую ты обучал месяц назад на каких-то данных, а за месяц набралось еще данных, появились новые подходы и ты обучил новую версию модели. На валидационной выборке, которая строго не входила в трейн модели выдали абстрактный скор качества:
0.95
для версии прошлого месяца
0.98
для версии текущего месяца.
Как можно ответить на вопрос: стоит ли катить модель в прод при прочих равных (вес, скорость инференса и тд)?
Вариант 1:
можно провести кросс валидацию и замериться не на одной выборке, а на фолдах, причем чтоб размер фолда был репрезентативен и немал.
Вариант 2:
применить стат. тесты.
Рассмотрим пример оффлайн стат. теста на примере нашей задачи.
Конкретно для этой задачи подходит
бутстрапированный метод,
потому что распределение лосса функции заведомо неизвестно (обычно в мат стате к требуются условия на нормальность и т.д).
Сформируем гипотезы:
H_0 (нулевая гипотеза)
- новая модель не стат. значимо отличается от старой
H_1 (альтернативная гипотеза)
- новая модель лучше старой.
0. Возьмем нашу валидационную выборку.
1. Насэмплим валидационных примеров в количестве меньшем кол-ва валидационной выборке.
2. Замерим какие-то показатели качества на каждом нашем элементе подвыборки для
модели A (новой) и модели B (старой)
и вычтем одно из другого. Например для ревордов оценки аспекта качества текста:
for i:
D_b[i]=reward_model_a_i - reward_model_b_i
3. Считаем среднее разностей на подвыборке. Сохраняем в наш массив средних разностей по подвыборкам:
D[i] = D_mean_b
4. Повторяем для большого кол-ва подвыборок с возвратом.
Окей, мы получили какие то статистики, что дальше?
Теперь сортируем наш массив средних разностей по возрастанию и берем уровень значимости=0.05. Считаем нижнюю границу, как
lower_bound(B × 0.025)=B_min
и верхнюю как
upper_bound(B×0.975)=B_max
.
Если B_min>0, то с вероятностью 95% истинное среднее разности больше 0.
Отвергаем H0, катим новую модель.
Иначе, мы
не можем отвергнуть H0
и выкатку ставим под сомнение.
После сверки на этом этапе можно уже к
онлайн тесту перейти - АБ тесту
. Их обычно по разному проводят, но алгоритм такой - берем выборку людей с новой моделью и со старой моделью, выборки не пересекаем. И считаем важные для бизнеса метрики, а потом сравниваем, реально ли стало лучше?
На самом деле, существует много еще других стат. тестов - тест Стьюдента
(различаются ли средние значения двух групп?
), тест хи-квадрат
(есть ли статистическая связь между двумя категориальными переменными?
), тест Колмогорова-Смирнова
(соответствует ли распределение выборки эталонному или совпадают ли распределения двух выборок?
), и т.д.
Если еще чего интересное из тестов вы встречали в проде, поделитесь в комментах
😉
.
Всем хорошей пятницы!
@zadachi_ds
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.