Коротко о главном:
Всем привет! Я выпускник данной Академии и победитель в конкурсе проектов. Я получил уникальный опыт, который будет полезен начинающим специалистам
Этот обзор подойдет в первую очередь тем, кто еще учится в вузе или школе, а также тем у кого есть дети данного возраста - Интенсивы рассчитаны на молодых людей до 19 лет.
Предвкушаю вопросы, поэтому я сразу говорю - обзор не реклама. Не путайте Практикум и Академию, академия - некоммерческая организация, а интенсивы - бесплатные курсы, которые (внезапно) просто дают знания.
Минусы и результаты собеседований после курсов - перед началом секции "проект" - эти 3 модуля покажут реальный уровень выпускников академии. Все что будет дальше является сугубо личным мнением. Приступим!
Об академии
Дети должны страдать - чтобы стать лучшей версией себя.
Научиться преодолевать себя - первая стадия успешной карьеры
© Неизвестный из Яндекса
Школьники и студенты занимаются в формате интенсивной учебы 2 месяца - в конце лучшую треть студентов ждет выпускной проект под руководством Яндекса.
На учебу приходится выделять 10-20 часов (с нулевого уровня в сфере, но умением программировать). Для поступления нужно пройти алгоритмическую секцию на 3 задачи из 4 (60% баллов)
Соблюдается баланс между "Ладно, сейчас разберусь" и "Боже мой, где окно" - учеба действительно интенсивная и сложная, даже для студента с опытом в сфере, а знания сильно помогут в работе будущему специалисту (точно)
Всего было 4 направления в этом году:
Большие данные (самое сложное)
Разработка игр
Веб-разработка на Django
-
Машинное обучение
Направления часто меняются, раньше было NLP и Frontend.
Я для себя выбрал Большие данные (дальше речь пойдет о нем), и судя по выпускным проектам и словам организаторов - именно оно оказалось самым сложным. Здесь чувствуется, что навыки даются не совсем для школьников - но это хорошо. Но сложными были все направления, особенно Django. Также хотел бы отметить направление интересным ML
Действует система баллов, и чтобы попасть в проект, нужно будет сделать хотя бы 2/3 всех заданий, не проходя мимо сложные номера
Направление Большие данные
Курс построен на двух видеоуроках в неделю + домашней работе
Домашняя работа очень важна - если первое задание вводит тебя в тему, и его видоизмененное решение часто предоставлено в презентации, то последние задачи - настоящие продуктовые кейсы, которыми занимаются стажёры и джуны в Яндексе
Подробнее о модулях:
1 и 2 модуль - знакомство с парадигмой MapReduce, подсчет сложных метрик с помощью библиотеки MRJob и PySpark. Самые сложные задания - проведение когортного анализа в последний месяц и анализа возвращаемости. Отличный модуль
3, 4 модуль - обучение Pandas, Matplotlib, Networkx, аналитике. Так как в интернете много гайдов на эти инструменты, то модуль показался мне менее интересным (я уже знал их), но практика в заданиях помогла мне закрепить хорошее владение. Самые сложные задание - поиск 4-х аномалий в логе, упрощение работы графового алгоритма с O(n**3) до линейного времени.
5 модуль - работа на дашборде в системе Yandex Datalens - замечательном инструмент, по сравнению, например, с Power BI. Также идет еще одна практика Matplotlib. Задание в модуле одно - построить дашборд
6 модуль - (Не)
математическаяСтатистика. Модуль чем-то напомнил мне курсы Анатолия Карпова на Stepik, но также рассказал об основах A/B тестов, какие ошибки в них часто совершаются. Если бы Яндекс скооперировался с Карповым - вышел бы замечательный курс по статистике, но и без него вышла неплохая лекция на полтора часа7 модуль - Инженерия данных на PySpark. Это был самый сложный модуль, нас учили писать пайплайны обработки данных - мы строили широкие событийные таблицы. 2 из 8 заданий у меня вышли размером по 200 строк. Также нужно было потом считать метрики по этим таблицам.
8 модуль - Регуляризация на Airflow. Не смог полностью осилить модуль, так как не хватило времени, но вышло интересно. Объяснено очень понятно
9 модуль - проект - о нем смогут почитать те, кто дойдут до конца
Организация работы
Вся учебы проходит на их платформе. Читают лекции и составляют домашние задания сотрудники Яндекса.
Вместе с ревьюверами (лучшими учениками, прошедшие курс в прошлом году) они выставляют баллы. На домашку есть жесткий дедлайн (перенести можно по уважительной причине)
Студентам дают образ виртуальной машины с предустановленным софтом, чтобы не возникало желание все бросить потому что опять выскочила ошибка.
Всегда можно было написать менторам или организаторам, это было особенно нужно во время проектов.
Проектная стадия
Самые мотивированные попадают сюда - в этом модуле нужно применить все накопленные знания для самостоятельного решения какого-то кейса (но вам немного подсказывают опытные сотрудники Яндекса).
Среди тем, случайным образом определялась твоя:
Построение дашборда
Продуктовая аналитика
A/B тесты
Анализ информации на графах
Работа идет в командах по 3 человека, можно объединиться с товарищами. Ближайшие 2 недели вы будете работать в усиленном режиме
Выпускной и "плюшки от Яндекса"
Самая главная плюшка - это ваши знания, полученные за время Интенсивов. Не забывайте, ребята, что ваши знания окупятся еще 100 раз!
Всех ребят приглашают на выпускной в Москве в главном офисе Яндекса
На официальной части 4 направления показывают свои лучшие проекты перед выпускниками, менторами, кураторами и руководителями направлений и Академии Яндекса.
Топ-10 участников получили это главный секрет интенсивов :)
После ребят ждет экскурсия по офису, нескончаемая пицца, угощения и активное общение. Я просидел еще 3 часа в компании сокурсников.
Не знаю, какая судьба ждет выпускников и отличников - на момент написания статьи прошел всего день. Но кто знает, какие знакомства в итоге окажутся полезными :)
Что стоит добавить:
Побольше приятностей от Яндекса (этого всегда нужно больше), добавить более сложные задачи по SQL - запросы уровня "Select from where", как самое сложное задание - бред. Остальные модули хороши, можно усложнить чуть-чуть Pandas
Также стоит более просто и подробно объяснить строение Hadoop - про него говорится мало, в отличие от изучения парадигмы MapReduce. Лекцию по строению обязательно стоит переработать
Уровень выпускников
У ребят со всех направлений получились интересные проекты. Если полностью отдать себя курсу, можно выйти с хорошим набором знаний и пет-проектом в придачу.
Знаний пройденных на курсе не совсем достаточно для прохождения собеседований (а это важно для школьников ?), и можно запутаться в понятиях HDFS, Yarn, parquet, партиционирование, Spark. Я чувствовал себя стыдно, когда говорил что считал сложные вещи на Spark (так и есть, задачи были продуктовые), а потом не мог объяснить что это такое :)
Тем не менее, только со знаниями курса можно ответить на треть вопросов на собеседовании зеленой компании (на джуна). После часовой доп. подготовки - сможешь ответить на половину вопросов. Наверное это хорошо описывает уровень интенсивов - после такого курса получается неплохой стажер (как и после любой другой усердной структурированной учебы, например на других ресурсах)
Но все это касается именно интенсива "Большие данные"
Мнение об интенсиве
Как человек, который прошел много курсов, и вышел на первую стажировку в момент начала интенсивов, с уверенностью могу сказать:
Интенсивы академии - отличная площадка для получения профессиональных, довольно уникальных навыков в очень удобном формате. Полученные навыки точно будут актуальны в вашей профессии, и для мотивированных ребят это настоящая возможность получить "крутые плюшки на халяву".
Также курсы подойдут и уже чуть опытным ребятам - активным студентам младших курсов, которые не до конца определились со своей профессией или сферой деятельности, или просто хотят углубить знания
Курсы отлично помогут в профориентации, например, в аналитике, а также дадут знания, которые точно понадобятся в работе
Если вы знаете мотивированного 8-11классника, или студента со свободным временем - можете порекомендовать им интенсив (или другие курсы). Их старания обязательно окупятся!
Конец обзора интенсива
Выпускной проект :
Информационно-аналитическая система для Дашборда Интернет-магазина
Если вы все еще читаете - было бы здорово услышать обратную связь по проекту! Хоть мы еще и новички, но у нас получился интересный проект, про который мы услышали мало действительно полезных комментариев
"Ну вы, конечно, нокаутировали всех!
Если будете на выпускном офлайн, аккуратнее, вас могут захотеть устранить)))" - комментарий сразу после выступления
В качестве выпускного проекта, если сильно обобщать была дана задача:
Сделайте дашборд таким-то, таким-то - вот вам таблица :)
или по другому:
В составе моей команды был 8-классник Михаил Фадин, первокурсник Алексей Петров (я), и, внесший меньший вклад, 10-классник Артем Цыганков
Задачей было сделать качественный дашборд на основе всего одной таблицы:
Организация работы
Мы делали спринты по 2 дня, в конце которого анализировали, где потеряли время. Также у нас были дейли-встречи, чтобы обсудить кто чем занимается - на проект уходило по 3 часа в день (не меньше)
Мы документировали всю информацию с помощью хэштегов #важное #идея (и др.) в телеграме, накопили 74 записи.
Также у нас была Miro-доска, на которой отображалось сразу все: вкладки дашборда, метрики, планы на будущее проекта, идеи, комментарии, прогресс
Первая проблема - хранение данных
Нам дали входной файл (таблицу) размером 970 Мб, а Datalens вмещал максимум 200 Мб в один csv.
Мы испробовали три варианта:
С помощью Pandas изменить тип колонок + разбить таблицу на две и объединить по ключу - таким образом Артем сократил файл до 280 Мб, мог бы и больше, но в тот момент нашлось решение лучше
Я решил воспользоваться сервисами Yandex Cloud. Хотел Clickhouse, но он, как и любой другой кластер, стоил слишком дорого. Зато был вариант положить CSV в Object Store, и читать его с помощью языка Yandex Query
Оба этих варианта оказались медленными. Мы начали задумываться о других вариантах, и Михаил нашел способ получить кластер на 30 дней бесплатно через Amazon Web Services. Так мы подключили Clickhouse
Clickhouse - нереляционная колоночная база данных, сделанная специально для удобной обработки аналитических запросов. Она показывает более высокую производительность, чем реляционные СУБД в задачах, когда используется мало колонок и joins.
После перехода с Object Store + Yandex Query на Clickhouse, многие наши графики стали прогружаться не по 30 секунд, а по 6. Если бы строк было не 7 млн, а 1 млрд, то разница была бы сильно заметнее.
Таким образом в учебном проекте мы использовали инструмент, с которым работают многие российские и зарубежные компании (Cloudflare, Bloomberg, ВКонтакте, «Тинькофф банк», Avito)
Оптимизация хранения данных
В нашей таблице было 5 строковых категориальных данных - город, пол, категория товара, действие на сайте, а также воронка, откуда пользователь пришел
Строковые данные весят сильно больше числовых - каждая буква от 1 до 4 байт. Если бы мы заменили каждое длинное слово на число, мы бы сильно сократили память в каждой колонке.
Таким образом мы решили вынести данные в таблицу вида "1 - Москва, 2 - Питер, 3- Казань... 15- Воронеж". То есть каждому уникальному значению дали ID, а этот ID записали в главную таблицу. Теперь в каждой ячейке содержится UInt8 - мы сократили память выделяемую на 5 из 10 колонок в 15.5 раз
Подсчет сложных метрик
Чтобы некоторые метрики могли работать с селекторами (фильтрами), нам пришлось использовать сторонние инструменты - не Datalens, а Pyspark и Clickhouse. Создавались отдельные таблицы с ключем и значением этой метрики
ML и прогнозирование
Не самая сильная наша часть, но это нам не помешало попробовать сделать 3 модели:
Разбить на группы с помощью K-means и найти ключевые признаки через Дерево решений- не вышло, тк не разобрались, как засунуть в K-means такую большую таблицу :)
Разбить пользователей на 3 когорты по сумме покупок за все время(25% кто принес меньше денег, 50% "средних" пользователей, 25% кто принес много денег - по аналогии разбиения Boxplot) и найти ключевые признаки "покупающего" юзера через Дерево решений - точность 65%
Prophet - модель для прогнозирования временных рядов
Именно Prophet дал нашей команде возможность "видеть будущее"- модель вышла очень точной, в отличии от других
Мы тюнили модель - учитывали также аномальные значения (праздники) - Prophet это позволяет. Но первая модель (стандартная) показала себя лучше других.
ETL-процессы: данные с сайта -> базу данных
Это было основой нашей будущей информационной системы
Первоначально она состояла из 4-х компонентов: airflow, сайт на Django, база данных Clickhouse и дашборд Datalens.
Django отвечал за симуляцию поступающей информации. Это простой сайт, который умеет принимать данные с формы. Вот так это выглядит:
Введенные данные логируются а формате csv.
Далее airflow с регулярностью в 24 часа запускает скрипт. Его результатом является обновление нескольких таблиц в БД с учетом данных, собранных Django
Логичнее было бы сделать генератор данных, но на вопрос "почему ты сделал именно так?" Михаил не смог ответить - наверное спешил реализовать проект.
Таким образом мы настроили конвейер из ETL-процессов - данные с сайта попадают во все наши таблицы в Clickhouse ежедневно.
Информационно-аналитическая система для дашборда
Данные с сайта поступаю в лог, и оттуда сразу в главную таблицу. Также файлы из лога отправляются прогнозироваться в Prophet, а также в Pyspark - чтобы считались метрики. Также в Clickhouse загружается таблица с актуальным курсом доллара.
Таким образом, в базу поступают актуальные данные: курс доллара, прогноз Propheta, подсчет метрик Pyspark.
Технические итоги проекта:
Развернут свой сервер и кластер с БД (Использованы облачные технологии)
Настроен ClickHouse на AWS и оптимизировано хранение данных
Реализовано 90 разных графиков и полный функционал DataLens
C помощью PySpark и SQL подсчитаны важные для E-com метрики
Перепробованы 4 ML-модели, 2 реализованы
Настроены ETL-процессы на Airflow + SQL
Построена своя информационно-аналитическая система
Итоги проекта:
Мы отлично выполнили изначальную задачу: выбрали, посчитали, визуализировали, предсказали полный набор метрик
Использовали большой стек технологий, включая работы с серверами и ML.
Уделили внимание к каждой детали, проводили развед. анализ
Сделали удобный дашборд для разных должностей
Построили свою Информационно-аналитическую систему, хотя задание было просто сделать дашборд из одной таблицы - перевыполнили задачу
Работа команды:
Мнение о проекте - недотянули в плане построения ИАС, в генерации данных, и в долговечности решения. Было бы интересно услышать ваше мнение!
Ссылка на дашборд
Ссылка: https://datalens.yandex/5g7qn50y8x7ev (может не сработать, тк у нас нет бесконечных денег на аренду сервера под clickhouse)
Фотографии из DataLens (*.png):
Самыми интересными чартами на вкладке "Динамика данных" являются:
Чарт, который показывает падения или технические работы на сервере (раздел скользящие метрики, оранжевый линейный график)
Чарт, который отслеживает самых активных пользователей, чтобы найти среди них подозрительно активных ботов (самый низ картинки)
Самыми интересными чартами на вкладке "О пользователе" являются:
Карта, с возможностью просмотреть ARPU, ARPPU, Средний чек, Возраст, Количество покупок в каждом из городов (и сразу увидеть иерархию метрики)
Первые 3 (4, 5, 6) действий пользователя на сайте, чтобы можно было понять поведение типичного пользователя (самый низ картинки)
Самыми интересными чартами на вкладке "Маркетинг" являются:
Процент покупателей "Я просто смотрю" (в самом низу картинки)
Распределение длительности сессии и временные метрики над этим графиком (верх картинки)
Самыми интересными чартами на вкладке "Продажи" являются:
"Сумма заказов, иерархия по дате", которая на одном графике позволяет посмотреть и сравнить сколько денег магазин заработал в абсолютно каждый из годов, месяцев, недель или дней (можно изменять масштаб графика) (посередине картинки, второй по счету график)
Набор показателей в верхней части картинки, который считает такие интересные метрики как коэффицент брошенных корзин, LTV, среднее время между покупками и другие. Их можно будет сравнить в разных датах на вкладке "Сравнение"
Самыми интересными чартами на вкладке "Топ-менеджеры" являются:
Прогноз средних доходов в день и в год. На соседнем графике можно посмотреть, сколько денег примерно будет заработано в те или иные недели, дни, месяцы, года.
Календарь с отображением прибыльный день или нет
На вкладке "Прогноз" мы спрогнозировали количество покупок и сумму доходов по дням. Также на самом верхнем чарте можно выбрать - предсказывать доходы с учетом аномальных значений, или без
Вкладка "Сравнение показателей" собирает лучшие графики/показатели со всех дашбордов, и позволяет поставить на один и тот же график разные фильтры.
Например можно сравнить средний чек мужчин 30-55 лет, интересующихся автодеталями, и девушек 18-30 лет, интересующихся косметикой - таким образом, например, маркетолог сможет выбрать целевую аудиторию для проведения акции.
Существует много сценариев использования дашборда, именно поэтому мы и называем этот проект "Центр управления полетом E-commerce"