Comments 50
На самом деле польза этих индексов в другом. Они позволяют оптимизировать задачу максимизации дохода в условиях возможности прерывания/продолжения игры.
То есть если вопрос не в кнопках, а скажем в скидках на заказы… то схему можно было бы похачить.
К сведению, против «многоруких бандитов» есть средство :) Индексы Гиттинса.
не понятно что значит против? Gittins index или UCB это просто разные подходы к одной и той же задаче о бандитах, и это три самых популярных подхода, и есть основания полагать, что именно семплирование Томпсона превосходит остальные подходы
Пожалуйста, не забывайте, что картинки под спойлером загружаются до открытия спойлера, предупреждайте о сотне мегабайт забавных танцующих графиков перед катом, заботьтесь о людях с медленным или ограниченным каналом.
ffmpeg -i 7b040fa8ccda428e9a16bbea460f47e2.gif -vf crop=1080:800:100:65 -c:v libvpx-vp9 -crf 23.5 -b:v 0k -pix_fmt yuv420p vid2.webm
Из 26.3 МБ gif получилось 1.5 МБ видео: https://files.catbox.moe/xmvto0.webmВставлять в пост тегом <video>
1. p c маленькой буквы это плотность… там должна стоять вероятность P
2. убрать из с правой стороны k=1 ведь k присутствует и слева…
3. с левой стороны поменять местами в показателях степеней k и k-1местами иначе при k=1 вероянсть будет равна тета… Спасибо
Спасибо за мега полезную статью. Уточняющий вопрос про A/B тесты: мы научились считать n для желаемых величин альфа и бета, но оно зависит от тетта контроля, которое мы не знаем. Мы берем какую то его оценку по предыдущим тестам?
— альфа и бета (каким либо образов выбираются, если это онлайн то скорее всего тычут пальцем в небо)
— текущую конверсию (из данных)
— текущую дисперсию (из данных)
— минимальный лифт, или то, сколько на минимум должна увеличиться конверсия, что бы новая вариация считалась успешной (кто то ответственный; из этого получается вторая тета)
теперь данных достаточно, что бы вычислить n
Это очень невежливо по отношению к читателю вводить переменные в формулы не дав их расшифровки.
\large \begin{array}{rcl} k &\sim& \text{Bernoulli}\left(\theta\right) \\ p\left(k\right) &=& \theta^k \left(1 — \theta\right)^{1 — k} \end{array}
P.S. Ваш math ajax даже не позволяет скопировать формулу в таком же виде, как оригинал.
И вы тут путаете условные обозначения и теорию. Весь теорвер можно переписать с использованием значков (тут я хотел использовать эмоджи, но harbrahabr их режет), но, допустим, других букв. Формула из примера выше не меняет своего смысла от использования других букв:
Ф(л)=Жю(1-Ж)1-ю
Утверждать же, что всякий человек, знакомый с теорвером, обязан точно знать «общепринятную» букву для того или иного являения — это как раз и есть невежливость и алиенация.
Формула из примера выше не меняет своего смысла от использования других букв:
Ф(л)=Жю(1-Ж)1-ю
Вот как раз именно в таком написании она теряет всякий смысл
Во-первых, там все предельно подробно изложено.
Во-вторых, если вы понимаете, что на месте p
могла стоять любая другая буква, то чем именно вам не нравится p
? Это такая же другая буква, как и любая другая.
В-третьих, статья подразумевает наличие у читателя базовых знаний статистики. В ней не объяснены ни знак суммы, ни знак ~. Также в тексте встречается матожидание в виде записи E[x], которая тоже нигде не объясняется. Ни введено понятие условной вероятности и даже понятие вероятности тоже не введено. И еще, наверное, много чего.
Но это все вводится, дается и объясняется в любом базовом курсе статистики, знание которого является обязательным для понимания этой статьи.
p — не переменная
2. на самом деле и тот и тот подход позволяет использовать признаки пользователей, важно, что бандиты это именно оптимизация, а тестирование — это трата времени, если мы говорим о онлайн тестировании сайта/рекламы/итд
Отличная статья! Будет чем на выходных заняться для души! :)
Это нужные статьи. Благодарю.
«Для этого идеально подходит бета распределение по трем причинам:»
разве если мы предпологаем что мы случайная величина имеет распределение бернулли… то при проведении эксперементов.и попытках установить параметр данного распределения у нас есть другие варианты кроме того как считать что сам параметр имеетраспределение Бета?? это же автоматически вытекает… мы ничего выбирать нем ожем… или я не прав… Спасибо большое…
print 'Winner is %i' % estimated_winner
вот поведение меняется каждые 2000 итераций… в коде параметры постоянно апдейтятся и вседствие чего поведение на каждом следующем промежутке смазывается, но тем не менее удается определить каждый раз удачную руку… поэтому и графики разные… иначе если бы параметры затирались каждый новый этап… то графики были бы одинаковыми…
Вопрос… существуют ли механизмы… диагностики… может меры какой-то… что-то по типу тригера… который бы говорил что судя всего поведение меняется и удавалось старую историю каким-то образом отбрасывать из статистики… и апдетить не все результаты а только последние…
Вопрос… существуют ли механизмы… диагностики… может меры какой-то… что-то по типу тригера… который бы говорил что судя всего поведение меняется и удавалось старую историю каким-то образом отбрасывать из статистики… и апдетить не все результаты а только последние…
у вас на руках есть распределение, а именно бета распределение для каждой ручки, а значит вы можете в принципе посчитать все что угодно; например мы можете решить, что выкидываете из теста все ручки у которых CTR ниже какого то маленького числа, и используя то, что у вас есть распределение, подсчитать вероятность того, что среднее значение ниже порога с какой то долей вероятности (прямо как в обычном тестировании); ну или проще, просто выкидывать все ручки на которые за последний месяц было послано менее процента трафика; ну и так далее, когда на руках есть функция плотности, то можно вообще что уродно делать -)
Есть старая статейка о том же, но более простым языком
Мы хотим получить(дообучить) идеальную модель, которая объединяет плюсы всех 4-х моделей из эксперимента?
можно попробовать понять по логам и профилям чем отличаются пользователи и как то улучшить модель, но это конечно так себе рецепт -)
но есть имхо два дальнейших пути, после того как исследование логов не особо помогло
1 — ансамблирование, ну грубо говоря сделать третью модель которая будет решать кому что показать
2 — контекстуальные бандиты — это тоже самое что и обычные, только используют признаки пользователя (и остального окружения) для того что бы решить, что показать и кому
Кстати power.prop.test из R для одностороннего теста почему то стабильно предлагает в 2 раза большее количество экспериментов на группу чем метод, описанный здесь. Например, для примера из статьи:
power.prop.test(
p1 = 0.001,
p2 = 0.0011,
sig.level = 0.01,
power = 0.99,
alternative = "one.sided")
Two-sample comparison of proportions power calculation
n = 4541213
p1 = 0.001
p2 = 0.0011
sig.level = 0.01
power = 0.99
alternative = one.sided
NOTE: n is number in *each* group
Байесовские многорукие бандиты против A/B тестов