Прогноз вероятности конверсии





















Справка

Вы можете спрогнозировать вероятность любого события. Например:

В качестве строк могут выступать любые сущности. Ключевые слова, часы, дни недели и прочее.

Обратите внимание на то, что лучше указывать число успешных испытаний, а не число успехов. Например, если в одной сессии было 2 конверсии, то счетчик успехов должен увеличиться на 1, а не на 2. Если вы считаете вероятность конверсии, то вы должны указывать колонку конверсии 1 на клик(или сессию).

SD

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

Число REM-шагов

Ограничения

Поддерживает файлы до 500-800MB. В зависимости от браузера. Размер исходящего файла больше всего в Firefox (800MB).

Если файл больше, то удалите из входящего файла все колонки, кроме необходимых.

Если у вас старый комрьютер, то, возможно, поможет закрытие других вкладок и програм.

Применения

Ставки (есть условия)

Если у вас есть какое-то условие, вроде ограниченного бюджета, CPA или ROI.

Нужно домножить вероятность конверсии (колонка _Predict) на число L (коэффициент вписки) и выставить его как ставку. Раз в неделю нужно менять коэффициент вписки, чтобы попасть у условия. NewBid=L * _Predict.

В качестве первого коэффициента вписки приближения можно использовать отношение средней ставки до этого к средней вероятности. Пусть B колонка со старыми ставками, а P с прогнозом. Данные храняться в строках со 2 по 999. Тогда первое приближение L=SUM(B2:B999)/SUM(P2:P999). Но лучше использовать средневзешанное по числу кликов. Пусть C колонка с кликами L = SUMPRODUCT(B2:B999, C2:C999)/SUMPRODUCT(P2:P999, C2:C999).

Если ваша цель чтобы CPA был равен NeadCPA, то первое приближение L = NeadCPA * AverageBid/AverageCPC. AverageBid/AverageCPC это во сколько раз CPA ниже ставки. В итоге у каждого ключевика при ставке L * _Predict ожидаемый CPA будет равен NeadCPA. Если CPC у вас в колонке E, а NeadCPA = 12345, то L = 12345 * SUMPRODUCT(B2:B999, C2:C999)/SUMPRODUCT(E2:E999, C2:C999).

Ставки (Директ, нет ограничений)

Если вы используете новый аукцион Директа.

Считаете маржу без НДС: оборот минус переменные расходы минус НДС. Делите на число конверсий. И домножаете на _Predict получаете ставку.

Например, было 100 конверсий и вы продали 50 чайников по 60$ (с НДС). Закупочная цена 40$ (она вычитается из базы НДС). Расходы на содержания офиса и з/п секретарши не считаем (это постоянные расходы).

Оборот 50 * 60$ = 3000$. Постоянные расходы 50 * 40$ = 2000$. Маржа 1000$.

Учитываем НДС=18%. (1/1.18) * 1000$ = 847$.

Делим маржу на число конверсий(100). Получаем 8.47$ умножаем это число на вероятность конверсии и получаем ставку.

Поскольку между блоками в Директе действует старый аукцион, то рекомендую домножить ставку на 0.95.

Вписка

Допустим нам нужно вписаться в CPA=10$. Неделю назад мы поменяли ставки: в эту неделю у нас было 10 конверсий, 1000 кликов, CPC=0.2$, CPA=20$. В теории, нужно снизить ставки вдвое, чтобы вписаться в условия. Однако, кликов и конверсий у нас мало, чтобы получить достоверные данные.

Берем данные за последние 12 недель построчно. Добавляем их в скрипт и получаем прогноз для последней недели, например в 1.5%.

Ожидаемый CPA=CPC/Вероятность_конверсии=0.2$/1.5% =0.2$/0.015=13.33$. Поэтому понижаем ставки на треть.

Не отказы

На некоторых сайтах нет отслеживания конверсий.

Загоняем в испытания сессии, а в успехи — сессии минус число отказов. На выходе получаем прогноз доли не отказов.

Если выставить ставки пропорционально этой доли, то снизится доля отказов и неотказые клики будут стоит дешевле.

Доля в СР

Загоняем в испытания показы, а в успехи — показы в СР. На выходе получаем прогноз доли показов в СР.

Алгоритм

Исходный метод

Используется REM-модернизация Бета-биномиальной модели с фиксированным средним и нахождением дисперсии по максимальному правдоподобию. Исходный метод, согласно патенту, используется Marin Software. Поэтому можно сказать, что на больших данных этот метод ведет себя неплохо.

Сам метод прогноза известен уже более 50 лет, поэтому нарушения патентных прав нет. Марин патентовало всю систему, а не каждый компонент в отдельности. Более того, патент действует только в США.

