tgindex

Data Driven / Bogdan Ivanov

описание

Данные, карьера, саморазвитие https://datadrivenbogdan.com/ Помогаю вырасти в работе с данными и зарабатывать больше. За менторством и сотрудничеством — @b_ivanov_kz

931
подписчиков

Лучшие посты

за три месяца
  • 22 июн.390 просмотров

    без подписи

  • 22 июн.353 просмотров

    без подписи

  • 16 июл.346 просмотров9 реакций4 пересылок

    Хочу порекомендовать канал Артема Голубничего — «Apache Superset на русском» Артем — преподаватель и автор курсов по Apache Superset, работе с данными, PostgreSQL и R. Основная тема канала — практическое использование Apache Superset: от установки и первых дашбордов до администрирования, подключения баз данных и работы с новыми возможностями платформы. В канале регулярно выходят: ➖ инструкции и разборы настроек Apache Superset; ➖ примеры создания чартов, метрик и дашбордов; ➖ материалы по PostgreSQL, ClickHouse, Python и R; ➖ обзоры новых версий Superset; ➖ решения ошибок, которые возникают при установке и работе с платформой; ➖ анонсы новых видео и учебных материалов. Отдельное направление работы Артема — практические курсы на Stepik. Сейчас доступны: 📊 «Введение в Apache Superset» https://stepik.org/a/248838 📈 «Apache Superset: создаем реальные дашборды» https://stepik.org/a/281372 🤖 «Model Context Protocol в Apache Superset 6.1» https://stepik.org/a/292601 📉 «Программирование на R: полный курс» https://stepik.org/a/250055 🐘 «Решение задач LeetCode на PostgreSQL» https://stepik.org/a/265676 Материалы строятся вокруг практики: реальные датасеты, пошаговые настройки, рабочие SQL-запросы, конфигурации и полноценные проекты, которые можно повторить самостоятельно. Канал будет особенно полезен тем, кто уже работает с данными или только начинает изучать BI-инструменты и хочет разобраться в Apache Superset на понятных примерах. Подписывайтесь на «Apache Superset на русском»

  • 22 июн.330 просмотров

    без подписи

  • 22 июн.328 просмотров

    Чем живем 🍌 Месяц без постов — не потому что нечего рассказать, а потому что все происходит быстрее, чем я сам осознаю и тем более успеваю об этом писать — поэтому ловите апдейт! Спартак — Краснодар ⚽️ Сходил на финал Кубка России — посадка около 73 тысяч, из которых процентов 95 — красно-белые. Сама игра — ладно, но атмосфера... Особенно когда весь стадион в один голос запел «Знаешь ли ты» Максим. Видео прикреплю, но это нужно было слышать вживую... Алания 🇹🇷 Суперспонтанный отпуск с друзьями. Из серии: в понедельник «а может рванем?» — в среду уже в Турции. ➖ The Land of Legends — горки, американские, все что крутится, вертится и вызывает острые ощущения. Место огонь, если любите адреналин — рекомендую. ➖ Посетили крепость Алании — виды оттуда нереальные, особенно на закате. ➖ Отдельным пунктом — экскурсия и тусовка на корабле. ➖ Турецкая кухня, особенно искандер с айраном уничтожались только так... ➖ Купались жестко, пили соответственно... ➖ А вот турецкому кальяну ставим уверенных 3 кайфа из 10. Сколько не брали — чисто воздух гоняли. Учеба 🎓 Параллельно со всем этим закрывал магу — проекты и защита курсовой в режиме горящей жопы. Кстати, диссер планирую писать на тему практик обхода формальных процедур найма — так что, если объединялся в «паровозики» и готов поделиться опытом, в следующем году буду давать клич, имейте в виду)) ЧМ 🏆 Активно смотрю — пока апсетов достаточно, но еще групповой этап. Ничейки Бельгии, Испании, Нидерландов, ну и особенно Португалия — Конго)) От ватокатства жестко расстроился — от Португалии, как от одного из фаворитов ожидается не тот футбол, который мы увидели... Надеемся, дальше раскачаются, но братьев узбеков придется расстроить 23го числа... Работа 💻 На работе временно подключили на часть капасити в соседнюю команду — погружался в новые процессы и задачки. Свежий взгляд на чужую кухню — всегда интересно, даже если поначалу чувствуешь себя немного дурачком)) Планы 🗺 Из ближайших планов на следующей неделе лечу в Калининград — надо бы заскочить в казик снова и покупаться в Балтике... Короче, жизнь кипит — постараюсь и канал не забрасывать)) Полезный контент будет — но чуть позже! @data_driven_bogdan

  • 2 июл.320 просмотров15 реакций1 пересылок

    Causal Inference: как оценивать эффект, когда A/B — не вариант (Ч. 4) В прошлых частях разобрали DiD, PSM и Causal Impact. Сегодня — про гео-тесты (geo-lift) и синтетический контроль (Synthetic Control, SCM). Сразу дисклеймер: как всегда, не истина в последней инстанции — если есть чем дополнить/поспорить, велком в комменты👇 Что такое гео-тест❓ Иногда воздействие невозможно раскатить на случайных юзеров — оно живет на уровне географии. Из классических — ценообразование/маркетинг: ➖ отключаем платный digital в нескольких городах ➖ меняем цену / промо в отдельных регионах ➖ запускаем ТВ / наружную рекламу по гео Рандомизировать людей внутри города нельзя, поэтому единица эксперимента — сам город. Берем несколько тест-городов, а остальные остаются контролем. А дальше вопрос ровно тот же, что и во всей серии: 👉 «А что было бы с продажами в тест-городе, если бы мы ничего не меняли?» И тут предлагаю сначала задаться вопросом — Причем тут Synthetic Control (SCM)❓ Проблема гео-тестов: честной контрольной группы обычно нет. Возьмем, например, РФ — Москву не с чем сравнить один-в-один, а взять «средний город» значит поймать кучу смещений. Идея SCM: не искать один похожий город, а собрать контрфакт из взвешенной комбинации остальных. То есть синтетический контроль — это «виртуальный город», склеенный из донорских городов с весами так, чтобы до вмешательства он максимально повторял динамику тестового. Эффект = Факт − Синтетический контроль (после старта теста) Чем это отличается от Causal Impact из Ч. 3❓ По факту оба подхода строят контрфакт, но по-разному: ➖Causal Impact — прогноз ряда во времени (BSTS): учим модель на истории самого тест-города и продлеваем в будущее. (это мы обсуждали выше) ➖Synthetic Control — комбинация других объектов (доноров) в тот же момент времени. На практике их можно и смешивать. Как это работает по шагам❓ 1️⃣ Готовим панель — дневные/недельные продажи по городам (город × время). 2️⃣ Отбираем доноров. Из всех городов выбираем те, что хорошо объясняют тестовый на pre-периоде. Тут важно не только сходство трендов, но и чтобы доноры не были коллинеарны друг другу и сами не были затронуты воздействием. 3️⃣ Строим синтетику. Подбираем веса доноров так, чтобы синтетический ряд повторял тестовый до старта теста (по сути — регрессия на pre-периоде). 4️⃣ Считаем эффект. После старта смотрим разрыв между фактом и синтетикой. Устойчиво выходит за доверительный интервал — эффект скорее всего есть. 5️⃣ Проверяем значимость. Bootstrap по остаткам → p-value, плюс placebo-тесты: «подкладываем» фиктивное воздействие в контрольные города и смотрим, не даёт ли метод ложных срабатываний. Плюс считаем MDE — какой минимальный эффект вообще реально поймать при таком дизайне. Что важно держать в голове❗️ ➖ Хорошее качество на pre-периоде — обязательно. Если синтетика плохо повторяет историю, доверять оценке нельзя. ➖ Ошибка на pre-периоде должна быть заметно меньше ожидаемого эффекта. ➖ Доноры не должны быть затронуты тем же вмешательством (иначе эффект «утечет» в контроль и оценка занизится). ➖ Никаких других крупных событий в тест-городах в тот же момент. Что дальше В самом SCM есть куча важных деталей (часть из них касаются в целом A/B тестов), которые не влезут в один пост — поэтому дальше планирую разобрать более подробно темы: ➖ A/A-тест — как валидировать дизайн ещё до старта эксперимента ➖ MDE — как заранее понять, какой минимальный эффект вообще реально поймать ➖ placebo-тесты — как он помогает в A/A и как получить честный p-value через фиктивные воздействия ➖ Как происходит отбор доноров, что такое бутстрап и др... ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер ❓ Работали с гео-тестами? Расскажите про ваши кейсы в комментах @data_driven_bogdan

  • 22 июн.319 просмотров

    без подписи

  • 8 июл.313 просмотров10 реакций1 пересылок

    Placebo-тесты — как понять, что метод не выдумывает эффект (Ч. 5) В прошлой части разобрали гео-тесты и Synthetic Control Там в блоке «что дальше» я обещал отдельно расписать placebo-тесты — сегодня как раз про них. Сразу оговорюсь, чтобы не путаться: placebo — это общий прием для квази-экспериментов (DiD, SCM, CI), где честной рандомизации нет. В мире классического A/B у него есть близнец — A/A-тест, про который поговорим в следующий раз. Зачем вообще нужен placebo-тест❓ Проблема любых "квази" экспериментов: честной рандомизации нет, поэтому «эффект» легко получить там, где его нет — из-за шума, кривых доноров или случайного совпадения трендов. Placebo-тест отвечает на вопрос: 👉 «А не рисует ли мой метод такой же "эффект" там, где точно ничего не происходило?» Идея простая: подкладываем фиктивное воздействие туда, где его не было, гоняем ровно ту же процедуру и смотрим, что вышло. Если метод и на пустом месте выдает большие эффекты — верить реальной оценке нельзя. Дальше — два основных типа. 1️⃣ Placebo in space (по объектам)❓ Самый частый вариант Логика: честного контроля у нас нет, поэтому делаем «фейковые эксперименты» из самих доноров. По очереди берем каждый контрольный город, притворяемся, что тест был именно в нем, строим ему синтетику из остальных доноров и считаем «эффект» после той же даты старта, что и в реальном тесте. Но эти города на самом деле никто не трогал → любой разрыв, который у них вылезает, это чистый шум метода: случайные расхождения, кривизна фита, совпадения трендов. Прогоняем так по всем донорам → получаем распределение плацебо-эффектов. По сути это наша нулевая гипотеза, собранная не из формулы, а из реальных данных: «вот как выглядит "эффект", когда воздействия не было». Дальше кладём реальный эффект тест-города на этот фон: ➖ реальный эффект торчит далеко за пределами плацебо-облака → на шум не похож, скорее всего эффект настоящий ➖ реальный эффект теряется среди плацебо → такой разрыв метод рисует и без всякого воздействия, это шум Как отсюда получить честный p-value ❓ Это permutation / randomization inference — без параметрических предпосылок. Ранжируем все эффекты (реальный + плацебо) по модулю и смотрим, какое место занимает реальный: p ≈ (кол-во плацебо-эффектов ≥ реального) / (всего объектов) Если тест-город дал самый большой эффект из N городов → p ≈ 1/N. Отсюда важный нюанс: мало доноров → грубый p-value (при 10 городах минимальный p ≈ 0.1). Еще деталь: плацебо с плохим фитом на pre-периоде надо либо выкидывать, либо нормировать. Стандартный прием — считать не сам разрыв, а отношение: RMSE(после) / RMSE(до), где RMSE — это корень из среднеквадратичного разрыва между фактом и синтетикой на окне. Деление одного на другое штрафует города, которые и до «вмешательства» плохо ложились на синтетику, и не дает им зашумить распределение: убедителен тот, у кого до старта было идеально, а после — резкий разрыв. 2️⃣ Placebo in time (по времени) Здесь наоборот: город оставляем реальный (тестовый), а "врем" про дату старта — двигаем ее назад, в pre-период, когда точно еще ничего не происходило (напр. реальный запуск был в июне, а мы притворяемся, что в марте). Переобучаем синтетику только на данных до фейковой даты и смотрим на отрезок между фейковой и настоящей датой — там, где воздействия еще не было: ➖ на фейковой дате вылез «скачок» → метод ловит эффект на пустом месте → реальной оценке верить нельзя ➖ ряд остается ровным вплоть до настоящей даты и разрыв появляется только там → сильный аргумент, что скачок — это именно воздействие, а не артефакт Два теста дополняют друг друга: in-space проверяет «а особенный ли наш город среди других городов?», in-time — «а особенный ли именно этот момент во времени?». . Что важно держать в голове❗️ ➖Плацебо-города должны быть реально не затронуты (иначе эффект «утечет» и распределение поедет). ➖Мало доноров → грубый и неинформативный p-value. ➖ Фильтруй/нормируй плацебо по pre-fit, иначе шумные города замаскируют эффект. ➖ Placebo проверяет ложные срабатывания (ошибку I рода). Хватит ли мощности поймать эффект (ошибка II рода) — это уже про MDE, будет в следующий раз. ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер ❓ А вы валидируете дизайн до старта или катите/смотрите что по факту? @data_driven_bogdan

  • 23 июн.309 просмотров12 реакций1 пересылок

    Надеемся, что Жоао послушает это голосовое перед матчем! Включит его в раздевалке на полной громкости — и да будет сегодня настоящая игра, а не ватокатство🙏🙏🙏 @data_driven_bogdan

  • 22 июн.304 просмотров

    без подписи

  • 22 июн.292 просмотров

    без подписи

  • 22 июн.291 просмотров

    без подписи

  • 19 июл.276 просмотров11 реакций

    без подписи

  • 20 июл.273 просмотров7 реакций

    У меня один вопрос Сегодня Аргентина на поле вышла?

  • 20 июл.271 просмотров7 реакций

    VIVA LA FURIA ROJA🇪🇸🇪🇸🇪🇸

  • 4 авг.258 просмотров7 реакций1 пересылок

    Антон Назаров, создатель сообщества «Осознанная Меркантильность» и бывший разработчик в Apple, Autodesk и Glovo, считает, что само слово «меркантильность» не должно стигматизироваться и быть зазорным: все мы работаем за деньги и хотели бы, чтобы этих денег было больше. Свой проект он называет инструментом для комфортного трудоустройства и зарплатного роста в IT. Мы поговорили с Антоном Назаровым, а также с участниками «Осознанной Меркантильности» о том, как развивать карьеру в современном турбулентном мире и не попадать в зависимость от работодателей. И существует ли золотая середина между фрилансом с его неопределенностью и тем, что называют корпоративным рабством? *Информационная поддержка

  • 7 июл.248 просмотров22 реакций

    💔

  • 2 авг.228 просмотров20 реакций1 пересылок

    Обзор собеседования Компания: Концентрация Вилка: +-250к Должность: ДА Формат: удаленка/гибрид Этапы собеседования: HR – Тех. собес – Offer Дата собеса: июль 2026 Возвращаем рубрику «обзор собесов» За последнее время накопилась пачка собесов — будем разбирать... 1️⃣ Дашборд по эффективности продаж Руководитель отдела продаж: «нужен дэш по эффективности продаж». Что положишь в дашборд? Первое — не бежать строить, а уточнить у заказчика: ➖ какую задачу решаем и какие решения будут по дашборду принимать; ➖ для кого он — сам руководитель, менеджеры или топы (от этого зависит уровень агрегации); ➖ что у них вообще считается «эффективностью», за какой период и в каких разрезах. Дальше по сути кладём. Метрики: ➖ план/факт и % выполнения плана — главный якорь эффективности; ➖ выручка, число сделок, средний чек; ➖ конверсия по воронке; ➖ длина сделки (sales cycle); ➖ выручка и сделки на менеджера, активность (звонки, встречи); ➖ повторные продажи / отток — по желанию. Разрезы: по менеджеру и команде, продукту, региону/каналу, сегменту клиента и во времени. Структура: сверху верхнеуровневые KPI и план/факт, ниже воронка, дальше лидерборд по менеджерам и динамика с drill-down. Проверяют продуктовое мышление: метрики под решения и умение сузить скоуп вопросами к заказчику. 2️⃣ Сломалась витрина с долгами Дано: дашборд с долгами поставщикам — одна сводная, поставщики построчно, метрика одна: сумма долга в рублях. Тебе пишут на праздниках дэш не работает, а документации по нему нет. Заходишь, смотришь в метрики — где было 50 млн, теперь 0, а где-то суммы кратно ниже. Ошибка и в дашборде, и в витрине. Что делаешь? Дальше докидывает условия: дата-инженер заболел, копаешься в поставке данных сам. В итоге причина не в витрине, а в источнике — не подтянулся курс валют за январь, и пересчёт долга поехал. Проверяют системный дебаг: как локализуешь, какие гипотезы по порядку, как отделяешь витрину от источника без доки. 3️⃣ Теория SQL ➖ Свежие значения по каждой валюте → ранжирование оконкой ROW_NUMBER() ... PARTITION BY currency ORDER BY dt DESC в CTE и фильтр сверху rn = 1 ➖ Разница джойнов / UNION-UNION ALL ➖ Как соединить таблицы валют и товаров 4️⃣ Теория вероятностей Кинули монетку 10 раз — 10 орлов. Вероятность решки на 11-м? Если монета честная монета → 50%, прошлые броски не влияют. Но 10 орлов подряд намекают, что монета может быть нечестной — тут уместен байес. Правильный ответ — проговорить оба взгляда, а не выдать сходу 1/2. ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер @data_driven_bogdan

  • 29 июл.226 просмотров12 реакций2 пересылок

    A/A-тест: проверяем дизайн эксперимента ещё до старта (Ч. 6) В прошлой части разбирали placebo-тесты — и там я обещал, что у placebo в мире классического A/B есть близнец, а скорее прародитель — это A/A-тест, сегодня про него. Что такое A/A-тест❓ Это эксперимент, где между группами нет никакой разницы: обе получают одно и то же. Мы честно бьем трафик на A и A, гоняем весь пайплайн как на боевом A/B — сплит, логи, метрику, критерий — но воздействия нет. Смысл: если между двумя одинаковыми группами метод находит «значимую разницу» чаще, чем должен, — дизайн сломан, и на боевом A/B мы будем ловить фантомные эффекты. По сути A/A — это плацебо для рандомизированных тестов: куча «экспериментов», где эффекта заведомо нет. Что именно проверяет A/A ❓ ➖ Долю ложных срабатываний (FPR). Она должна быть около α (например 5%). Больше — критерий ловит несуществующее. ➖ Отсутствие перекоса. Средняя разница между группами ≈ 0, доверительные интервалы накрывают ноль как положено. ➖ Дисперсию метрики — ее потом кладём в расчёт MDE и размера выборки (про MDE — в следующий раз). ➖ Здоровье пайплайна: корректный сплит, нет утечек, метрика считается корректно и так далее Как читать распределение p-value ❓ Гоняем много A/A-сплитов и смотрим на распределение p-value. Под нулем (эффекта нет) оно должно быть равномерным на [0, 1]: ➖ равномерное → всё честно, FPR на уровне α ✅ ➖ горка у нуля (слишком много маленьких p) → FPR раздут, критерий врет в сторону ложных срабатываний ➖ горка у единицы (слишком много больших p) → критерий переосторожен, тест недомощный То есть A/A — это не «прогнали разок и ноль», а проверка калибровки всего критерия. Почему A/A «краснеет» — частые причины Если FPR улетел вверх, чаще всего виноваты: ➖ Зависимые наблюдения, посчитанные как независимые. Напр. у одного юзера куча сессий/визитов, а мы считаем их независимыми → занижаем дисперсию → FPR взлетает. Лечится анализом на уровне единицы рандомизации (юзера) / кластеризацией. ➖ Ratio-метрики (CTR = клики/показы и т.п.) — обычная дисперсия врёт, нужен дельта-метод / бутстрап / линеаризация. Про них дальше будет отдельно. ➖ Подглядывание (peeking): смотрим на тест много раз и останавливаемся на «значимом» — без поправки FPR раздувается. ➖ Тяжёлые хвосты — t-тест плывет; помогают бутстрап, трансформации, CUPED. ➖ SRM — группы не 50/50, хотя должны быть → баг в сплите или инструментации. Как прогонять A/A ❓ 1️⃣ Живой A/A — реально льём трафик на две одинаковые группы и меряем. Дорого по времени, зато честно ловит проблемы инструментации и сплита. 2️⃣ Ретроспективный A/A на истории — многократно случайно бьём исторические данные на две псевдогруппы, каждый раз считаем критерий → строим распределение p-value. Быстро и дёшево (это по сути бутстрап / перестановки — о них ещё поговорим). На практике сначала гоняют ретроспективный, чтобы откалибровать критерий, а живой — как финальную проверку пайплайна. Что важно держать в голове ➖ A/A валидирует не «есть ли эффект», а сам инструмент: сплит + метрику + критерий. ➖ Цель — FPR ≈ α и равномерные p-value. Отклонение = чинить до боевого запуска. ➖ Заодно достаём дисперсию для расчёта MDE. ➖ Один прогон ничего не доказывает — нужна масса разбиений. Что обсудим дальше... ➖ MDE — какой минимальный эффект вообще реально поймать ➖ Бутстрап и перестановки — как честно считать значимость и гонять ретро-A/A ➖ Ratio-метрики — почему они ломают дисперсию и как их правильно считать ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер ❓Гоняете A/A перед запуском или только лысого?! @data_driven_bogdan

  • 12 авг.168 просмотров12 реакций7 пересылок

    Вилки по рынку Скинули мне тут сайтик с офферами по СНГ рынку Еще сыроват конечно, но для тех кто не в курсе вообще за вилки — может потыкаться https://gdezarplata.duckdns.org/companies ❤️‍🔥 Подписывайтесь и поддержите канал бустом ↗️ Менторю и помогаю выйти на оффер @data_driven_bogdan