Алгоритм оптимизации коэффициента конверсии

Я работаю с разделенным A / B-тестированием и использую эту библиотеку:
https://github.com/namshi/AB

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

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

Какой алгоритм получит начальное число с лучшим коэффициентом конверсии?

Что я пробовал:

  • Каждое семя имеет «вес», больший вес = скорее всего выбрано
  • При успешном преобразовании семя сохраняется, и к текущему семени добавляется больше веса
  • При каждом запуске добавляется одно случайное семя с 10% от общей массы семян, поэтому 1 из 10 посетителей получает случайное семя, чтобы продолжать тестировать новые варианты

Код, который я уже написал:

public function conversionTest()
{

// Store successful conversion to $seeds arr
$seeds = [];

// Run 200 "conversions"for ($i = 0; $i < 200; $i++) {

// Initialize seed container
$container = $this->initializeSeedArr($seeds);

// Random seed test
$randomSeed = new Test('random-seed', $container);

// Get seed
$seed = $randomSeed->getVariation();

// Push to $seeds as "successful conversion"$seeds[] = $seed;

}

dd($container);

}

private function initializeSeedArr($container)
{
$arr = [];

$count = count($container);

// Add random seed with 10% "weight" of container count
$arr[$this->randomSeed()] = $this->getSeedWeight($count);

// Add rest of the seeds
for ($i = 0; $i < count($container); $i++) {
// Get current seed
$seed = $container[$i];

// If multiple conversion add more weight to current seed
$arr[$seed] = isset($arr[$seed]) ? $arr[$seed] + 1 : 1;
}

return $arr;
}

private function randomSeed()
{
return mt_rand();
}

private function getSeedWeight($count)
{
$round = (int)round($count * 0.1);
$round = $round < 1 ? 1 : $round;
return $round;
}

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

array:21 [▼
1641197740 => 20
1787918404 => 155
2108274654 => 1
667244174 => 7
1296436374 => 3
213433208 => 4
450097167 => 4
465517336 => 1
1071877664 => 1
1430346867 => 6
444753032 => 2
1802187446 => 3
1937663980 => 2
315179639 => 2
2067012650 => 1
717546160 => 1
160677944 => 1
822938190 => 2
553738679 => 1
20707768 => 1
932884407 => 1
]

Семена в верхней части списка получают большую часть «конверсий» и большую часть веса, новые семена добавляются и тестируются, но они не получают никакого веса, так как большее количество конверсий начинает влиять на первые семена. Так что в долгосрочной перспективе это не очень хорошее решение.

Как бы вы это сделали?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]