cookie

Utilizamos cookies para mejorar tu experiencia de navegación. Al hacer clic en "Aceptar todo", aceptas el uso de cookies.

avatar

Блог о Data Science 💻

Привет, это мой блог о науке о данных.✌️ Рассказываю про best practice, делюсь своим опытом и анализирую рынок труда в DS! t.me/notedatasciencechat По вопросам: @travelwithtagir

Mostrar más
Publicaciones publicitarias
4 087
Suscriptores
-224 horas
-67 días
-3430 días

Carga de datos en curso...

Tasa de crecimiento de suscriptores

Carga de datos en curso...

VWE (Variance Weighted Estimator) - как еще один метод снижения дисперсии. 🚙 Зачем это нужно? Мы хотим по-прежнему снизить дисперсию для преобразования метрики к более чувствительной. Как следствие - снижение длительности эксперимента. 💡 Основная идея Дать пользователям с меньшей дисперсией метрики больший вес для снижения общей дисперсии эффекта. 🖥 Как реализовать? Предположим, мы хотим оценить ARPU и применить к выручке на пользователя для того чтобы снизить дисперсию. Основная реализация заключается в том, что мы смотрим на то, как изменялась метрика в предпериоде и тем самым мы знаем ее дисперсию и как следствие вес. Затем, мы берем вес для метрики на пользователя, равный 1 / дисперсию, тем самым становится очевидно, что при больших дисперсиях вес становится меньше и затем рассчитываем среднее в группе A и группе B. Код который можно реализовать у себя ниже при сплите 50 / 50 с историей в 21 день (это также можно поресерчить, например, если у нас есть бОльшая история по пользователям, будет меньшее смещение, как мне кажется). Чем-то похоже на стратификацию, где каждой страте мы присваиваем вес, только здесь вес рассчитывается на истории пользователя:
import numpy as np
import pandas as pd

n_users = 1000
days = 21 
pre_experiment_revenue = np.random.normal(loc=5, scale=2, size=(n_users, days))

control_group_revenue = np.random.normal(loc=5, scale=2, size=500)
treatment_group_revenue = np.random.normal(loc=5.5, scale=2, size=500)

pre_experiment_df = pd.DataFrame(pre_experiment_revenue, columns=[f'day_{i+1}' for i in range(days)])
pre_experiment_df['user_id'] = np.arange(n_users)

