How to заботать мат. аппарат для ML? (Часть 1, Алгебра и аналитическая геометрия)
У многих уже подходит к концу сессия и пора начинать думать о том чем вы будете заниматься во время летнего отпуска (если конечно вы не нашли заветной вакансии стажера в каком-нибудь бигтехе). В этой серии постов опубликуем материалы для того чтобы заботать/освежить/восполнить харды. Один из основных элементов фундамента в ML (естественно, я не говорю про форму мл-макакинга, где персонаж просто пользуется готовыми моделями, не представляя, что из себя они представляют) это алгем. Выписал подборку наилучших курсов/книг по алгебре этого с головй хватит например для экзаменов в ШАД.
В принципе для базового уровня в ML алгебры не так много нужно, а метериалы ниже с голов покроют запросы. Выделил основные темы ангема и алгебры для ML: геометрия векторных пространств, расстояния и проекции, Уравнения прямых, плоскостей и гиперплоскостей, кривые и поверхности второго порядка, вектора и линейные пространства, матрицы и линейные операторы, СЛУ, линейные разложения (svd, lu, evd, qr и т п), нормы векторов и матриц.
Теория
1) Некоторые из вас, кто крутился в олимпиадном комьюнити знают Богданова Илью Игоревича. Он же ведёт очень подробный и продвинутый курс вузовского ангема и алгебра. Также есть затеханные лекции этих курсов (ангем и алгебра).
2) Параллельно этому курсу, если вдруг будут вещи, которые не ясны в полной мере, можете обращаться к материалам учебников Кострыкина или Винберга (Кострыкин будет более простым).
Практическая часть
1) В качестве семинарской части чтобы научиться решать задачи можете посмотреть записи семинаров Юденковой (часть 1 и часть 2). Так же можете еще и письменные материалы.
2) В качестве задачника советую Беклемишева, там перед каждой главой расписана хорошая теория с примерами решения задач.
А также присоединяйся к сообществу продуктовых аналитиков в нашем чатике!
@ProdAnalysis
У многих уже подходит к концу сессия и пора начинать думать о том чем вы будете заниматься во время летнего отпуска (если конечно вы не нашли заветной вакансии стажера в каком-нибудь бигтехе). В этой серии постов опубликуем материалы для того чтобы заботать/освежить/восполнить харды. Один из основных элементов фундамента в ML (естественно, я не говорю про форму мл-макакинга, где персонаж просто пользуется готовыми моделями, не представляя, что из себя они представляют) это алгем. Выписал подборку наилучших курсов/книг по алгебре этого с головй хватит например для экзаменов в ШАД.
В принципе для базового уровня в ML алгебры не так много нужно, а метериалы ниже с голов покроют запросы. Выделил основные темы ангема и алгебры для ML: геометрия векторных пространств, расстояния и проекции, Уравнения прямых, плоскостей и гиперплоскостей, кривые и поверхности второго порядка, вектора и линейные пространства, матрицы и линейные операторы, СЛУ, линейные разложения (svd, lu, evd, qr и т п), нормы векторов и матриц.
Теория
1) Некоторые из вас, кто крутился в олимпиадном комьюнити знают Богданова Илью Игоревича. Он же ведёт очень подробный и продвинутый курс вузовского ангема и алгебра. Также есть затеханные лекции этих курсов (ангем и алгебра).
2) Параллельно этому курсу, если вдруг будут вещи, которые не ясны в полной мере, можете обращаться к материалам учебников Кострыкина или Винберга (Кострыкин будет более простым).
Практическая часть
1) В качестве семинарской части чтобы научиться решать задачи можете посмотреть записи семинаров Юденковой (часть 1 и часть 2). Так же можете еще и письменные материалы.
2) В качестве задачника советую Беклемишева, там перед каждой главой расписана хорошая теория с примерами решения задач.
А также присоединяйся к сообществу продуктовых аналитиков в нашем чатике!
@ProdAnalysis
❤18
Открытый банк заданий
Уже завтра стартуют наши карьерные курсы, на которые можно записаться со скидкой 35% до 06.07 включительно. В честь такого события решили поделиться частью банка реальных технических вопрос с собесов.
Подписывайтесь и делитесь с друзьями такой годнотой!
Аналитика
Машинное Обучение
Доступ к расширенной базе будет только у тех, кто приобрел курс этой серии! Но к ней можно получить доступ, просто отправив @vice22821 свое тестовое задание или собеседование.
@postypashki_old
Уже завтра стартуют наши карьерные курсы, на которые можно записаться со скидкой 35% до 06.07 включительно. В честь такого события решили поделиться частью банка реальных технических вопрос с собесов.
Подписывайтесь и делитесь с друзьями такой годнотой!
Аналитика
Машинное Обучение
Доступ к расширенной базе будет только у тех, кто приобрел курс этой серии! Но к ней можно получить доступ, просто отправив @vice22821 свое тестовое задание или собеседование.
@postypashki_old
Audio
Товарищи, напоминаю, что сегодня последний день, чтобы записаться на наши легендарные курсы по хорошей скидке 30%. Стартую они уже завтра.
Не упустите свой шанс классно прокачаться летом и залететь уже осенью на стажировку в Яндекс как наш выпускник прошлого набора (см прикрепленное интервью). Михаил сейчас работает на позиции джуниор в команде Яндекс Такси. Уверен его история просто парня из региона вас вдохновит!
[ Записаться на курсы ]
Не упустите свой шанс классно прокачаться летом и залететь уже осенью на стажировку в Яндекс как наш выпускник прошлого набора (см прикрепленное интервью). Михаил сейчас работает на позиции джуниор в команде Яндекс Такси. Уверен его история просто парня из региона вас вдохновит!
[ Записаться на курсы ]
❤2
Свершилось! Поступашки открывают набор на новую линейку математических курсов 🎓
Хочешь поступить в Ai Masters или топовую магистратуру? А, может, ты мечтаешь тащить собесы, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:
➡️ алгоритмы
➡️ теория вероятностей
➡️ линейная алгебра
➡️ математический анализ
Все курсы стартуют 28.07, все лекции выложены сразу. Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо кучи авторских задач мы даем доступ к уникальной закрытой базе заданий Ai Mastersа, разбор реального контеста в Ai Masters, разбор ВСЕХ задач с собеседований в ШАД, Ai Masters, ААА! Более того, ты получишь эксклюзивные материалы для проверяющих с собесов, пробный экзамен, инсайды, персональные рекомендации, собес с подробной консультацией и дальнейшим сопровождением вплоть до поступления в место мечты!
📊 Цена очень доступная: 12'000 7'500 рублей за каждый курс. До 16.07 включительно отдаем курс со скидкой, дальше продажи по зачеркнутой цене.
Для вопросов и покупок пишем администратору и не тянем с этим: количество мест ограничено!
Хочешь поступить в Ai Masters или топовую магистратуру? А, может, ты мечтаешь тащить собесы, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:
Все курсы стартуют 28.07, все лекции выложены сразу. Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо кучи авторских задач мы даем доступ к уникальной закрытой базе заданий Ai Mastersа, разбор реального контеста в Ai Masters, разбор ВСЕХ задач с собеседований в ШАД, Ai Masters, ААА! Более того, ты получишь эксклюзивные материалы для проверяющих с собесов, пробный экзамен, инсайды, персональные рекомендации, собес с подробной консультацией и дальнейшим сопровождением вплоть до поступления в место мечты!
Для вопросов и покупок пишем администратору и не тянем с этим: количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Свершилось! Поступашки открывают набор на новую линейку карьерных курсов 🎉
Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры
Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
📊 Цена 15'000р 9'000р при покупке до 18 июля включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 18.07 действует скидка 40%!
➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт
ЗАПИСАТЬСЯ
Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 18.07 действует скидка 40%!
ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Кейс с собеса яндекса
В нашем чатике аналитиков попросили разобрать кейс с собеса на мидла. Представьте, что команда Яндекс.Тревел запускает A/B-тест нового баннера "Горящие туры в Турцию" на главной странице сервиса. Цель теста — увеличить конверсию пользователей главной страницы в бронирование туров (особенно в Турцию) и общую выручку от продажи туров, за счет более привлекательного и релевантного баннера. Гипотеза заключается в том, что новый баннер (Вариант B) с яркой фотографией пляжа, четким призывом "Успейте купить! Скидка до 30%", таймером обратного отсчета и кнопкой "Смотреть туры" приведет к увеличению кликабельности (CTR), конверсии в просмотр и бронирование туров в Турцию, а также к росту выручки по сравнению с текущим баннером (Вариант A).
Для оценки успешности теста будет набор метрик. Основными ключевыми показателями эффективности (KPI) станут: CTR баннера, рассчитываемый как отношение числа кликов к числу показов. Рост CTR покажет, насколько эффективнее новый баннер привлекает внимание и мотивирует к клику, что напрямую влияет на поток пользователей дальше по воронке. Конверсия в переход на страницу поиска туров именно в Турцию (отношение переходов с фильтром "Турция" после клика по баннеру к общему числу кликов) покажет релевантность предложения — соответствует ли целевая страница ожиданиям, созданным баннером. Наиболее важной бизнес-метрикой будет конверсия в бронирование тура в Турцию. Ее будут оценивать двумя способами: Post-Click Conversion Rate (бронирования туров в Турцию пользователями, кликнувшими на баннер, деленное на клики) и Post-View Conversion Rate (бронирования туров в Турцию пользователями, увидевшими баннер, деленное на показы). Post-View конверсия критически важна, так как учитывает влияние "увидел, не кликнул, но потом купил", что характерно для travel. Также будет отслеживаться средний чек бронирования тура в Турцию (общая выручка от таких бронирований после клика/показа баннера деленная на количество бронирований), чтобы понять, привлекает ли баннер пользователей с разной платежеспособностью. Самой важной финансовой метрикой станет выручка, или Revenue Per Visit (RPV). Рассчитываться она будет как Post-Click RPV (выручка от бронирований в Турцию после клика деленная на клики) и особенно Post-View RPV (выручка от бронирований в Турцию после показа баннера деленная на показы). Рост Post-View RPV — главный индикатор финансовой успешности теста, интегрирующий влияние на конверсию и средний чек.
Дополнительно будут использоваться: глубина просмотра страницы поиска (среднее количество просмотренных карточек туров после клика по баннеру) покажет уровень интереса пользователя. Показатель отказов (Bounce Rate) на странице поиска (доля сессий, начатых с клика по баннеру, где пользователь просмотрел только одну страницу) поможет выявить возможное разочарование или технические проблемы.
Выводы не будут сделаны, пока не достигнута достаточная мощность теста и статистическая значимость (обычно p-value < 0.05) по ключевым KPI (CTR, Конверсия в бронирование Турции, Post-View RPV). Тест должен длиться минимум 1-2 полных бизнес-цикла (например, неделя для учета выходных, а лучше 2 недели для стабильности данных), с учетом возможной сезонности
Подобные кейсы мы будем разбирать на нашем карьерном курсе по аналитике.
@ProdAnalysis
В нашем чатике аналитиков попросили разобрать кейс с собеса на мидла. Представьте, что команда Яндекс.Тревел запускает A/B-тест нового баннера "Горящие туры в Турцию" на главной странице сервиса. Цель теста — увеличить конверсию пользователей главной страницы в бронирование туров (особенно в Турцию) и общую выручку от продажи туров, за счет более привлекательного и релевантного баннера. Гипотеза заключается в том, что новый баннер (Вариант B) с яркой фотографией пляжа, четким призывом "Успейте купить! Скидка до 30%", таймером обратного отсчета и кнопкой "Смотреть туры" приведет к увеличению кликабельности (CTR), конверсии в просмотр и бронирование туров в Турцию, а также к росту выручки по сравнению с текущим баннером (Вариант A).
Для оценки успешности теста будет набор метрик. Основными ключевыми показателями эффективности (KPI) станут: CTR баннера, рассчитываемый как отношение числа кликов к числу показов. Рост CTR покажет, насколько эффективнее новый баннер привлекает внимание и мотивирует к клику, что напрямую влияет на поток пользователей дальше по воронке. Конверсия в переход на страницу поиска туров именно в Турцию (отношение переходов с фильтром "Турция" после клика по баннеру к общему числу кликов) покажет релевантность предложения — соответствует ли целевая страница ожиданиям, созданным баннером. Наиболее важной бизнес-метрикой будет конверсия в бронирование тура в Турцию. Ее будут оценивать двумя способами: Post-Click Conversion Rate (бронирования туров в Турцию пользователями, кликнувшими на баннер, деленное на клики) и Post-View Conversion Rate (бронирования туров в Турцию пользователями, увидевшими баннер, деленное на показы). Post-View конверсия критически важна, так как учитывает влияние "увидел, не кликнул, но потом купил", что характерно для travel. Также будет отслеживаться средний чек бронирования тура в Турцию (общая выручка от таких бронирований после клика/показа баннера деленная на количество бронирований), чтобы понять, привлекает ли баннер пользователей с разной платежеспособностью. Самой важной финансовой метрикой станет выручка, или Revenue Per Visit (RPV). Рассчитываться она будет как Post-Click RPV (выручка от бронирований в Турцию после клика деленная на клики) и особенно Post-View RPV (выручка от бронирований в Турцию после показа баннера деленная на показы). Рост Post-View RPV — главный индикатор финансовой успешности теста, интегрирующий влияние на конверсию и средний чек.
Дополнительно будут использоваться: глубина просмотра страницы поиска (среднее количество просмотренных карточек туров после клика по баннеру) покажет уровень интереса пользователя. Показатель отказов (Bounce Rate) на странице поиска (доля сессий, начатых с клика по баннеру, где пользователь просмотрел только одну страницу) поможет выявить возможное разочарование или технические проблемы.
Выводы не будут сделаны, пока не достигнута достаточная мощность теста и статистическая значимость (обычно p-value < 0.05) по ключевым KPI (CTR, Конверсия в бронирование Турции, Post-View RPV). Тест должен длиться минимум 1-2 полных бизнес-цикла (например, неделя для учета выходных, а лучше 2 недели для стабильности данных), с учетом возможной сезонности
Подобные кейсы мы будем разбирать на нашем карьерном курсе по аналитике.
@ProdAnalysis
❤12
Собеседование на агрегатор эскортниц
Товарищи, один из студентов наших курсов недавно собесился на позицию аналитика на один агрегатор эскортниц. Вопросы оказались весьма неожиданными и познавательными. Прилагаем его ответы.
Задача 1
Сколько эскортниц в городе Санкт-Петербург
Решение:
Оттолкнемся от спроса. Мужчин в СПБ примерно 3 миллиона. Средний ценник за час возьмём 10 тыс. Чтобы мужчина мог хотя бы пару раз в месяц сходить к фее, он должен зарабатывать 50 тыс (аренда) + 50 тыс (еда) + 50 тыс (бытовые расходы) + 50 тыс (отложить). То есть, чтобы ходить к фее, доход мужчины должен быть хотя 250 тыс. Из-за того, что доходы распределены экспонециально, делаем вывод, что столько и выше зарабатывает не более 1% населения СПб. То есть столько зарабатывает примерно 25 тысяч человек. Чтобы дело было рентабельным, фее нужно зарабатывать хотя бы 250 тысяч (по предыдущим оценкам), то есть принять 25 человек в месяц. Того можем предложить оценку, что в СПб примерно 1 тысяча фей.
Задача 2
Почему в Москве эскортницы в основном кучкуются в районе Академический, Фили, Красно Пресненский? Предложи несколько гипотез.
Решение:
Во-первых в Москве всегда преимущественно жили на западе, а в восточной части располагались промышленные зоны. Жить на западе считалось престижней, там же расположены престижные районы: Хамовники, Патрики, Дорогомилово. А в центральном округе аренда просто дорогая и феям располагаться не рентабельно.
@ProdAnalysis
Товарищи, один из студентов наших курсов недавно собесился на позицию аналитика на один агрегатор эскортниц. Вопросы оказались весьма неожиданными и познавательными. Прилагаем его ответы.
Задача 1
Сколько эскортниц в городе Санкт-Петербург
Решение:
Задача 2
Почему в Москве эскортницы в основном кучкуются в районе Академический, Фили, Красно Пресненский? Предложи несколько гипотез.
Решение:
@ProdAnalysis
😁40🔥9❤3🤔1
Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Поступашки продолжают набор на новую линейку карьерных курсов 🎉
Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры
Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
📊 Цена на сайте, только при покупке до 24 июля включительно скидка 40%! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 24.07 действует скидка 40%!
➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт
ЗАПИСАТЬСЯ
Мечтаешь стать крутым специалистом и с легкость тащить собесы, но не хватает фундамента? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
Все курсы стартует 03.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 24.07 действует скидка 40%!
ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
Когортный анализ в email-маркетинге
Когорта — группа пользователей, объединённая общими признаками и временным интервалом. Например, пользователи, которые зарегистрировались в сервисе на одной и той же неделе. Они совершили одно и то же действие в один интервал. Именно распределение по времени отличает когорты от сегментов.
Когортный анализ — один из самых популярных анализов в маркетинговой и продуктовой аналитике. Он показывает изменение ключевых показателей во времени в разрезе каждой когорты. Так появляется возможность, в зависимости от того, когда пользователь совершил действие, отследить достижение конкретных целей: конверсии, ROI, CAC, LTV, Retention Rate — и разобраться в предпосылках.
Для построения когортного анализа необходимо определить:
Признак формирования когорты — событие, по которому создаются группы.
Размер когорты — диапазон времени для формирования когорты (день/неделя/месяц).
Временной интервал — с какого момента необходимо отслеживать поведение когорт (за предыдущий год/два/три и так далее).
Ключевой показатель — конкретную метрику, которая интересна для данного бизнеса.
Рассмотрим задачу
Постановка задачи
В данном примере цель когортного анализа — отследить взаимодействие подписчиков с рассылками на основе Click Rate (количества кликов).
Определение параметров
Анализ будет построен на следующих показателях.
Признак формирования когорты — дата подписки.
Размер когорты — месяц.
Временной интервал — с января 2018 по ноябрь 2019.
Ключевой показатель — CR.
Исходные данные
В Таблицу 1 собираем информацию о подписчиках:
- ID подписчика (в качестве ID может выступать email);
- дата подписки.
В Таблице 2 — информация о взаимодействиях (одна строка — одно действие):
- ID подписчика;
- дата совершения действия;
= рассылка, в которой совершено действие.
Алгоритм работы
- Группируем пользователей по дате подписки, учитывая размер когорты. Получаем количество подписчиков в каждой когорте.
- Объединяем таблицу 2 с таблицей 1, используя в качестве ключа общее поле — ID подписчика.
- Группируем полученную из пункта 2 таблицу по полям «дата совершения действия» и «дата подписки» и подсчитываем для такой пары общее количество кликов.
- Рассчитываем для каждой пары значение ключевого показателя.
Анализ результатов
Полученные результаты представляются в виде матрицы, где строки — это когорты, столбцы — месяцы, значения — ключевой показатель (CR).
Когортный анализ — универсальный метод, который позволяет проанализировать различную информацию
@ProdAnalysis
Когорта — группа пользователей, объединённая общими признаками и временным интервалом. Например, пользователи, которые зарегистрировались в сервисе на одной и той же неделе. Они совершили одно и то же действие в один интервал. Именно распределение по времени отличает когорты от сегментов.
Когортный анализ — один из самых популярных анализов в маркетинговой и продуктовой аналитике. Он показывает изменение ключевых показателей во времени в разрезе каждой когорты. Так появляется возможность, в зависимости от того, когда пользователь совершил действие, отследить достижение конкретных целей: конверсии, ROI, CAC, LTV, Retention Rate — и разобраться в предпосылках.
Для построения когортного анализа необходимо определить:
Признак формирования когорты — событие, по которому создаются группы.
Размер когорты — диапазон времени для формирования когорты (день/неделя/месяц).
Временной интервал — с какого момента необходимо отслеживать поведение когорт (за предыдущий год/два/три и так далее).
Ключевой показатель — конкретную метрику, которая интересна для данного бизнеса.
Рассмотрим задачу
Постановка задачи
В данном примере цель когортного анализа — отследить взаимодействие подписчиков с рассылками на основе Click Rate (количества кликов).
Определение параметров
Анализ будет построен на следующих показателях.
Признак формирования когорты — дата подписки.
Размер когорты — месяц.
Временной интервал — с января 2018 по ноябрь 2019.
Ключевой показатель — CR.
Исходные данные
В Таблицу 1 собираем информацию о подписчиках:
- ID подписчика (в качестве ID может выступать email);
- дата подписки.
В Таблице 2 — информация о взаимодействиях (одна строка — одно действие):
- ID подписчика;
- дата совершения действия;
= рассылка, в которой совершено действие.
Алгоритм работы
- Группируем пользователей по дате подписки, учитывая размер когорты. Получаем количество подписчиков в каждой когорте.
- Объединяем таблицу 2 с таблицей 1, используя в качестве ключа общее поле — ID подписчика.
- Группируем полученную из пункта 2 таблицу по полям «дата совершения действия» и «дата подписки» и подсчитываем для такой пары общее количество кликов.
- Рассчитываем для каждой пары значение ключевого показателя.
Анализ результатов
Полученные результаты представляются в виде матрицы, где строки — это когорты, столбцы — месяцы, значения — ключевой показатель (CR).
Когортный анализ — универсальный метод, который позволяет проанализировать различную информацию
@ProdAnalysis
❤11
Кейс из сбера
Разберем интересный кейс с собеседования на позицию middle data analyst. Рассмотрим ситуацию, когда команда онлайн-гипермаркета "СберМегаМаркет" проводит A/B-тестирование переработанного алгоритма рекомендаций на страницах товарных категорий.
Основная цель эксперимента — повысить вовлеченность пользователей с рекомендательным блоком и увеличить продажи через улучшение персонализации предлагаемых товаров.
Гипотеза состоит в том, что усовершенствованная система рекомендаций (Вариант B), которая сочетает:
- анализ индивидуального покупательского поведения
- машинное обучение на основе похожих профилей
- учет сезонного спроса в регионе
- баланс между популярными и перспективными товарами
позволит добиться более высоких показателей эффективности по сравнению с текущей системой (Вариант A), основанной исключительно на общих показателях популярности товаров в категории.
Для оценки результатов тестирования определены ключевые метрики:
Основные показатели эффективности: коэффициент кликабельности (CTR) рекомендательного блока, конверсия в корзину из рекомендаций, показатель Post-View покупок (учитывающий отложенные решения), средняя стоимость заказа с рекомендациями, выручка на активного пользователя (ARPU). Дополнительные метрики качества: индекс удовлетворенности рекомендациями (на основе логов взаимодействия), показатель возвращаемости к блоку рекомендаций, коэффициент разнообразия предлагаемых категорий, время взаимодействия с рекомендательным блоком
Особое внимание уделяется анализу Post-Engagement Conversion — метрике, учитывающей покупки, совершённые после любого взаимодействия с рекомендательным блоком, даже если оно не привело к немедленному клику. Важно для понимания общего влияния системы на покупательское поведение.
Тест проводится с соблюдением требований:
Рандомизация пользователей по cookie-идентификаторам
Баланс групп по ключевым характеристикам (50/50). Минимальная длительность — 14 дней для учета различных паттернов поведения, Контроль внешних факторов (акции, сезонность). Размер выборки — от 150k пользователей в каждой группе.
При анализе результатов применяется следущий подход: проверка статистической значимости различий, анализ вторичных эффектов и неожиданных корреляций, оценка влияния на разные сегменты пользователей, проверка на отсутствие негативного воздействия на UX
Критерии успеха теста - статистически значимый рост ключевых метрик, отсутствие существенного ухудшения по контролируемым показателям, положительная динамика в основных пользовательских сегментах, сохранение или улучшение показателей монетизации
Также рассмотрим возможное решение по результатам теста: полномасштабный rollout новой системы, доработку алгоритма с учетом выявленных инсайтов, дополнительные итерационные тесты для оптимизации, отказ от изменений при неудовлетворительных результатах
@ProdAnalysis
Разберем интересный кейс с собеседования на позицию middle data analyst. Рассмотрим ситуацию, когда команда онлайн-гипермаркета "СберМегаМаркет" проводит A/B-тестирование переработанного алгоритма рекомендаций на страницах товарных категорий.
Основная цель эксперимента — повысить вовлеченность пользователей с рекомендательным блоком и увеличить продажи через улучшение персонализации предлагаемых товаров.
Гипотеза состоит в том, что усовершенствованная система рекомендаций (Вариант B), которая сочетает:
- анализ индивидуального покупательского поведения
- машинное обучение на основе похожих профилей
- учет сезонного спроса в регионе
- баланс между популярными и перспективными товарами
позволит добиться более высоких показателей эффективности по сравнению с текущей системой (Вариант A), основанной исключительно на общих показателях популярности товаров в категории.
Для оценки результатов тестирования определены ключевые метрики:
Основные показатели эффективности: коэффициент кликабельности (CTR) рекомендательного блока, конверсия в корзину из рекомендаций, показатель Post-View покупок (учитывающий отложенные решения), средняя стоимость заказа с рекомендациями, выручка на активного пользователя (ARPU). Дополнительные метрики качества: индекс удовлетворенности рекомендациями (на основе логов взаимодействия), показатель возвращаемости к блоку рекомендаций, коэффициент разнообразия предлагаемых категорий, время взаимодействия с рекомендательным блоком
Особое внимание уделяется анализу Post-Engagement Conversion — метрике, учитывающей покупки, совершённые после любого взаимодействия с рекомендательным блоком, даже если оно не привело к немедленному клику. Важно для понимания общего влияния системы на покупательское поведение.
Тест проводится с соблюдением требований:
Рандомизация пользователей по cookie-идентификаторам
Баланс групп по ключевым характеристикам (50/50). Минимальная длительность — 14 дней для учета различных паттернов поведения, Контроль внешних факторов (акции, сезонность). Размер выборки — от 150k пользователей в каждой группе.
При анализе результатов применяется следущий подход: проверка статистической значимости различий, анализ вторичных эффектов и неожиданных корреляций, оценка влияния на разные сегменты пользователей, проверка на отсутствие негативного воздействия на UX
Критерии успеха теста - статистически значимый рост ключевых метрик, отсутствие существенного ухудшения по контролируемым показателям, положительная динамика в основных пользовательских сегментах, сохранение или улучшение показателей монетизации
Также рассмотрим возможное решение по результатам теста: полномасштабный rollout новой системы, доработку алгоритма с учетом выявленных инсайтов, дополнительные итерационные тесты для оптимизации, отказ от изменений при неудовлетворительных результатах
@ProdAnalysis
❤13
Топ 5 ошибок в продуктовой аналитике
Продуктовая аналитика — это не только про исследовательский анализ но и умение правильно их трактовать, превращая в обоснованные решения. Ниже мы собрали типичные ошибки, которые могут обернуться неверными выводами и напрасно потраченными ресурсами.
1. Неясные цели исследования
Любой анализ начинается с чётко сформулированных целей и проверяемых гипотез. Если вы заранее не определите, зачем собираете данные, велика вероятность, что результаты будут трактоваться произвольно и пойдут «в холостую». Держите цели перед глазами на каждом этапе работы.
2. Неподходящие метрики
Показатели должны напрямую отражать задачу продукта и бизнеса. Если метрика не связана с целевым результатом, она приведёт к ложным инсайтам и ошибочным решениям. Прежде чем запускать расчёты, убедитесь, что выбранные показатели действительно релевантны.
3. Игнорирование контекста
Цифры вне контекста продукта, аудитории и рынка легко вводят в заблуждение. Без понимания, кто пользуется вашим решением, как работает бизнес-модель и какие внешние факторы влияют на данные, выводы будут искажёнными, а рекомендации — неэффективными.
4. Неверная трактовка результатов
Одни и те же числа могут «звучать» по-разному в зависимости от того, кто их читает. Ошибки в интерпретации чреваты цепочкой неправильных действий. Перед тем как принимать решение, перепроверьте логику вывода и обсудите её с коллегами.
5. Пренебрежение статистической значимостью
Небольшие колебания метрик легко принять за успех, если не проверять, выходит ли разница за пределы случайного шума. Без расчёта p-value, доверительных интервалов и анализа мощности теста вы рискуете оптимизировать минимум или даже ухудшать продукт, делая выводы по несущественным результатам. Перед тем как внедрять изменения, убедитесь, что эффект репрезентативен: выберите корректный статистический тест, проверьте размер выборки и оцените вероятность ошибки I и II рода.
@ProdAnalysis
Продуктовая аналитика — это не только про исследовательский анализ но и умение правильно их трактовать, превращая в обоснованные решения. Ниже мы собрали типичные ошибки, которые могут обернуться неверными выводами и напрасно потраченными ресурсами.
1. Неясные цели исследования
Любой анализ начинается с чётко сформулированных целей и проверяемых гипотез. Если вы заранее не определите, зачем собираете данные, велика вероятность, что результаты будут трактоваться произвольно и пойдут «в холостую». Держите цели перед глазами на каждом этапе работы.
2. Неподходящие метрики
Показатели должны напрямую отражать задачу продукта и бизнеса. Если метрика не связана с целевым результатом, она приведёт к ложным инсайтам и ошибочным решениям. Прежде чем запускать расчёты, убедитесь, что выбранные показатели действительно релевантны.
3. Игнорирование контекста
Цифры вне контекста продукта, аудитории и рынка легко вводят в заблуждение. Без понимания, кто пользуется вашим решением, как работает бизнес-модель и какие внешние факторы влияют на данные, выводы будут искажёнными, а рекомендации — неэффективными.
4. Неверная трактовка результатов
Одни и те же числа могут «звучать» по-разному в зависимости от того, кто их читает. Ошибки в интерпретации чреваты цепочкой неправильных действий. Перед тем как принимать решение, перепроверьте логику вывода и обсудите её с коллегами.
5. Пренебрежение статистической значимостью
Небольшие колебания метрик легко принять за успех, если не проверять, выходит ли разница за пределы случайного шума. Без расчёта p-value, доверительных интервалов и анализа мощности теста вы рискуете оптимизировать минимум или даже ухудшать продукт, делая выводы по несущественным результатам. Перед тем как внедрять изменения, убедитесь, что эффект репрезентативен: выберите корректный статистический тест, проверьте размер выборки и оцените вероятность ошибки I и II рода.
@ProdAnalysis
❤9
Задачка с финалов яндекса
Большинство задач с собеседований именно на дискретный теорвер, вам не нужно будет знать почти ничего из непрерывного теорвера, чтобы пройти собеседование, наш подписчик поделился условием одной из задач с его отбора на аналитика в яндекс.
Условие
100 дверей, все изначально закрыты. Каждый ход случайно и равновероятно выбирается одна дверь. Если выбранная дверь закрыта, она открывается. Если выбранная дверь уже открыта, ничего не происходит. Требуется найтиматожидание количества ходов до момента, когда будет открыто ровно 50 дверей.
Решение
Решим более простую задачу, посчитаем ожидание количества бросков до открытия новой двери на момент, когда уже k дверей открыто. Вероятность открыть новую дверь с учетом того что k дверей открыто - p = (100 - k) / 100. Остаётся посчитать матожидания количества ходов с учетом такой вероятности. Переформулировав эти открытия дверей - это испытания бернулли, а реализуются они до того момента пока не настанет успех, а значит это геометрическое распределение, матожидание которого 1 / p = 100 / (100 - k).
Тогда можно разложить исходную величину на сумму 50 таких получившихся по линейности матожидания:
E[T] = E[T_0 + T_1 .. + T_49] = E[T_0] + E[T_1] + .. + E[T_49]
E[T] = 100 / (100 - 0) + 100 / (100 - 1) + ... + 100 / (100 - 49)
E[T] = 100 / 100 -+ 100 / 99 + ... + 100 / 51
Заметим, что если вынести 100 то в скобках останется отрезок суммы гармоничесого ряда с 51 по 100 элемент.
E[T] = 100 * (H_100 - H_50)~ 100 * ln2, где H_n— n-ое гармоническое число.
@ProdAnalysis
Большинство задач с собеседований именно на дискретный теорвер, вам не нужно будет знать почти ничего из непрерывного теорвера, чтобы пройти собеседование, наш подписчик поделился условием одной из задач с его отбора на аналитика в яндекс.
Условие
100 дверей, все изначально закрыты. Каждый ход случайно и равновероятно выбирается одна дверь. Если выбранная дверь закрыта, она открывается. Если выбранная дверь уже открыта, ничего не происходит. Требуется найтиматожидание количества ходов до момента, когда будет открыто ровно 50 дверей.
Решение
Тогда можно разложить исходную величину на сумму 50 таких получившихся по линейности матожидания:
E[T] = E[T_0 + T_1 .. + T_49] = E[T_0] + E[T_1] + .. + E[T_49]
E[T] = 100 / (100 - 0) + 100 / (100 - 1) + ... + 100 / (100 - 49)
E[T] = 100 / 100 -+ 100 / 99 + ... + 100 / 51
Заметим, что если вынести 100 то в скобках останется отрезок суммы гармоничесого ряда с 51 по 100 элемент.
E[T] = 100 * (H_100 - H_50)~ 100 * ln2, где H_n— n-ое гармоническое число.
@ProdAnalysis
🤯13❤3❤🔥1
Новая линейка продвинутых карьерных курсов стартует уже в это воскресение 🎉
Мечтаешь стать крутым специалистом и с легкость тащить рабочие задачи и собесы, получив конкурентное преимущество? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
➡️ машинное обучение хард
➡️ бэкенд хард
➡️ аналитика хард
➡️ алгоритмы хард
Курсы продвинутые и рассчитаны на тех, у кого уже есть БАЗА, для тех, кто хочет затронуть более сложные темы и идеально подготовиться к собесам, для тех, кто претендует на что-то большее чем просто джуниор. Если вы только в начале своего пути, советуем курсы старт, на которые тоже до 16.08 действует скидка.
Все курсы стартует 17.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- продвинутые пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
📊 Цена 12'000р 7'200р при покупке до 16 августа включительно! Хочешь купить несколько курсов сразу? Дадим хорошую скидку!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 16.08 действует скидка 40%!
➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт
ЗАПИСАТЬСЯ
Мечтаешь стать крутым специалистом и с легкость тащить рабочие задачи и собесы, получив конкурентное преимущество? Хочешь овладеть знаниями и навыками для работы в крупной компании как Яндекс, Тинькофф или ВК? Узнал себя? Тогда записывайся у администратора на любой из курсов (если андроид - смотрим через яндекс браузер):
Курсы продвинутые и рассчитаны на тех, у кого уже есть БАЗА, для тех, кто хочет затронуть более сложные темы и идеально подготовиться к собесам, для тех, кто претендует на что-то большее чем просто джуниор. Если вы только в начале своего пути, советуем курсы старт, на которые тоже до 16.08 действует скидка.
Все курсы стартует 17.08. Курсы заточены на практику, вся теория будет разобрана на конкретных задачах и кейсах, с которыми сталкиваются на работе и на собесах. Ничего нудного и скучного! Изучаем только то, что тебе реально понадобится и залетаем на первую работу! Хочешь подробностей? На нашем сайте можно найти программу и отзывы на каждый курс.
Помимо этого на курсах тебя ждут:
- продвинутые пет проекты и мини проекты, которые пойдут в портфолио;
- разбор реальных тестовых заданий бигтехов;
- разбор актуального контеста на стажировку в Яндекс и Тинькофф;
- банк реальных технических вопрос с собесов;
- разбор всех задач с алгособесов Яндекса!
А после прохождения курса тебя ждет пробный собес с подробной консультацией и сопровождением, рефералкой в Яндекс или в другие топовые компании!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Не забываем и про линейку старт, на которую тоже только до 16.08 действует скидка 40%!
ЗАПИСАТЬСЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌2
Задача из отбора на стажировку Мини-CEO в Т-банк
Условие
Напишите запрос, который выведет среднюю разницу в днях между первым и последним платежом
по закрытым кредитам. Ответ округляйте до целого.
Решение
0) Чтобы получить таблицу где будут кредиты и соответствующие им даты платежей делаем JOIN, по умолчанию функция JOIN работает как INNER JOIN
1) Для каждого кредита находим даты первого и последнего платежа — это можно сделать функциями MAX и MIN. Затем считаем их разницу, предварительно приведя
2) С помощью AVG усредняем эти разницы по всем закрытым кредитам и округляем до целого.
Когда я в первый раз решал задачу, система выдала вердикт Presentation Error — Ошибка неправильного формата. Первая версия моего кода выглядела так:
Ключевой момент в том, что столбец
Если мы приведем
@ProdAnalysis
Условие
Напишите запрос, который выведет среднюю разницу в днях между первым и последним платежом
по закрытым кредитам. Ответ округляйте до целого.
Решение
0) Чтобы получить таблицу где будут кредиты и соответствующие им даты платежей делаем JOIN, по умолчанию функция JOIN работает как INNER JOIN
1) Для каждого кредита находим даты первого и последнего платежа — это можно сделать функциями MAX и MIN. Затем считаем их разницу, предварительно приведя
p.payment_date из формата timestamp в date.2) С помощью AVG усредняем эти разницы по всем закрытым кредитам и округляем до целого.
Когда я в первый раз решал задачу, система выдала вердикт Presentation Error — Ошибка неправильного формата. Первая версия моего кода выглядела так:
SELECT ROUND(AVG(last_date - first_date))
FROM (
SELECT MIN(p.payment_date) AS first_date, MAX(p.payment_date) AS last_date
…
) AS diffs;
Ключевой момент в том, что столбец
p.payment_date имеет формат timestamp, разность таймстемпов даст интервал "XX days HH:MM:SS" (timestamp – timestamp = interval). AVG(interval) возвращает опять interval. Вызов ROUND(interval) не существует, значит результат будет в формате вида "42 days 11:23:58", которую система считывает, но она не совпадает с ожидаемым форматом (PE).Если мы приведем
payment_date к date, то разность дат даст целое число дней (date – date = integer). AVG(integer) вернет в этом случае numeric. Округляя среднее число дней ROUND(numeric) получим, то что от нас требовали.SELECT ROUND(AVG(day_diff))
FROM (
SELECT cr.credit_id, MAX(p.payment_date)::date - MIN(p.payment_date)::date AS day_diff
FROM credits AS cr
JOIN payments AS p ON cr.credit_id = p.credit_id
WHERE cr.status = 'closed'
GROUP BY cr.credit_id
) AS diffs;
@ProdAnalysis
👍11❤🔥2❤2
Задача с финала Яндекса на Middle Аналитика
Эту задачу также часто дают и в других компаниях. Давайте разберём этот баян 😎
Условие
Дан правильный шестигранный игральный кубик. Его можно бросить не более трёх раз и в любой момент остановиться. Как действовать, чтобы матожидание числа, выпавшего в последнем броске, было максимальным?
Решение
Будем решать задачу "с конца"
1) Если сейчас третий бросок, выбора бросать дальше или остановиться нет
Матожидание числа, которое выпадет на третьем броске E3 = (1 + 2 + 3 + 4 + 5 + 6)/6 = 3.5, так как каждое значение на кубике выпадает с равной вероятностью, равной 1/6
2) Если сейчас второй бросок
Допустим выпало число X, тогда есть 2 варианта:
- остановиться на X
- продолжить и на третьем броске получить матожидание 3.5
Значит нам выгодно остановиться на втором броске, если значение X ≥ 3.5. Для кубика это X = 4, 5, 6.
Посчитаем матожидание для двух последних бросков, с учётом нашего правила (останавливаемся на втором броске, если значение X ≥ 3.5)
- Вероятность того, что выпадут значения 4, 5, 6 равна 1/2 → их среднее (4 + 5 + 6)/3 = 5
- Вероятность того, что выпадут значения 1, 2, 3 равна 1/2 → в этом случае бросаем игральный кубик в третий раз. В среднем на третьем броске нам выпадает 3.5
E2 = (4 + 5 + 6)/3 * 1/2 + E3 * 1/2 = 5 * 1/2 + 3.5 * 1/2 = 4.25
3) Если сейчас первый бросок
Допустим выпало число Y, тогда есть 2 варианта:
- остановиться на Y
- продолжить и на втором броске получить матожидание 4.25
Значит нам выгодно остановиться на первом броске, если значение Y ≥ 4.25. Для кубика это Y = 5, 6
Наконец-то, посчитаем матожидание для числа, выпавшего в последнем броске, с учётом наших правил (останавливаемся на первом броске, если значение Y ≥ 4.25; останавливаемся на втором броске, если значение X ≥ 3.5)
- Вероятность того, что выпадут значения 5, 6 равна 1/3 → их среднее (5 + 6)/2 = 5.5
- Вероятность того, что выпадут значения 1, 2, 3, 4 равна 2/3 → в этом случае бросаем игральный кубик во второй раз. В среднем для двух последних бросков мы получаем значение 4.25
E1 = (5 + 6)/2 * 1/3 + E2 * 2/3 = 5.5 * 1/3 + 4.25 * 2/3 = 4.67
Оптимальная стратегия такая:
– после первого броска оставляем только 5 или 6
– если решили бросить второй раз, то теперь оставляем 4, 5, 6
– если дошёл до третьего раза, берем что выпало
При такой тактике матожидание финального значения 4.67, что выше 3.5 у одиночного броска
@ProdAnalysis
Эту задачу также часто дают и в других компаниях. Давайте разберём этот баян 😎
Условие
Дан правильный шестигранный игральный кубик. Его можно бросить не более трёх раз и в любой момент остановиться. Как действовать, чтобы матожидание числа, выпавшего в последнем броске, было максимальным?
Решение
1) Если сейчас третий бросок, выбора бросать дальше или остановиться нет
Матожидание числа, которое выпадет на третьем броске E3 = (1 + 2 + 3 + 4 + 5 + 6)/6 = 3.5, так как каждое значение на кубике выпадает с равной вероятностью, равной 1/6
2) Если сейчас второй бросок
Допустим выпало число X, тогда есть 2 варианта:
- остановиться на X
- продолжить и на третьем броске получить матожидание 3.5
Значит нам выгодно остановиться на втором броске, если значение X ≥ 3.5. Для кубика это X = 4, 5, 6.
Посчитаем матожидание для двух последних бросков, с учётом нашего правила (останавливаемся на втором броске, если значение X ≥ 3.5)
- Вероятность того, что выпадут значения 4, 5, 6 равна 1/2 → их среднее (4 + 5 + 6)/3 = 5
- Вероятность того, что выпадут значения 1, 2, 3 равна 1/2 → в этом случае бросаем игральный кубик в третий раз. В среднем на третьем броске нам выпадает 3.5
3) Если сейчас первый бросок
Допустим выпало число Y, тогда есть 2 варианта:
- остановиться на Y
- продолжить и на втором броске получить матожидание 4.25
Значит нам выгодно остановиться на первом броске, если значение Y ≥ 4.25. Для кубика это Y = 5, 6
Наконец-то, посчитаем матожидание для числа, выпавшего в последнем броске, с учётом наших правил (останавливаемся на первом броске, если значение Y ≥ 4.25; останавливаемся на втором броске, если значение X ≥ 3.5)
- Вероятность того, что выпадут значения 5, 6 равна 1/3 → их среднее (5 + 6)/2 = 5.5
- Вероятность того, что выпадут значения 1, 2, 3, 4 равна 2/3 → в этом случае бросаем игральный кубик во второй раз. В среднем для двух последних бросков мы получаем значение 4.25
Оптимальная стратегия такая:
– после первого броска оставляем только 5 или 6
– если решили бросить второй раз, то теперь оставляем 4, 5, 6
– если дошёл до третьего раза, берем что выпало
При такой тактике матожидание финального значения 4.67, что выше 3.5 у одиночного броска
@ProdAnalysis
⚡13❤3👍3
Forwarded from Поступашки - ШАД, Стажировки и Магистратура
В честь начала учебного года и обновления контекста на сатижировку в Яндекс, мы объявляем финальную скидку на все наши курсы 50% до 5 сентября включительно.
Там же на курсах уже выложен разбор нового контекста в Яндекс, а ещё вернут потраченные деньги на курс, если первым сдадите все дз.
Задания Яндекс контекста здесь, а разбор только на наших курсах:
Для записи и всех вопросов:
➡️ алгоритмы старт
➡️ аналитика старт
➡️ машинное обучение старт
➡️ бэкенд разработка старт
➡️ дата сайнс (глубокое обучение)
➡️ фронтенд
➡️ дата инженер
➡️ математика для карьеры
➡️ машинное обучение хард
➡️ бэкенд хард
➡️ аналитика хард
➡️ алгоритмы хард
Для записи и всех вопросов: @menshe_treh
Там же на курсах уже выложен разбор нового контекста в Яндекс, а ещё вернут потраченные деньги на курс, если первым сдадите все дз.
Задания Яндекс контекста здесь, а разбор только на наших курсах:
Для записи и всех вопросов:
Для записи и всех вопросов: @menshe_treh
Please open Telegram to view this post
VIEW IN TELEGRAM
🍌1
Задача с собеседования на Junior аналитика в Т-банк
При отборе на позиции аналитика (продуктового, бизнес, риск-аналитика) у вас всегда будет 2 секции:
1. Математика — дают 3-4 задачки, проверяют знания теорвера, матстата и логики
2. Технические кейсы, связанные с вашим напрявлением
Чтобы не завалить первую секцию, советуем вам прочитать этот пост!
Условие
Монетку подбрасывают до тех пор пока не выпадет одна из двух последовательностей. Для первого игрока — орёл орёл (ОО), для второго —решка орёл (РО). За кого выгоднее болеть и какова вероятность победы каждого из игроков?
Решение
Эту задачу можно решить несколькими способами: мы рассмотрим решение через рекуррентные соотношения и через дерево решений (на картинке). Одно дополняет другое.
Для того, чтобы записать уравнения нужно посмотреть, что происходит после каждого броска, когда мы находимся в одно из состояний: "старт", "выпала решка", "выпал орёл"
Найдём вероятность того, что победит 1 игрок, то есть выпадет ОО
Состояния:
1) В последнем броске выпала решка
Если в следующем броске выпадет орёл у нас появится пара РО, и первый игрок проиграет. Если же снова выпадет решка, ситуация не изменится — мы остаёмся в состоянии "выпала решка".
Найдем вероятность победы первого игрока (выпадет ОО), если выпала решка:
P(победит ОО | выпала Р) = P(выпал О) * P(победит ОО | выпал О) + P(выпала Р) * P(победит ОО | выпала Р) = 1/2 * 0 + 1/2 * P(победит ОО | выпала Р) = 1/2 * P(победит ОО | выпала Р)
P(победит ОО | выпала Р) = 0
2) В последнем броске выпал орёл
Если в следующем броске выпадет орёл у нас появится пара ОО, и первый игрок выиграет. Если же выпадет решка — мы перейдём в состояние "выпала решка", вероятность этого исхода мы нашли в предыдущем шаге P(победит ОО | выпала Р) = 0.
Найдем вероятность победы первого игрока (выпадет ОО), если выпал орёл:
P(победит ОО | выпал О) = P(выпал О) * P(победит ОО | выпал О) + P(выпала Р) * P(победит ОО | выпала Р) = 1/2 * 1 + 1/2 * 0 = 1/2
P(победит ОО | выпал О) = 1/2
3) Старт
В первом броске с вероятностью 1/2 мы получаем орла и с вероятностью 1/2 мы получаем решку
P = 1/2 * P(победит ОО | выпал О) + 1/2 * P(победит ОО | выпала Р) = 1/2 * 1/2 + 1/2 * 0 = 1/4
Вероятность того, что победит 1 игрок, выпадет ОО: 1/4
Вероятность того, что победит 2 игрок, выпадет РО: 3/4
@ProdAnalysis
При отборе на позиции аналитика (продуктового, бизнес, риск-аналитика) у вас всегда будет 2 секции:
1. Математика — дают 3-4 задачки, проверяют знания теорвера, матстата и логики
2. Технические кейсы, связанные с вашим напрявлением
Чтобы не завалить первую секцию, советуем вам прочитать этот пост!
Условие
Монетку подбрасывают до тех пор пока не выпадет одна из двух последовательностей. Для первого игрока — орёл орёл (ОО), для второго —решка орёл (РО). За кого выгоднее болеть и какова вероятность победы каждого из игроков?
Решение
Для того, чтобы записать уравнения нужно посмотреть, что происходит после каждого броска, когда мы находимся в одно из состояний: "старт", "выпала решка", "выпал орёл"
Найдём вероятность того, что победит 1 игрок, то есть выпадет ОО
Состояния:
1) В последнем броске выпала решка
Если в следующем броске выпадет орёл у нас появится пара РО, и первый игрок проиграет. Если же снова выпадет решка, ситуация не изменится — мы остаёмся в состоянии "выпала решка".
Найдем вероятность победы первого игрока (выпадет ОО), если выпала решка:
P(победит ОО | выпала Р) = P(выпал О) * P(победит ОО | выпал О) + P(выпала Р) * P(победит ОО | выпала Р) = 1/2 * 0 + 1/2 * P(победит ОО | выпала Р) = 1/2 * P(победит ОО | выпала Р)
P(победит ОО | выпала Р) = 0
2) В последнем броске выпал орёл
Если в следующем броске выпадет орёл у нас появится пара ОО, и первый игрок выиграет. Если же выпадет решка — мы перейдём в состояние "выпала решка", вероятность этого исхода мы нашли в предыдущем шаге P(победит ОО | выпала Р) = 0.
Найдем вероятность победы первого игрока (выпадет ОО), если выпал орёл:
P(победит ОО | выпал О) = P(выпал О) * P(победит ОО | выпал О) + P(выпала Р) * P(победит ОО | выпала Р) = 1/2 * 1 + 1/2 * 0 = 1/2
P(победит ОО | выпал О) = 1/2
3) Старт
В первом броске с вероятностью 1/2 мы получаем орла и с вероятностью 1/2 мы получаем решку
P = 1/2 * P(победит ОО | выпал О) + 1/2 * P(победит ОО | выпала Р) = 1/2 * 1/2 + 1/2 * 0 = 1/4
Вероятность того, что победит 1 игрок, выпадет ОО: 1/4
Вероятность того, что победит 2 игрок, выпадет РО: 3/4
@ProdAnalysis
❤17
Задача с собеседования на Junior аналитика в Т-банк
Ранее мы писали про то как проходит отбор в желтый банк. Сегодня продолжаем серию постов про реальные задачки с интервью, разберём легкую задачу с собеседования
Условие
Королевство смурфиков очень традиционное. В нем всегда образуются пары из мужчин-смурфиков и женщин-смурфиков и они живут вместе до конца жизни. Каждая пара рожает до тех пор, пока не родится девочка. После этого они не заводят детей. Какое распределение полов в королевстве?
Решение
1) Матожидание количества девочек: по условию задачи в каждой семье ровно одна девочка
E[числа девочек] = 1
2) Матожидание количества мальчиков:
Вероятность того, что родится девочка p = 1/2
Посчитаем вероятность того, что родится k мальчиков:
P(число мальчиков = k) = (1 - p)^k * p, k = 0, 1, 2, ....
Тогда матожидание числа мальчиков по определению:
E[числа мальчиков] = (от k = 0 до ∞) Σk*P(число мальчиков = k) = (от k = 0 до ∞) Σk * (1 - p)^k * p
Распишем чему равен ряд: S = (от k = 0 до ∞) Σk * q^k
Первый член нулевой, значит S = (от k = 1 до ∞) Σk * q^k
qS = (от k = 1 до ∞) Σk * q^{k + 1} = (от k = 2 до ∞) Σ (k - 1) * q^k
S - qS = (от k = 1 до ∞) Σk * q^k - (от k = 2 до ∞) Σ (k - 1) * q^k = 1 * q + (от k = 2 до ∞) Σ [k - (k - 1)] * q^k = q + (от k = 2 до ∞) Σ q^k = (от k = 1 до ∞) Σ q^k = q / (1 - q)
S = q / (1 - q)^2
E[числа мальчиков] = p * (1 - p)/p^2 = (1 - p)/p = 1
————————————————————————
В среднем на каждую семью 1 девочка и 1 мальчик. Если в королевстве тысячи семей, то по закону больших чисел средние значения складываются, поэтому во всем королевстве остаётся такое же соотношение:
мальчики : девочкам = 1 : 1
@ProdAnalysis
Ранее мы писали про то как проходит отбор в желтый банк. Сегодня продолжаем серию постов про реальные задачки с интервью, разберём легкую задачу с собеседования
Условие
Королевство смурфиков очень традиционное. В нем всегда образуются пары из мужчин-смурфиков и женщин-смурфиков и они живут вместе до конца жизни. Каждая пара рожает до тех пор, пока не родится девочка. После этого они не заводят детей. Какое распределение полов в королевстве?
Решение
E[числа девочек] = 1
2) Матожидание количества мальчиков:
Вероятность того, что родится девочка p = 1/2
Посчитаем вероятность того, что родится k мальчиков:
P(число мальчиков = k) = (1 - p)^k * p, k = 0, 1, 2, ....
Тогда матожидание числа мальчиков по определению:
E[числа мальчиков] = (от k = 0 до ∞) Σk*P(число мальчиков = k) = (от k = 0 до ∞) Σk * (1 - p)^k * p
Распишем чему равен ряд: S = (от k = 0 до ∞) Σk * q^k
Первый член нулевой, значит S = (от k = 1 до ∞) Σk * q^k
qS = (от k = 1 до ∞) Σk * q^{k + 1} = (от k = 2 до ∞) Σ (k - 1) * q^k
S - qS = (от k = 1 до ∞) Σk * q^k - (от k = 2 до ∞) Σ (k - 1) * q^k = 1 * q + (от k = 2 до ∞) Σ [k - (k - 1)] * q^k = q + (от k = 2 до ∞) Σ q^k = (от k = 1 до ∞) Σ q^k = q / (1 - q)
S = q / (1 - q)^2
E[числа мальчиков] = p * (1 - p)/p^2 = (1 - p)/p = 1
————————————————————————
В среднем на каждую семью 1 девочка и 1 мальчик. Если в королевстве тысячи семей, то по закону больших чисел средние значения складываются, поэтому во всем королевстве остаётся такое же соотношение:
мальчики : девочкам = 1 : 1
@ProdAnalysis
❤10⚡2❤🔥1👍1
Отбор на стажировку в Яндекс в самом разгаре. Специально для наших подписчиков выкладываем разбор одной из задач из контеста на позицию аналитика
Условие
Артемий занимается регламентными работами на кластере, ему дали данные о последних проведенных работах в виде таблицы nodebase, вот несколько строк:
где node — id ноды, parent — id родительской ноды, diagnostics — дата диагностики ноды (если нода диагностировалась несколько раз за последние 5 лет, в таблице будет несколько строк с одинаковыми
Помогите Артемию подготовить отчет, в котором необходимо вывести номер ноды, ее положение в иерархии (начальная —
Решение
Структура итоговой таблицы будет такой:
-
-
-
1) В итоговой таблице нужно для каждой ноды вывести дату последней диагностики (нода могла диагностироваться несколько раз за последние 5 лет), поэтому сначала напишем cte, чтобы создать временную таблицу с нодой и её последней диагностикой
2) Чтобы определить позицию в таблице для каждой ноды, нужно понять есть ли у неё родитель или нет. То есть можно узнать
P. S. Можно объединить cte из 1 и 2 пункта, наше решение в таком виде написано для наглядности
3) Чтобы определить позицию в таблице, для каждой ноды нужно понять есть ли у неё дети или нет. Опять напишем cte, будем группировать по колонке
4) Определяем положение каждой ноды
Соединим 2 таблицы из предыдущих 2 пунктов
5) Соединяем информацию о позиции и последней дате и сортируем сначала по позиции (для этого расставим приоритеты в сортировке
@ProdAnalysis
Условие
Артемий занимается регламентными работами на кластере, ему дали данные о последних проведенных работах в виде таблицы nodebase, вот несколько строк:
node parent diagnostics
7 5 2025-07-01
5 … 2025-06-30
1 … 2025-06-10
10 7 2024-12-08
11 7 2024-12-04
… … 2025-07-06
2 11 2025-03-26
4 3 2024-11-11
6 3 2025-02-19
3 … 2025-02-17
8 3 2024-12-31
где node — id ноды, parent — id родительской ноды, diagnostics — дата диагностики ноды (если нода диагностировалась несколько раз за последние 5 лет, в таблице будет несколько строк с одинаковыми
node).Помогите Артемию подготовить отчет, в котором необходимо вывести номер ноды, ее положение в иерархии (начальная —
root, внутренняя — inner или конечная — leaf) и время ее последней диагностики. Важно сначала вывести начальные ноды, у которых прошло наибольшее время с дня последней диагностики, затем ноды inner и в конце leaf. Необходимо написать запрос на sqlite, который поможет собрать нужную информацию в правильной сортировке.Решение
Структура итоговой таблицы будет такой:
-
node номер ноды-
position её роль в иерархии: root (нет родителя), inner (есть родитель и есть дети), leaf (есть родитель, но детей нет)-
last_date дата последней диагностики1) В итоговой таблице нужно для каждой ноды вывести дату последней диагностики (нода могла диагностироваться несколько раз за последние 5 лет), поэтому сначала напишем cte, чтобы создать временную таблицу с нодой и её последней диагностикой
with last_date as (
select node, max(diagnostics) as last_date
from nodebase
group by node
),
2) Чтобы определить позицию в таблице для каждой ноды, нужно понять есть ли у неё родитель или нет. То есть можно узнать
id её родителя или вывести NULL, если его нет. Сделаем также как в прошлом пункте, с помощью функции max(..).parent_node as (
select node, max(parent) as parent
from nodebase
group by node
),
P. S. Можно объединить cte из 1 и 2 пункта, наше решение в таком виде написано для наглядности
3) Чтобы определить позицию в таблице, для каждой ноды нужно понять есть ли у неё дети или нет. Опять напишем cte, будем группировать по колонке
parent, предварительно отбросив все строки где parent = NULL. Узнаем сколько детей у каждого родителя с помощью count(*) (либо можно сделать также как в прошлом пункте, с помощью функции max(node) — ведь нам нужно просто знать есть ли они или нет).child_node as (
select parent as node, count(*) as child
from nodebase
where parent is not null
group by parent
),
4) Определяем положение каждой ноды
Соединим 2 таблицы из предыдущих 2 пунктов
child_node и parent_node с помощью left join, а затем каждой ноде присвоим один из типов (root, inner, leaf)position as (
select p.node,
case
when p.parent is null then 'root'
when c.child is not null then 'inner'
else 'leaf'
end as position
from parent_node as p
left join child_node as c on c.node = p.node
)
5) Соединяем информацию о позиции и последней дате и сортируем сначала по позиции (для этого расставим приоритеты в сортировке
root — 0, inner — 1, leaf — 2), а потом по самой старой диагностикеselect p.node, p.position, dt.last_date
from position as p
left join last_date as dt on p.node = dt.node
order by
case p.position
when 'root' then 0
when 'inner' then 1
else 2
end,
dt.last_date asc
@ProdAnalysis
❤8❤🔥2
Forwarded from Поступашки - ШАД, Стажировки и Магистратура
Поступашки открывают набор на новую линейку математических курсов 🎓
Хочешь поступить в ШАД, Ai Masters, или ААА? А может ты мечтаешь тащить собесы и поступить в крутую магу, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:
➡️ алгоритмы
➡️ теория вероятностей
➡️ линейная алгебра
➡️ математический анализ
Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что вам реально понадобится! Хочешь конкретики? На нашам сайте можно найти программу, подробности и отзывы на каждый курс.
Помимо кучи авторских задач мы даем доступ к уникальной закрытой базе заданий ШАДа, разбор реального контеста в ШАД, разбор ВСЕХ задач с собеседований в ШАД, Ai Masters, ААА! Более того, вы получите эксклюзивные материалы для проверяющих с собесов, пробный экзамен, инсайды, персональные рекомендации, собес с подробной консультацией и дальнейшим сопровождением вплоть до поступления в место мечты! А если вы выполните все рекомендации, но не достигнете поставленной цели, то вам вернут все потраченные деньги!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Хочешь поступить в ШАД, Ai Masters, или ААА? А может ты мечтаешь тащить собесы и поступить в крутую магу, но тебе не хватает фундамента? Узнал себя? Тогда записывайся у администратора на любой из курсов:
Наши курсы заточены на практику и конкретные задачи, вся теория будет разобрана на конкретных задачах и примерах, которые будут на экзаменах и на собесах. Ничего нудного и скучного! Изучаем только то, что вам реально понадобится! Хочешь конкретики? На нашам сайте можно найти программу, подробности и отзывы на каждый курс.
Помимо кучи авторских задач мы даем доступ к уникальной закрытой базе заданий ШАДа, разбор реального контеста в ШАД, разбор ВСЕХ задач с собеседований в ШАД, Ai Masters, ААА! Более того, вы получите эксклюзивные материалы для проверяющих с собесов, пробный экзамен, инсайды, персональные рекомендации, собес с подробной консультацией и дальнейшим сопровождением вплоть до поступления в место мечты! А если вы выполните все рекомендации, но не достигнете поставленной цели, то вам вернут все потраченные деньги!
Для вопросов и покупок пишем администратору и не тянем с этим: на каждом курсе количество мест ограничено!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Продолжаем разбирать отбор на стажировку в Яндекс. Специально для наших подписчиков выкладываем разбор одной из задач из контеста на позицию аналитика
Условие
Два древних шамана сошлись в ритуальном состязании! Перед ними лежит священный сосуд с 16 магическими камнями четырёх стихий:
- 4 камня духа земли
- 4 камня духа огня
- 4 камня духа воды
- 4 камня духа ветра
Правила испытания:
1) Шаманы по очереди берут по одному камню случайной стихии (старший шаман начинает).
2) Когда у одного из шаманов окажется 3 камня одной стихии — его дух пробуждается, и он объявляется победителем!
3) Камни после вытягивания не возвращаются в священный сосуд.
Вопрос мудрецам:
Какова вероятность, что ритуал завершится пробуждением духа?
Решение
Давайте построим вероятностную модель:
множество всех исходов — это случайная перестановка всех 16 камней, то есть упорядоченный список вида (камень 1, камень 2, …, камень 16).
Перед началом ритуала порядок неизвестен и равновероятен, то есть любая из 16! перестановок возможна
1) Как раздаются камни
По ходу игры шаманы "открывают" этот список поочередно:
старший берёт 1-й, 3-й, 5-й, ..., 15-й камни (всего 8)
младший берёт 2-й, 4-й, 6-й, ..., 16-й (всего 8)
следовательно, множество камней старшего — это равновероятное 8 элементное подмножество из 16
таких подмножеств C из 16 по 8 = 12 870
2) Посчитаем вероятность ничьей
Ритуал завершится пробуждением духа, когда у одного из шаманов соберётся 3 камня одной стихии. Значит ничья будет в том случае, когда у обоих шаманов будет не больше двух камней каждой стихии.
Камней каждой стихии по 4 штуки и шаманы берут камни пока они не закончатся. Значит ничья возможна только при таком раскладе:
у младшего: 2 земли, 2 огня, 2 воды, 2 ветра
у старшего: 2 земли, 2 огня, 2 воды, 2 ветра
Они симметричны, мы можем посчитать вероятность этого расклада только для старшего, остальные камни автоматически уйдут младшему.
3) Посчитаем количество способов получить 2 земли, 2 огня, 2 воды, 2 ветра
У нас все камни внутри одной стихии разные. Мы выбираем 2 из 4 камней огня, 2 из 4 камней земли, 2 из 4 камней воды, 2 из 4 камней ветра
(C из 4 по 2)^4 = 6^4 = 1 296
4) Итог
Вероятность ничьей: P = 1 296/12 870= 72/715
Вероятность пробуждения духа: 1 - P = 643/715 = 0.9
@ProdAnalysis
Условие
Два древних шамана сошлись в ритуальном состязании! Перед ними лежит священный сосуд с 16 магическими камнями четырёх стихий:
- 4 камня духа земли
- 4 камня духа огня
- 4 камня духа воды
- 4 камня духа ветра
Правила испытания:
1) Шаманы по очереди берут по одному камню случайной стихии (старший шаман начинает).
2) Когда у одного из шаманов окажется 3 камня одной стихии — его дух пробуждается, и он объявляется победителем!
3) Камни после вытягивания не возвращаются в священный сосуд.
Вопрос мудрецам:
Какова вероятность, что ритуал завершится пробуждением духа?
Решение
множество всех исходов — это случайная перестановка всех 16 камней, то есть упорядоченный список вида (камень 1, камень 2, …, камень 16).
Перед началом ритуала порядок неизвестен и равновероятен, то есть любая из 16! перестановок возможна
1) Как раздаются камни
По ходу игры шаманы "открывают" этот список поочередно:
старший берёт 1-й, 3-й, 5-й, ..., 15-й камни (всего 8)
младший берёт 2-й, 4-й, 6-й, ..., 16-й (всего 8)
следовательно, множество камней старшего — это равновероятное 8 элементное подмножество из 16
таких подмножеств C из 16 по 8 = 12 870
2) Посчитаем вероятность ничьей
Ритуал завершится пробуждением духа, когда у одного из шаманов соберётся 3 камня одной стихии. Значит ничья будет в том случае, когда у обоих шаманов будет не больше двух камней каждой стихии.
Камней каждой стихии по 4 штуки и шаманы берут камни пока они не закончатся. Значит ничья возможна только при таком раскладе:
у младшего: 2 земли, 2 огня, 2 воды, 2 ветра
у старшего: 2 земли, 2 огня, 2 воды, 2 ветра
Они симметричны, мы можем посчитать вероятность этого расклада только для старшего, остальные камни автоматически уйдут младшему.
3) Посчитаем количество способов получить 2 земли, 2 огня, 2 воды, 2 ветра
У нас все камни внутри одной стихии разные. Мы выбираем 2 из 4 камней огня, 2 из 4 камней земли, 2 из 4 камней воды, 2 из 4 камней ветра
(C из 4 по 2)^4 = 6^4 = 1 296
4) Итог
Вероятность ничьей: P = 1 296/12 870= 72/715
Вероятность пробуждения духа: 1 - P = 643/715 = 0.9
@ProdAnalysis
❤8🥰1