
Коротко о главном:
Всем привет! Я выпускник данной Академии и победитель в конкурсе проектов. Я получил уникальный опыт, который будет полезен начинающим специалистам
Этот обзор будет полезен тем, кто еще учится в вузе или школе, а также тем у кого есть дети данного возраста - Академия рассчитана на молодых людей 8 класса - 2 курса
Предвкушаю вопросы, поэтому я сразу говорю - обзор не реклама, ссылок не будет. В статье будут и минусы. Я хочу поделиться мнением, попробовать себя в написании статей, а также рассказать о своем проекте, но об этом лишь в конце статьи - проект покажет реальный уровень выпускников академии
Все что будет дальше является сугубо личным мнением. Приступим!
Об академии
Дети должны страдать - чтобы стать лучшей версией себя.
Научиться преодолевать себя - первая стадия успешной карьеры
© Неизвестный из Яндекса

Школьники и студенты занимаются в формате интенсивной учебы 2 месяца - в конце лучшую треть студентов ждет выпускной проект под руководством Яндекса.
На учебу приходится выделять 10-20 часов (с нулевого уровня в сфере, но умением программировать). Для поступления нужно пройти алгоритмическую секцию на 3 задачи из 4 (60% баллов)
Соблюдается баланс между "Ладно, сейчас разберусь" и "Боже мой, где окно" - учеба действительно интенсивная и сложная, даже для студента с опытом в сфере, а знания сильно помогут в работе будущему специалисту (точно)
Всего было 4 направления в этом году:
Большие данные (самое сложное)
Разработка игр
Веб-разработка на Django
Машинное обучение
Направления часто меняются, раньше было NLP и Backend.
Я для себя выбрал Большие данные (дальше речь пойдет о нем), и судя по выпускным проектам и словам организаторов - именно оно оказалось самым сложным. Здесь чувствуется, что навыки даются не совсем для школьников - но это хорошо. Также хотел бы отметить направление 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 часа в компании сокурсников.
Не знаю, какая судьба ждет выпускников и отличников - на момент написания статьи прошел всего день. Но кто знает, какие знакомства в итоге окажутся полезными :)
Мнение об интенсиве
Как человек, который прошел много курсов, и вышел на первую стажировку в момент начала интенсивов, с уверенностью могу сказать:
Интенсивы академии - отличная площадка для получения профессиональных, довольно уникальных навыков в ОЧЕНЬ удобном формате. Полученные навыки точно будут актуальны в вашей профессии, и для мотивированных ребят это настоящая возможность получить "крутые плюшки на халяву".
Также курсы подойдут и уже чуть опытным ребятам - активным студентам, которые не до конца определились со своей профессией или сферой деятельности, или просто хотят углубить знания
Курсы отлично помогут в профориентации, например, в аналитике, а также дадут знания, которые точно понадобятся в работе
Если вы знаете мотивированного 8-11классника, или студента со свободным временем - можете порекомендовать им интенсив. Их старания обязательно окупятся!
Что стоит добавить:
Побольше приятностей от Яндекса (этого всегда нужно больше), добавить более сложные задачи по SQL - запросы уровня "Select from where", как самое сложное задание - бред. Остальные модули хороши, можно усложнить чуть-чуть Pandas
Конец обзора интенсива
Выпускной проект :
Информационно-аналитическая система для Дашборда Интернет-магазина
Если вы все еще читаете - было бы здорово услышать обратную связь! Хоть мы еще и новички, но у нас получился интересный проект, про который мы услышали мало действительно полезных комментариев
"Ну вы, конечно, нокаутировали всех!
Если будете на выпускном офлайн, аккуратнее, вас могут захотеть устранить)))" - комментарий сразу после выступления

В качестве выпускного проекта, если сильно обобщать была дана задача:
Сделайте дашборд таким-то, таким-то - вот вам таблица :)
или по другому:

В составе моей команды был 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 - нереляционная база данных, поэтому 7.5 млн строк для нее - пустяк. К тому же clickhouse имеет особенность - он работает в 100-1000 раз быстрее реляционных баз данных.
Таким образом у нас оказалось самое передовое и быстрое решение
Оптимизация хранения данных

