Использование методов А/Б тестирования. Решение практического кейса в Python |
||||||||||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-01-03 18:54 Привет, Хабр! В данной статье будет рассмотрено применение логистической регрессии, причинного случайного леса (Causal Random Forest), метода CUPED для оценки изменения целевой переменной в Python при проведении А/Б тестов. Основное внимание будет уделено практике, теоретические аспекты методов будут упомянуты вскользь. Условие: есть датасет компании, которая продает на своем сайте билеты на транспорт и которая зарабатывает на наценке. Аналитик проводит АБ-тест: А и Б - разные варианты новой ценовой политики - наценка 4% или 9%. Вопрос: какую из двух вариантов наценки нужно устанавливать и почему. Датасет можно скачать здесь. Подробное описание данных лежит здесь. Для понимания достаточно знать, что есть две целевые переменные “buy” (факт совершения покупки), “total profit” (прибыль) и основные ковариаты:
Рассмотрим влияние введения наценки на факт совершения покупки (“buy”) и на прибыль (“total_profit”). Загружаем данные. Для оценки влияния на факт совершения покупки (“buy”) построим логистическую регрессию. Перед построением логистической регрессии проверим, соблюдается ли баланс ковариат, а также есть ли мультиколлинеарность. Если баланс ковариат соблюдается, то мы можем сделать вывод, что группы похожи по ковариатам и эксперимент проведен “честно”. Для всех ковариат не отвергаем гипотезу о равенстве средних на 1%-ном уровне значимости, кроме нескольких переменных, которые значимы на 5% и 10%-ном уровне значимости. Полностью таблицу можно посмотреть в ноутбуке. Строим корреляционную матрицу. Для удобства анализа выведем все коэффициенты корреляции, которые по модулю больше 0,5. В данных присутствуют ковариаты, коэффициент корреляции между которыми больше 0,9, что подтверждает наличие высокой мультиколлениарности между переменными (Картаев, 2019). Рассчитаем VIF. Для удобства интерпретации результатов выведем VIF, которые больше 10, который говорит о наличии мультиколлениарности между переменными (Картаев, 2019). Результаты расчета матрицы корреляции и VIF совпадают: существует высокая мультиколлинеарность между переменными price_mean, price_min, price_max; final_rating_mean, final_rating_min, final_rating_max, final_rating_std; dist. Неудивительно, так как эти переменные - разные характеристики одной и той же величины. Чтобы избежать мультиколлинеарности, из переменных, перечисленных выше, оставим только price_mean, final_rating_mean, final_rating_std, dist. После этого в наших данных все равно сохраняется мультиколлинеарность. Но какую-то из этих переменных я не буду выбрасывать, так как существует вероятность выкинуть значимую переменную, что приведет к смещению оценок и получению некорректных результатов. Перейдем от предобработки данных к построению логистической регрессии. Но проблема большого количества ковариат осталась (у нас их 34). Поэтому мы будем строить не простую логистическую регрессию, а логистическую регрессию с регуляризацией L1, L2 и elastic net и сравним результаты. Сутейно: регуляризация - метод, который добавляет дополнительный штраф за сложность модели к минимизируемой функции потерь, то есть менее важным характеристикам регуляризация придает меньший вес. Регуляризация L1 (Lasso) может как обнулить значения некоторых коэффициентов, так и придать им меньший вес. В то время как регуляризация L2 (Ridge/регуляризация Тихонова) не может обнулить значения коэффициентов, но может придать им меньший вес. Elastic net - объединение подходов L1 и L2 - те коэффициенты, которые были занулены при регуляризации L1, в elastic net будут иметь меньшие веса, чем при регуляризации L2. Для удобства интерпретации выведем таблицу со значением значимых коэффициентов. Коэффициент при переменной treatment незначимый, следовательно, согласно логистической регрессии мы не можем утверждать, что введение 9%-ной наценки влияет на факт совершения покупки билета. Логистическая регрессия не учитывает следующий нюанс: при проведении эксперимента на целевой признак может влиять не только наличие какого-либо treatment, но и ковариаты – характеристики наблюдения (см. Рисунок 2). Из этого следует, что внутри каждой группы эффект воздействия будет разный. Одним из методов определения наиболее важных ковариат в части «вложения» в эффект воздействия является причинный случайный лес (causal random forest). Причинный случайный лес похож на случайный лес. В то время как случайный лес делает сплит, основываясь на следующих критериях: ошибке классификации, энтропии или индексу Джини, причинный случайный лес делает сплит таким образом, чтобы максимизировать разницу эффекта воздействия между ветками дерева(Athey and Imbens (2016)). Построим причинный случайный лес для нашего примера и выведем коэффициент при Т. Важно учесть, что алгоритм причинного случайного леса позволяет выделить наиболее важные характеристики, то есть характеристики, которые больше всего влияют на целевую метрику при попадании в тритмент, поэтому мы можем добавить все характеристики в модель, не переживая о мультиколлинеарности - алгоритм решит все за нас. Мы не можем интерпретировать результаты, так как p-value очень большой и эффект статистически не значим даже на 15%-ном уровне значимости. Но построение причинного случайного леса и библиотека SHAP в Python позволяет визуализировать, какие характеристики при разделении деревьев оказались наиболее важными и как изменение характеристики влияет на результат при попадании в тритмент группу. В библиотеке SHAP для оценки важности характеристик рассчитывают значения Шепли. Понятийно происходит оценка предсказаний модели с и без данной характеристики. Формально (см. Рисунок 3): P (S U {i})— это предсказание модели с i-той характеристикой, p(S) — это предсказание модели без i-той характеристики, n — количество характеристик, S — произвольный набор фичей без i-той характеристики. Визуализируем важность характеристик с помощью библиотеки SHAP. В зависимости от характеристик, влияние введения бОльшей наценки на факт совершения покупки может быть как положительным, так и отрицательным. Из рисунка 4 мы можем сделать следующие выводы (более структурировано - в таблице 4). В тритмент группе (в группе с наибольшей наценкой):
Таблица 4: Влияние более высокой наценки на вероятность покупки в зависимости от показателя характеристики в разрезе групп от наиболее важной к наименее важной А теперь посмотрим как введение наценки влияет на “total_profit” (прибыль компании). Из нашего датасета оставим только тех людей, которые совершили покупку, то есть “total_profit” которых > 0. Баланс ковариат соблюдается. Полную таблицу с выводом можно посмотреть здесь. Посмотрим усредненную оценку влияния введения оценки на прибыль с помощью метода CUPED. В рамках метода CUPED необходимо брать только те переменные, которые не изменились во времени (X const), то есть были одинаковыми для наблюдения до эксперимента и после него (Xie, Aurisset, 2016). Это позволяет снизить дисперсию оценки. Эффект рассчитывается следующим способом:
Введение бОльшей наценки увеличивает прибыль на 5,7 условных единиц с покупки на 5%-ном уровне значимости при прочих равных условиях. Минус метода CUPED - невозможность посмотреть гетерогенный эффект в разрезе разных характеристик. Построим причинный случайный лес и продемонстрируем гетерогенный эффект в разрезе разных характеристик. Причинный случайный лес показал следующий результат: введение бОльшей наценки увеличивает прибыль на 6,7 условных единиц с покупки на 15%-ном уровне значимости при прочих равных условиях. Из рисунка 5 мы можем сделать следующие очевидные выводы: при более высоком рейтинге, цене, количеству пассажиров прибыль во время продажи билетов с 9%-ной наценкой (а не 5%-ной) увеличивается. Возвращаясь к стратегии компании, то решение о проценте наценки необходимо принимать в зависимости от целей. Если цель компании - получить наибольшую прибыль, то необходимо вводить наценку: всегда будут находиться богатые люди, для которых время слишком ценное, чтобы искать другие варианты или которые настолько богатые, что не будут замечать наценку на поездку. Но если целевая метрика компании - увеличение количества клиентов, то наценку нужно оставлять низкой. Компании также может попробовать миксовать стратегии: с одной стороны, оставить меньшую оценку, с другой, ввести бОльшую наценку на самые дорогие направления (например, на верхний 10%-ный перцентиль) и на поездки на сегодняшний/завтрашний дни. Список литературы: [1] Филипп Картаев “Введение в эконометрику”: учебник. – М.: Экономический фа- культет МГУ имени М.В. Ломоносова, 2019. – 472 с. ISBN 978-5-906932-22-8 [2] Jacob, Daniel, CATE meets ML - Conditional Average Treatment Effect and Machine Learning (March 30, 2021). Available at SSRN: https://ssrn.com/abstract=3816558 or http://dx.doi.org/10.2139/ssrn.3816558 [3] Scott M. Lundberg, Gabriel G. Erion, and Su-In Lee - Consistent Individualized Feature Attribution for Tree Ensembles (March 7, 2019) Available: https://arxiv.org/pdf/1802.03888.pdf [4] Xie, Huizhi and Juliette Aurisset. “Improving the Sensitivity of Online Controlled Experiments: Case Studies at Netflix.” Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (2016): n. pag. Источник: habr.com Комментарии: |
|||||||||||||||||||