slabod@, 01.09.2017
1
2
3
4
All queries
1. Генерация корзины
2. Ранжирование
3. Рассчёт метрики
4. Стат-тест
1
2-3
All queries
(all possible \(x_i\) values)
\(q_i, q_j\) выбираются равномерно и попарно независимо
Для всех \(i, j\) случайные величины \(x_i, x_j\) независимы
1
All queries
(all possible \(p_{value}\) )
В каждом эксперименте
генерируется новая корзина \(Q_i\)
Все \(p_i, p_j\) попарно независимы
2-3
4
1
2-3
All queries
(all possible \(p_{value}\) )
Реальная ситуация:
единственная корзина на набор экспериментов
Зависимые \(p_i, p_j\) ?
4
1
2-3
All queries
(all possible \(p_{value}\) )
Пусть
\(q_1 = \) "vk.com"
\(q_2 = \) "моя страница"
Значения \(x_1, x_2\) сильно зависимы
4
Пусть два эксперимента похоже изменяют качество на кластере "vk.com" и на нескольких других
Вердикт стат-теста про эти эксперименты похож
Нельзя считать значения \(p_i, p_j\) абсолютно независимыми:
\(p_i\) более зависимы, чем при отсутствии кластеров
Наличие в корзине похожих запросов повышает чувствительность метрик
Напомним определение чувствительности:
Каждый эксперимент корректен сам по себе,
но их выводы зависимы между собой
Маленькое значение \(p_{value}\) вносит большой вклад в Sensitivity
Эксперименты \(E_1 \: \text{и} \: E_2\) похоже и значительно меняют качество на кластере
\(\Longrightarrow\) их значения \(p_{value}\) вносят большой вклад одновременно
Запросы в одном кластере \(\Longleftrightarrow\)
у них есть общее слово длины хотя бы 4
Проблема:
Запросы объединяются в длинные цепочки
\(q_1\) — \(q_2\) — \(\ldots\) — \(q_l\)
длиной до нескоких сотен.
Несколько очень больших групп и много маленьких, сильно падает чувствительность.
Ограничиваем размер кластера!
Требование к кластеризации:
Запросы из разных групп должны быть независимы.
Утверждение:
второй алгоритм минимизирует максимальную похожесть в паре из разных кластеров для всех разбиений с заданным размером кластера \(k\)
proxima-5
bucketized_
proxima-5
proxima-5
bucketized_
proxima-5
При разбиении на группы размера 0.02 величины корзины разница в чувствительности около 5%
Это статистически значимое падение
Несколько итераций разбиения запросов на случайные группы с тем же набором размеров, что группы зависимости.
Чувствительность падала статистически незначимо.
Нет оснований отвергнуть предположение "разбиение со случайными группами порождает такую же чувствительность, как отсутствие разбиения".
Дано:
\(c_1, c_2, \ldots, c_n\) — контроль
\(e_1, e_2, \ldots, e_n\) — эксперимент
Как сгенерировать синтетические данные, не заботясь о зависимости между \(c_i, e_i\)?
Сгенерируем массив разностей \(c_i - e_i\) !
Для искусственных данных среднее относительное понижение чувствительности равно 0.0177
Для реальных данных относительное понижение чувствительности на единственной итерации равно 0.0573
Подробности на вики-странице:
https://wiki.yandex-team.ru/users/slabod/dependent-queries/