Эффективная онлайн-оценка качества при разработке веб-сервисов

Короткая версия доклада:

Отдел научных исследований Яндекса занимается различными областями компьютерных наук – анализом данных, теоретическими основами машинного обучения, обработкой естественных текстов, компьютерным зрением, информационным поиском, аукционами и теорией игр. Одним из важнейших направлений научной работы отдела стала онлайн-оценка качества веб-сервисов. Решение о запуске или выпуске обновлений, новых версий или компонентов продукта принимается на основе результатов онлайн-экспериментов, в которых взаимодействие пользователей с продуктом оценивается качественно и количественно. В Яндексе проводятся десятки A/B-тестирований, направленных на улучшение поискового запроса.

Для каждого эксперимента выделяется набор пользователей, который делится случайным образом на две равные группы – A и B. Каждой из групп показывается собственная версия веб-сервиса или продукта. Например, группе A демонстрируется текущая рабочая версия продукта, а группе B – экспериментальная версия с какой-либо новой функциональностью, которую необходимо протестировать. По завершении эксперимента со всех пользователей собирается статистика, числовая информация об их поведении – ключевая метрика. Полученное число агрегируется среди пользователей в каждой группе, и для каждой из них получается определенный численный показатель (агрегированная метрика). Взяв разницу двух чисел, сравниваем её с нулём, чтобы понять, в какую сторону – положительную или отрицательную – изменилась ваша метрика.

Однако, полученных результатов недостаточно, поскольку велик фактор случайности в разделении на группы и поведении пользователей, поэтому показатель разницы также можно назвать во многом случайным. Для исключения фактора «шума» в данных применяется статистический тест для выявления эффекта воздействия, и уже после этого принимается решение, действительно ли наблюдаемое нами изменение является следствием новой функциональности, которую мы тестируем.

Наблюдаемая разница средних величин метрики x для версий A и B является несмещенной оценкой среднего эффекта влияния, который в свою очередь также является разницей, но уже математических ожиданий метрики x для версий A и B. Необходимо помнить, что наблюдаемая дельта является реализацией случайной величины. Если версии сервиса неразличимы и средний эффект влияния равен нулю, такое условие называется нулевой гипотезой. Чтобы быть уверенным в значимости наблюдаемого изменения, вычисляется вероятность наблюдения большей или меньшей дельты при условии нулевой гипотезы. Для того, чтобы вычислить эту вероятность, применяется t-критерий Стьюдента, согласно формуле которого в числителе находится дельта, а в знаменателей – дисперсия метрики x для каждой из групп, а также размер выборки каждой из групп. Чем выше модуль t-статистики, тем больше мы уверены в наблюдаемом изменении в нашей дельте.

Размер изменения в эксперименте зависит от самого эксперимента, той функциональности, которая подвергается тестированию. Если тестируется функциональность, слабо влияющая на пользователей, то и дельта будет маленькая. Если стоит задача увеличить t-статистику, то от исследователей зависит только изменение показателей в знаменателе. Проще всего повысить количество участников эксперимента, однако тем самым снижается пропускная способность экспериментальной платформы, а значит ее эффективность.

Альтернативой является снижение дисперсии метрики, повышение ее чувствительности, выраженной через средний модуль t-статистики по всем экспериментам. Чем выше чувствительность метрики, тем более слабые изменения можно будет отследить. Основным ключом к повышению чувствительности является уменьшение дисперсии метрики. Для хорошей метрики также характерна ясная интерпретация направления ее изменения, или, по-другому, ее направленность, которая является ключевым критерием показателем эффективности тестируемого обновления или функциональности системы.

В метриках пользовательской увлеченности выделяют две группы – метрики лояльности пользователей (количество сессий на пользователя, время его отсутствия) и метрики активности (количество кликов пользователя, количество запросов пользователя, время, проведенное им на сайте). Первая группа метрик обладает хорошей пользовательской направленностью, потому что интерпретация её изменений очень прозрачна и хорошо коррелирует с долгосрочными целями компании, при этом данные метрики имеют низкую чувствительность. Напротив, метрики активности имеют путаную направленность, но очень высокую чувствительность. В этих условиях важнейшей задачей является увеличение чувствительности метрик лояльности, но при сохранении их направленности, или, иными словами, необходимо улучшить чувствительность ключевой метрики, сохраняя ее направленность. Чувствительность позволит выявить более слабые изменения метрики, а также использовать меньше пользователей, - и то и другое повышает производительность платформы по проведению экспериментов. Направленность также необходимо сохранить, чтобы делать правильные выводы об изменении качества системы.

В Яндексе используется прием повышения чувствительности метрики, основанный на вычитании предсказаний значений метрики из самой метрики для понижения её дисперсии. При этом применяются методы машинного обучения предсказателя для повышения качества предсказаний, что способствует максимальному сокращению дисперсии и повышению ее чувствительности. При этом необходимо учитывать, чтобы факторы, используемые в предсказателе, были независимыми от тестируемого функционала. В результате применения метода дисперсия исходной метрики лояльности понизилась на 63%, что эквивалентно трехкратному снижению числа пользователей, которые необходимы для участия в эксперименте для получения t-статистики того же уровня, как и в исходной метрике. Наконец, вдвое выросло количество статистически значимых изменений в ходе A/B-экспериментов.