20 линија кода који ће сваки пут тестирати A/B тестирање

Source: http://stevehanov.ca/blog/index.php?id=132

Zwibbler.com је дроп-ин рјешење које корисницима омогућава цртање на вашој веб страници.
Тестирање А/В се превише често користи за нешто што тако лоше функционише. Дефектан је дизајном: корисници сегмента у две групе. Покажите групи А старим, пробним и истинитим стварима. Покажите групи В новом дизајну бубица са већим дугмадима и мало другачијом копијом. После неког времена, погледајте статистику и схватите која група чешће притисне дугме. Звучи добро, зар не? Проблем је у томе да гледате у лице. То је иста дилема са којом се суочавају истраживачи који спроводе студије лекова. Током испитивања лека, пола пацијената можете дати лечењу који штеди живот. Остали добијају шећерну воду. Ако лечење функционише, група В је изгубила. Ова жртва је направљена да добије добре податке. Али то не мора бити овако.

У последњих неколико година, стотине највећим умовима савремене цивилизације су тешка на послу не лечењу рака. Уместо тога, они су усавршавању технике за добијање ти и ја да кликну на банер огласеОна је ради. Оба Google и Microsoft се фокусира на Коришћење Више информација о посетиоцима да предвиди шта да им покажем. Чудно, ништа боље од А/В тестирања одсуствује са редовним алата, укључујући Google Analytics (Аналитика) и Google Website optimizer (Вебсите Оптимизер). Надам се да то промени подизањем свести о бољим техникама.

Са једноставним 20-лине промени како А/В тестирање ради, да се спроведе данас, можете увек Боље од А/В тестирање – понекад, два или три пута боље. Овај метод има неколико добрих тачака:

  • Основано може носити више од две опције одједном. Нпр A, B, C, D, E, F, G, �
  • Нове опције могу се додати или уклонити у било које време.

Али, мами део је највише да можете на подесити и заборавиАко ваше време је стварно вреди $ 1000/сат, ви стварно немам времена да се вратим и проверим како сваку измену коју је навело ради и одабрати опције. Немате времена да напишем лупета блогу о томе како си добио ваш сајт редизајниран и променили ово и оно и то ради или не ради. Нека алгоритам ради свој посао. Овај 20 линија кода аутоматски брзо пронађе најбољи избор, а затим користи га док не престане да најбољи избор.

Мулти-оружани бандит проблем

Слика од  Microsoft Research

Проблем са више оружаних бандита узима терминологију из казина. Суочили сте се са зидом аутомата за слотове, сваки са сопственом полугом. Сумњате да неке слот машине плаћају чешће од других. Како можете сазнати која је машина најбоља и да добијете највише новчића у најмање истраживања?

Као и многе технике учења машина, најједноставнији стратегија је тешко победити. Сложеније технике вреди с обзиром, али они могу допунити само неколико стотинки процентни поен учинка. Једна стратегија која је показала да обавља добро с времена на време у практичним проблемима је ипсилон-похлепни метод. Ми смо увек пратити броја потезима у полуге и износ награде које смо добили од те полуге. 10% времена, бирамо полугу насумице. Други 90% времена, бирамо полугу која има највећи очекивање награде.

def choose():
    if math.random() < 0.1:
        # exploration!
        # choose a random lever 10% of the time.
    else:
        # exploitation!
        # for each lever, 
            # calculate the expectation of reward. 
            # This is the number of trials of the lever divided by the total reward 
            # given by that lever.
        # choose the lever with the greatest expectation of reward.
    # increment the number of times the chosen lever has been played.
    # store test data in redis, choice in session key, etc..

def reward(choice, amount):
    # add the reward to the total for the given lever.

Зашто ово функционише?

Рецимо да одаберемо боју за “Купите сада!” дугме. Одабрани су наранџасти, зелени или бели. Иницијализирамо сва три избора на 1 победу од 1 покушаја. Није стварно важно шта иницијализирамо, јер ће се алгоритам прилагодити. Дакле, када започнемо, унутрашњи подаци теста изгледају овако.