В нашей таблице было 5 строковых категориальных данных - город, пол, категория товара, действие на сайте, а также воронка, откуда пользователь пришел
Строковые данные весят сильно больше числовых - каждая буква от 1 до 4 байт. Если бы мы заменили каждое длинное слово на число, мы бы сильно сократили память в каждой колонке.
Таким образом мы решили вынести данные в таблицу вида "1 - Москва, 2 - Питер, 3- Казань... 15- Воронеж". То есть каждому уникальному значению дали ID, а этот ID записали в главную таблицу. Теперь в каждой ячейке содержится UInt8 - мы сократили память половины таблицы в 20+ раз
Подсчет сложных метрик
Чтобы некоторые метрики могли работать с селекторами (фильтрами), нам пришлось использовать сторонние инструменты - не Datalens, а Pyspark и Clickhouse. Создавались отдельные таблицы с ключем и значением этой метрики
ML и прогнозирование
Не самая сильная наша часть, но это нам не помешало попробовать сделать 5 моделей:
Разбить на группы с помощью K-means и найти ключевые признаки через Дерево решений- не вышло
Разбить на 3 группы по платежеспособности(25% где мало денег, 50%, 25% где много денег) и найти ключевые признаки через Дерево решений - точность 65%
Линейная модель - низкое качество
Линейная модель на Spark.ML - неточно обучилась
Prophet - модель для прогнозирования временных рядов
Именно Prophet дал нашей команде возможность "видеть будущее"- модель вышла очень точной, в отличии от других

Мы тюнили модель - учитывали также аномальные значения (праздники) - Prophet это позволяет. Но первая модель (стандартная) показала себя лучше других.
ETL-процессы: данные с сайта -> базу данных
Это было основой нашей будущей информационной системы
Первоначально она состояла из 4-х компонентов: airflow, микросервис на Django, база данных Clickhouse и дашборд Datalens.
Django отвечал за симуляцию поступающей информации. Это простой сайт, который умеет принимать данные с формы. Вот так это выглядит:

Введенные данные логируются а формате csv.
Далее airflow с регулярностью в 24 часа запускает скрипт. Его результатом является обновление нескольких таблиц в БД с учетом данных, собранных Django

Логичнее было бы сделать генератор данных, но на вопрос "почему ты сделал именно так?" Михаил не смог ответить - наверное спешил реализовать проект.
Таким образом мы настроили конвейер из ETL-процессов - данные с сайта попадают во все наши таблицы в Clickhouse ежедневно.
Информационно-аналитическая система для дашборда

Данные с сайта поступаю в лог, и оттуда сразу в главную таблицу. Также файлы из лога отправляются прогнозироваться в Prophet, а также в Pyspark - чтобы считались метрики. Также в Clickhouse загружается таблица с актуальным курсом доллара.
К данной системе мы не успели добавить за время проекта Prophet и Pyspark - но чтобы их подключить, нужно прописать всего 2 скрипта на Airflow - это мы реализовываем сейчас. Сами Prophet и Pyspark уже настроены
Таким образом, в базу поступают только актуальные данные: курс доллара, прогноз Propheta, подсчет метрик Pyspark. Это делает ИАС актуальным инструментом на года, а не на один раз - это очень ценно для бизнеса.
Технические итоги проекта:
Развернут свой сервер и кластер с БД (Облачные технологии)
Самая быстрая БД под капотом- Clickhouse. Также она оптимизирована.
90 разных графиков и полный функционал DataLens реализован
C помощью PySpark и SQL подсчитаны самые сложные метрики
Перепробованы 6 моделей ML, 2 реализованы
ETL-процессы на Airflow + SQL
Почти построена своя Информационная система
Итоги проекта:
Отлично выполнили задачу: выбрали, посчитали, визуализировали, предсказали полный набор метрик
Использовали большой стек технологий, включая работы с серверами и ML.
Уделили внимание к каждой детали, проводили развед. анализ
Сделали удобный дашборд для разных должностей
Построили свою Информационно-аналитическую систему, почти готовую к выпуску - и это всего из одной таблицы и задания "сделайте дашборд".
Работа команды:

Мнение о проекте - недотянули в плане построения ИАС, в генерации данных, и в долговечности решения. Было бы интересно услышать ваше мнение!
Ссылка на дашборд
Ссылка: https://datalens.yandex/5g7qn50y8x7ev (может не сработать, тк у нас нет бесконечных денег на аренду сервера под clickhouse)
Фотографии из DataLens (*.png):







