Тонкости A/B тестирования: проблема подглядывания | Вебинар Анатолия Карпова | karpov.courses

Sdílet
Vložit
  • čas přidán 24. 08. 2024
  • Курс «Аналитик данных»: bit.ly/3rWZ8je
    В погоне за более быстрой проверкой продуктовых гипотез легко допустить серию ошибок в организации A/B тестов. Если мы очень торопимся провести эксперимент и готовы завершить его при первой же возможности, будьте готовы, что увеличивается риск ложного срабатывания. Как этого избежать? Обсудим на вебинаре.
    ● Поэкспериментировать с симуляцией A/B теста и проблемой подглядывания в Jupyter Notebook: cutt.ly/Rvk8zo8
    ● Поиграть с калькулятором для размера выборки: evanmiller.org/ab-testing/sample-size.html
    ● Посмотреть, как исследования без чёткого плана могут приводить к неверным интерпретациям на примере большой научной работы, проведённой в Дании и показавшей, что маски не очень-то и защищают от коронавируса: bit.ly/32iZeVx
    ● Прочесть комментарий Data Scientist'а Алексея Чернобровова, чтобы понять, что с ним [исследованием] не так: chernobrovov/posts/1276131569435778
    Учитесь Data Science с нами: karpov.courses/

Komentáře • 36

  • @clockfixer5049
    @clockfixer5049 Před 2 lety +10

    У меня такое чувство, что такая частота попаданий p-value под threshold в этих симуляциях связана с уж очень большим стандартным отклонением. И мне кажется, этот момент немного выпал из поля зрения, но снижение дисперсии в выборках является еще одним способом увеличения MDE.

  • @karinashakhgeldyan881

    отлично. можно с pValue сделать ряд оценок. 1. рассчитать дов. интервал. 2. сяитвть не по накоплкнным данным, в по усредненным pvalue на ежкдневных выборках. 3. усреднить pvalue в накоплкнных данных. оценить дов. интервалы pvalue

  • @bellamina
    @bellamina Před rokem +1

    Большое спасибо за этот вебинар! Все по полочкам, как всегда)

  • @freedom_analyst
    @freedom_analyst Před rokem

    Спасибо. Очень понятным языком)

  • @user-uo6rn9jg4y
    @user-uo6rn9jg4y Před rokem

    Очень круто и интересно

  • @user-sy3ob2zh3d
    @user-sy3ob2zh3d Před 8 měsíci

    Спасибо, Master...

  • @sviatoslavgladii7925
    @sviatoslavgladii7925 Před 3 lety +5

    Добрый день,
    Когда можно ждать часть с продолжением про калькуляторы, мощность, как определить длину эксперимента?
    Спасибо за курсы на степике и видео на CZcams

    • @karpovcourses
      @karpovcourses  Před 3 lety

      15 июня karpov.courses/webinar_anatoly

    • @user-rm2fr5uv9b
      @user-rm2fr5uv9b Před 2 lety

      @@karpovcourses здравствуйте, а можно ссылку обновить?не работает(

  • @mukhtarbimurat5106
    @mukhtarbimurat5106 Před rokem

    Kruto, thanks a lot!

  • @osvab000
    @osvab000 Před 3 lety

    Евгений - большое спаcибо и за видео и за деланную работу по просвещению масс и погружению в ML

  • @nyTuHecTDeTeu
    @nyTuHecTDeTeu Před 3 lety +10

    После 30ой минуты почувствовал себя крипово. Как словно фильм по Стивену Кингу) P-value в натуре под 0,05 а в реальности различий нет. Брр.

    • @nyTuHecTDeTeu
      @nyTuHecTDeTeu Před 3 lety +2

      Вообще да, вопрос сделки) Я по большей части тесты в микробизнесе провожу, там P-value 0,05 нужно месяц ждать. И чисто по экономическому эффекту выгоднее повести 5 тестов за неделю пусть даже с P-value 0,2.

  • @user-ot4jy8vl7i
    @user-ot4jy8vl7i Před 2 lety +2

    Анатолий и команда,
    Большое спасибо за семинар.
    Не могу поженить в голове два факта. Помогите, пожалуйса, разобраться.
    1) В лекции мы видим, что pvalue ведет себя непредсказуемо. Может опускаться и понижаться.
    2) С другой стороны, мы знаем, что выборочное среднее - это состоятельная оценка. Т.е. при увеличении размера выборки, оценка должна стремиться к реальной.
    И в этом случае (если оценки в контрольной и тестовой группах стремятся к реальным) различия, как мне кажется, должны по мере проведения теста только усиливаться (и pvalue должен постоянно снижаться).
    Где я ошибся в рассуждении?

    • @sadking110
      @sadking110 Před 2 lety

      Определение состоятельной оценки у тебя неправильное)

  • @fastfo0d543
    @fastfo0d543 Před dnem

    походу рандомайзер сломанный, как может каждый раз показывать различие когда его нет? это уже не проблема подглядывания

  • @JT-ed3dk
    @JT-ed3dk Před 3 lety +3

    А где видео про разницу т теста, манна уитни и бутстрепа?

    • @karpovcourses
      @karpovcourses  Před 3 lety +4

      czcams.com/video/-zps6hm0nX8/video.html&ab_channel=Karpov.Courses

  • @user-we9ef6sm4o
    @user-we9ef6sm4o Před 9 měsíci

    24:25 Ох уже эти профдеформация программиста, начинать подсчёт с нуля: "то есть 100 и 102: отличаются на 3 единицы"))

  • @user-pg8ry1tm3t
    @user-pg8ry1tm3t Před rokem

    Это Монте Карло расчеты можно прерывать по достижении нужной сходимости, а тут совсем непонятно, как сходимость этих рядов работать будет…

  • @alexn3497
    @alexn3497 Před rokem

    Огонь

  • @Trepetsky
    @Trepetsky Před 2 lety +1

    Хах) трейдинг на p-value)) посмеялся)
    Кстати, насчёт долгих экспериментов, на адронном коллайдере долгие, не знаю сколько, но там до 5 сигм и разницы в величинах очень маленькие.

    • @user-pg8ry1tm3t
      @user-pg8ry1tm3t Před rokem

      Ядерная физика - нормальное распределение, пожалуй, единств случай в природе

  • @mlpython1089
    @mlpython1089 Před 2 lety

    Очень интересно. Спасибо.
    А если из А/В тестируемых в конце теста пуассоновским бутстрапом наделать семплов и многократно оценить различия, поможет?

    • @mlpython1089
      @mlpython1089 Před 2 lety

      Нет. Не помогло уж слишком изначально большая дисперсия задана.
      import pandas as pd
      import numpy as np
      from scipy import stats
      import seaborn as sns
      import matplotlib.pyplot as plt
      %matplotlib inline
      mu_control, sigma_control, n_control = 100, 20, 1000
      mu_experiment, sigma_experiment, n_experiment = 100, 20, 1000
      N = n_control #samples
      B = 10 #bootstraps
      def make_sample(original_sample, B, N, index):
      np.random.seed(index)
      new_sample = []

      # samples = np.random.multinomial(B, [1/B]*B, N)[:, index]
      samples = np.random.poisson(1, (N, B))[:, index]
      for i in range(N):
      if samples[i] != 0:
      for j in range(samples[i]):
      new_sample.append(original_sample[i])

      return new_sample
      np.random.seed()
      daily_data_control = np.random.normal(mu_control, sigma_control, n_control)
      daily_data_experiment = np.random.normal(mu_experiment, sigma_experiment, n_experiment)
      p = []
      for i in range(B):
      control_sample = make_sample(daily_data_control, B, N, i)
      experimental_sample = make_sample(daily_data_experiment, B, N, i)
      fit = stats.ttest_ind(control_sample, experimental_sample)
      p.append(fit[1])

      plt.plot([0, len(p)-1], [0.05, 0.05], "r--")
      plt.plot(p)
      plt.xlabel("bootstraps")
      plt.ylabel("p")
      plt.ylim(0, 1)
      plt.show()

  • @Stas0ya
    @Stas0ya Před 2 lety

    а почему не посчитать среднее за весь период?

  • @antologyz
    @antologyz Před 3 lety

    Добрый день, спасибо за лекцию, очень интересно и познавательно. А где можно сам файл с расчетами посмотреть?

    • @karpovcourses
      @karpovcourses  Před 3 lety

      приложили к видео

    • @gillan11
      @gillan11 Před 3 lety

      @@karpovcourses что-то пошло не так

    • @karpovcourses
      @karpovcourses  Před 3 lety

      @@gillan11 что не так?)

    • @gillan11
      @gillan11 Před 3 lety

      @@karpovcourses да, это с ютуб на декстопе проблема - не раскрывает описание полностью. На планшете нормально

  • @user-ob4zk7jr2p
    @user-ob4zk7jr2p Před 3 lety

    А нельзя просто тренд p-value построить и по нему принимать решение - останавливать эксперимент или нет?

  • @sumailsumailov1572
    @sumailsumailov1572 Před 3 lety

    Затрагетизировался тоже

  • @leobreydo9318
    @leobreydo9318 Před 3 lety +2

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

    • @user-gp5km3es1m
      @user-gp5km3es1m Před 3 lety +6

      Вопрос достаточно странный, очень интересно как вы будете вообще оценивать хоть что-то в продакшен системе без A/B тестов (хотя бы оффлайн).
      Во-первых мы не можем гарантировать, что та или иная фича не сделает все хуже, чем было раньше (даже учитывая показанные в видео проблемы, мы с крайне малой вероятностью пропустим ухудшение метрик).
      Во-вторых, бизнесу важно понимать какой профит вообще от вашей деятельности, а аргумент в стиле "ну мы это уже написали, значит можно выкатывать" не прокатит - я не думаю что с таким подходом вашу команду/отдел/проект будут долго держать. Бизнес зачастую хорошо понимает что такое A/B тесты и что без них никаких выводов о качестве работы просто не получится сделать (не исключено что аналитики просто приучили бизнес верить A/B, но это другая история). К тому же им надо что-то адекватное в отчетах написать)
      В-третьих, для ML моделей без подобного тестирования вообще никуда, как бы если у вас итеративная разработка, то как вы поймете что новая модель не хуже? Тут существуют серьезные риски, тк без тестирования на проде вы не можете гарантировать вообще ничего, а выкатывать без тестирования тоже приведет к печальным последствиям.
      Насчет возможности доказать или опровергнуть, в видео сказали что стат тестирование просто дает нам некоторые вероятностные оценки, тут нет доказательств в математическом смысле, только оценивание. И если вы знаете способ сильно лучше A/B, то вперед (без сарказма, если есть что-то крутое, что вы знаете)