experiment_df = pd.DataFrame({
    'user_id': np.arange(n_users),
    'group': ['control'] * (n_users // 2) + ['treatment'] * (n_users - n_users // 2),
    'revenue': np.concatenate([control_group_revenue, treatment_group_revenue])
})

data = pd.merge(experiment_df, pre_experiment_df, on='user_id')
data['user_variance'] = data[[f'day_{i+1}' for i in range(days)]].var(axis=1)
data['weight'] = 1 / data['user_variance']
data['weighted_revenue'] = data['revenue'] * data['weight']
👎 Минусы VWE: Аномалии могут поломать оценку Метод может быть чувствителен к аномальным значениям в предэкспериментальных данных, что может привести к некорректным оценкам весов Необходима история по пользователям, должна быть богатая история по действиям, например, когда замеряем CTR VWE требует значительного объема предэкспериментальных данных для точного расчета дисперсий и весов. В случае недостатка данных, результаты могут быть менее надежными Может давать смещение При расчете в оценке среднего мы можем получить небольшое смещение из-за перевзвешивания. Другая задача - это получение несмещенной оценки (например, как корректировка средним значением в преэкспериментальной группе при CUPED Можно использовать с CUPED с уже перевзвешенными значениями. В статье от Facebook удалось добиться следующих результатов по снижению дисперсии в %. CUPED only - 37,24% VWE only - 17,31% CUPED + VWE - 48,38% На стратификации не смотрели, как я понимаю, но можно было бы еще, наверное снизить либо есть какие-то ограничения про которые я не знаю. А с Ratio-метрикой так вообще прикол: линеаризируем, VWE, CUPED, стратификацию Этот метод еще освещался на Avito Analytics Meetup + был разбор статьи на YouTube 😉 Ставьте реакции, если пост был полезен, пишите комментарии. Дальше разберем стратификацию и линеаризиацию
Mostrar todo...
Заскуль питона

🆎 CUPED как метод сокращения дисперсии для проведения A/B экспериментов. 🤭 Всем привет! В этом посте хочу рассказать о том что такое CUPED, зачем он нужен? 🤩 CUPED (Controlled-experiment Using Pre-Experiment Data) - один из методов сокращения дисперсии при проведении экспериментов, используемый в индустрии на основе данных предэкспериментального периода. Обычно метрику, которая используется до эксперимента, называется ковариатой. 🔨 Предположим, мы дизайним эксперимент, рассчитываем MDE (Minimum Detectable Effect) и Sample Size (необходимый размер выборки для проведения A/B теста). Рассмотрим стандартную формулу для нахождения MDE подробней: MDE = (F(1-alpha / 2) + F(1 - beta)) * sqrt(Var(X)) / sqrt(sample_size) F(1-alpha / 2) - квантильная функция для 1 - ошибки первого рода (двусторонняя гипотеза) aka критическое значение для H0 F(1 - beta) - квантильная функция для мощности Var(X) - дисперсия метрики sample_size - размер выборки (обычно рассчитывается на основе трафика, целевых действий) 🕺 Обычно в экспериментах…

🔥 9❤‍🔥 1 1 1
🔄Рекомендации аудиокниг в Spotify Недавно Spotify представил пользователям аудиокниги. Новый тип контента требует новых алгоритмов персонализированных рекомендаций. В своей новой статье AI рисерчеры из компании рассказывают о том, как они решали эту задачу 🎵 Аудиокниги, в отличие от музыки и подкастов, требуют более точных рекомендаций, так как пользователи не могут прослушать их перед покупкой. Здесь же возникает еще больше проблем с данными, потому что большинство пользователей ещё не знакомы с аудиокнигами на платформе 👋 В Spotify разработали систему рекомендаций 2T-HGNN. Используя гетерогенные графовые нейронные сети и Two Tower model, они улучшили точность рекомендаций. Этот подход уменьшает сложность модели и повышает её скорость 🙂 Текущие результаты: +46% к числу новых запусков аудиокниг и +23% к общему времени прослушивания. Более того, модель положительно повлияла и на уже знакомые пользователям подкасты 🤣 Пишите в комментариях, что вы думаете о таком подходе? Какие сложности вы видите при работе с рекомендациями аудиокниг? Ставьте реакции китов 🐳 @notedatascience
Mostrar todo...
5🐳 4❤‍🔥 3 1🔥 1👨‍💻 1
Repost from PER SECOND 300K
Photo unavailableShow in Telegram
🦜 Сегодня в 12:00 ➡️ Как подключиться: Страница https://app.spatial.chat/s/ods Пароль: festfinaleparrot
Mostrar todo...
🔥 1
Repost from PER SECOND 300K
🦜 2 июня 2024 с 12:00 до 12:30 мск онлайн-секция Reliabe ML На треке @Reliable ML Иры и Димы, я поделюсь нашим опытом использования дизайн-документов. Рассмотрим, почему важно заполнять дизайн-документы, их преимущества, а также наш опыт их составления. Также расскажу о нашем вкладе в шаблон дизайн-документа, созданный ребятами из @Reliable ML. Хочется немного прорекламировать, что проект о котором я буду рассказывать был создан в рамках Симулятора МЛ, и заполнение дизайн документа является неотъемлемой часть любого проекта. Это систематизация от хаотичного движения к какой-то структуре. В прошлый раз другая команда из SimML, рассказывала про свой дизайн-документ на их треке. Проект так-же проходил ревью в AI Tallent Hub, поэтому рассказать есть о чем. А я буду очень рад вас видеть и ответить на ваши вопросы! Из книги Валеры и Арсения:
It s safe to say that close to 100% of ML projects which hadn’t had a well-written design document failed, whereas a sweeping majority of those systems that had been thoroughly planned found success.
➡️ Когда? 2 июня 2024 с 12:00 до 12:30 ➡️ Как подключиться: Страница https://app.spatial.chat/s/ods Пароль: festfinaleparrot
Mostrar todo...
❤‍🔥 4
Photo unavailableShow in Telegram
У @persecond300k конкурс мемов, обязательно поучаствуйте)
Mostrar todo...
Repost from Сиолошная
Photo unavailableShow in Telegram
Вместе с Данилом с канала @persecond300k подготовили для себя и для вас Бинго-карточку для предстоящей трансляции OpenAI, чтоб было интереснее наблюдать! Некоторые факты субъективные (например, что такое «существенные улучшения»?), но мы постараемся судить объективно! 👍 Правила такие: 1. Когда случается то, что написано — вычёркиваем или обводим 2. Когда выбиваем линию — выпиваете (алкоголь, содовую или сок) 3. Если закрыто 3 линии — то повторяем «Ну Сама, ну даёт!» Заполненные карточки по ходу трансляции можно скидывать в чат или в комментарии к этому посту! (файл в оригинальном разрешении скину в комментарии)
Mostrar todo...
1
sticker.webp0.15 KB
Repost from BOGDANISSSIMO
вы бы лучше репостец сделали https://www.linkedin.com/feed/update/urn:li:activity:7194763232916516864/
Mostrar todo...
BOGDAN PECHENKIN on LinkedIn: BOGDAN (@uberkinder_) on X

Пару дней назад мы написали твиттер тред по нашему AI-продукту VIBE, которым Я занимаюсь последние полгода и который уже успел собрать 11,000 пользователей…

Repost from PER SECOND 300K
Photo unavailableShow in Telegram
‼️ ОТКУДА DEEZER ЗНАЕТ, КАКАЯ МУЗЫКА НРАВИТСЯ НОВЫМ ПОЛЬЗОВАТЕЛЯМ? В этом посте я расскажу о том, как музыкальная платформа Deezer, используя метаданные и нейросети, с первых секунд начала рекомендовать новым пользователям персонализированные треки! В статье вы можете узнать про: 1️⃣ Почему холодный старт важен 2️⃣ Зачем сервисы следят за вами 3️⃣ Зачем нужна кластеризация 4️⃣ Как Deezer научились персонализировать Cold Start ЧИТАТЬ ПО ССЫЛКЕ Отдать голос за канал https://t.me/boost/persecond300k Вступить в чат https://t.me/persecond300kchat #RECSYS
Mostrar todo...
1
Надеплоил llama3 70b, собираем синту под русские инструкт датасеты, приходите тыкаться! @vikhrbot
Mostrar todo...
🔥 3😢 3❤‍🔥 1