Используется бета-биномиальная модель, параметры которой легко найти из матожидания (средней конверсии) и дисперсии (насколько у ключевиков разные конверсии).

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

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

Зная дисперсию и матожидание можно найти параметры A и B бета-распределения. Далее очень просто оценить вероятность успеха = (число_успехов_у_строки + A)/(число_испытаний_у_строки + A + B)

REМ-шаги

Проблема прошлого метода в том, что суммарный показатель успехов файла не является оптимальной оценкой средней вероятности успеха у строк.

Например, у нас есть 10 ключевых слов, пусть в каждом будет по 1000 кликов и 10 конверсий. И 11-ый ключевик, в котором было 10.000 кликов и 200 конверсий. Суммарный показатель конверсии = (10+10+... + 200)/(1000+1000+... + 1000) = 1.5%.

Как видно, в суммарный показатель конверсии очень сильно зависит от одного или нескольких ключевых слов с большим числом кликов.

Более того, если есть зависимость между числом кликов у ключевика и его конверсией, то такая несет в себе сильную систематическую ошибку, которая не снижается с ростом числа ключевиков и кликов.

Аналогичная проблема возникла в одном из разделов теории вероятности, метаанализе. Модель компенсирующая этот эффект называется Random Effects Model (REM, модель со случайными эффектами).

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

Формальное описание (для математиков)

Пусть:

В силу теоремы Байеса, если считать все сочетания A и B равновероятными, то P(A,B|ki,ni)~P(ki|ni,A,B) = PMF[BetaBin(A,B,ki,ni)]

В силу независимости строк:
P(A,B|k1,n1,k2,n2...)~P(A,B|k1,n1) * P(A,B|k2,n2) * ... = PMF[BetaBin(A,B,k1,n1)] * PMF[BetaBin(A,B,k2,n2)] * ...

В силу монотоного возрастания логорифма и x - C:
argmaxv[P(A,B|k1,n1,k2,n2...)]=
=argmaxv[log(P(A,B|k1,n1,k2,n2...)) - C]

Приравняв C к сумме логарифмов биномальных коэффициентов получим:
argmaxv[L(A + k1,B + n1 - k1) - L(A,B) + L(A + k2,B + n2 - k2) - L(A,B) + ...]=
=argmaxv[L(A + k1,B + n1 - k1) + L(A + k2,B + n2 - k2) + ... - H*L(A,B)]=
Где L(x,y) — логарифм бета-функции, H — число строк

Вычисления v

Для простоты введем обозначение o = n-k

Перейдем от v к x=A+B.
Дисперсия бета-распределения: v = A*B/((A+B)^2+(A+B+1))=m*(1-m)/(x+1)
В силу формулы матожидания бета-распределения: A/x=A/(A+B)=m => A=x*m.
B=x-A=x-x*m=x*(1-m)

Тогда задача сводится к:
argmaxx[L(x*m + k1,x*(1-m) + o1) + ... - H*L(x*m,x*(1-m))]

Первая производная L`(x*m + k,x*(1-m) + o) = -ψ(0)(n + x) + (1-m)*ψ(0)(o + x - m*x) + m*ψ(0)(k + m*x)
где ψ(j)(...) полигамма функция j-того порядка.

Вторая производная L``(x*m + k,x*(1-m) + o) = -ψ(1)(n + x) + (1-m)2 * ψ(1)(o + x - m*x) + m2 * ψ(1)(k + m*x)

Теперь мы знаем производные всех слагаемых целевой функции, таким образом, можно найти ее максимум методом Ньютона.

Вычисления m

m(0) = SUM(ki)/SUM(ni). m нулевого шага равно сумме всех успехов деленной на сумму все испытаний.

m(j) = SUM(ki/(ni * Var[ki/ni]))/SUM(1/Var[ki/ni]), m j-того шага равен средневзвешенному по обратной дисперсии показателю успехов.

Var[ki/ni] вычисляется по формуле полной дисперсии

Var[ki/ni]= Mpi[Var[ki/ni|pi]] +Varpi[M[ki/ni|pi]]=
= Mpi[pi * (1-pi)/ni] + Varpi[pi]=
= M[pi]/ni -M[pi2]/ni + v=
= m/ni -M[pi2]/ni + v=
= (m -m2 - v + ni*v)/ni=
= (m*(1-m) + (ni-1)*v)/ni

Подставив v = m*(1-m)/(x+1) получим
(m*(1-m) + (ni-1)* m*(1-m)/(x+1))/ni=
= m*(1-m)*(1 + (ni-1)/(x+1))/ni ~
~ (1 + (ni - 1)/(x + 1))/ni