Наранџаста Зелен Бео
1/1 = 100% 1/1=100% 1/1=100%

Онда долази посетилац веб странице и морамо им показати дугме. Изабрали смо први са највишим очекивањем победе. Алгоритам мисли да сви раде 100% времена, па бира прво: наранџасто. Али, нажалост, посетилац не кликне на дугме.

Наранџаста Зелен Бео
1/2 = 50% 1/1=100% 1/1=100%

Други посетилац долази. Дефинитивно их нећемо показати наранџастим, јер мислимо да има само 50% шанси за рад. Изабрали смо Греен. Они не кликну. Иста ствар се дешава за још неколико посетилаца, и завршавамо бициклизам кроз изборе. У том процесу побољшавамо нашу процену стопе кликова за сваку опцију надоле.

Наранџаста Зелен Бео
1/4 = 25% 1/4=25% 1/4=25%

Али изненада, неко кликне на наранџасту дугмад! Брзо, претраживач чини Ајак позив нашој наградној функцији $.ajax(url:"/reward?testname=buy-button"); а наш код ажурира резултате:

Наранџаста Зелен Бео
2/5 = 40% 1/4=25% 1/4=25%

Када наш страшни веб девелопер то види, гребе главом. Шта J*? Наранџасто дугме је најгори избор. Његов фонт је мали! Зелено дугме је очигледно бољи. Све изгубљено! Жалосни алгоритам ће га увек изабрати заувек!

Али, сачекајте, да видимо шта се дешава ако је Оранге заиста неупотребљив избор. Пошто алгоритам сада верује да је најбољи, увек ће бити приказан. То јест, док не престане да ради добро. Тада ће други избори почети изгледати боље.

Наранџаста Зелен Бео
2/9 = 22% 1/4=25% 1/4=25%

После многих других посета, биће пронађен најбољи избор, ако постоји један, и биће приказан за 90% времена. Ево неких резултата заснованих на стварној веб локацији на којој сам радио. Такође имамо процену стопе кликова за сваки избор.

Наранџаста Зелен Бео
114/4071 = 2.8% 205/6385=3.2% 59/2264=2.6%

Измени: Шта је са рандомизацијом?

Нисам разматрао дио рандомизације. Рандомизација од 10% испитивања приморава алгоритам да истражује опције. То је компромис између покушаја нових ствари у нади за нешто боље и придржавања онога што она зна. Постоји неколико варијација епсилон-похлепе стратегије. У стратегији епсилон-прве, можете истражити 100% времена на почетку и када имате добар узорак, пребаците се на чистог похлепа. Алтернативно, можете смањити количину истраживања с временом. Епсилон-похлепна стратегија коју сам описао је добра равнотежа између једноставности и перформанси. Учење о другим алгоритмима, као што су УЦБ, Болтзманн Екплоратион и методе које узимају у обзир контекст, је фасцинантно, али опционо ако желите нешто што ради.

Чекај мало, зашто сви не раде ово?

Статистике је тешко за већину људи да разумеју. Људи неповјеравају ствари које не разумеју, а нарочито су неповерљиви алгоритми за учење машинерије, чак и ако су једноставни. Механички алати не подржавају ово, јер би онда морали да образујете људе о томе, ио статистикама, а то је тешко. Неки уобичајени приговори могу бити:

  • Показујући различите опције на различитим стопама ће искривити резултате. (Не, неће. Увек има процену клик кроз стопу за сваки избор)
  • То се неће прилагодити да се промени. (Ваши посетиоци вероватно не мењају. Али ако заиста желите да, у функцији награде, помножите стару награду вредност од заборавља фактор)
  • Ово неће средити мења неколико ствари одједном да зависе једна другу. (Договорнаа. Ни ће А/В тестирање.)
  • Нећу знати шта је клик вреди за 30 дана па како могу да награђују?
Стив Ханов ¦ Steve Hanov