Pull to refresh
4

Data scientist

7
Subscribers
Send message
Refresher обычно выдается стандартно каждый год — на 4 года, ничего сверхъестественного не нужно для этого делать

Базовый рефрешер в ФБ на E6 — 240, Е7 — 480 и дальше, это при оценке ME при ЕЕ — x1.3 при SE x2
Все легко прочитать на blind можно
Если смотреть каждый день в тест в ожидании MDE, возрастает верояность его ложно принять. Даже наличие стат значимого MDE при разовом просмотре теста не гарантирует что не будет ошибки, при многократном просмотре риск растет, разве нет?
Промоделировать это довольно просто или можно посмотреть здесь
varianceexplained.org/r/bayesian-ab-testing
Теперь возникает вопрос: как провести T-test и MW-test для Ratio-метрик? Для T-test нужно уметь считать дисперсию выборки, а для MW выборка должна быть «поюзерной».

Что мешает считать дисперсию для метрика отношения, говорим что это биномиальное распределение/бернули, оценочная дисперсия p*(1-p)

Теперь переходим к новой экспериментальной единице — бакет. Наблюдения в бакете суммируем (числитель и знаменатель независимо):


Вы оценивали процент ошибок (например на синтетике или уже проведенном А/Б) первого/второго рода, при разных B, от B = N до B = const c разными значениеяси

Теперь возникает вопрос: как провести T-test и MW-test для Ratio-метрик? Для T-test нужно уметь считать дисперсию выборки, а для MW выборка должна быть «поюзерной».

Ответ: нужно разложить Ratio в ряд Тейлора до первого порядка в точке:

Данная формула преобразует две выборки (числитель и знаменатель) в одну, сохраняя среднее и дисперсию (асимптотически), что позволяет применять классические стат. тесты.

Похожую идею коллеги из Яндекса называют методом линеаризации Ratio (выступления раз и два).


Почему не стали использовать линеаризацию, она выглядит вычислительно проще и элегантнее
Весь транспорт данных в цикле занимает один день. Эксперименты длятся, как правило, неделю, но заказчик получает инкремент результатов каждый день.


Не возникает ли здесь проблемы многократного тестирования гипотезы?
Спасибо большое за статью

Смотрю код и пытаюсь понять
Зачем в классе mean_vectorizer функция fit
def fit(self, X):
return self

Разве не проще
Вместо
mean_vectorizer(w2v).fit(train_df['list_w']).transform(train_df['list_w'])
Сделать
mean_vectorizer(w2v).transform(train_df['list_w'])

Смотрю на глаз — код не прогонял
2

Information

Rating
Does not participate
Registered
Activity