Мнение об интенсивах Академии Яндекса + выпускной проект

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Коротко о главном:

Всем привет! Я выпускник данной Академии и победитель в конкурсе проектов. Я получил уникальный опыт, который будет полезен начинающим специалистам

Этот обзор будет полезен тем, кто еще учится в вузе или школе, а также тем у кого есть дети данного возраста - Академия рассчитана на молодых людей 8 класса - 2 курса

Предвкушаю вопросы, поэтому я сразу говорю - обзор не реклама, ссылок не будет. В статье будут и минусы. Я хочу поделиться мнением, попробовать себя в написании статей, а также рассказать о своем проекте, но об этом лишь в конце статьи - проект покажет реальный уровень выпускников академии

Все что будет дальше является сугубо личным мнением. Приступим!

Об академии

Дети должны страдать - чтобы стать лучшей версией себя.

Научиться преодолевать себя - первая стадия успешной карьеры
© Неизвестный из Яндекса

Будьте готовы - это действительно "Интенсив"
Будьте готовы - это действительно "Интенсив"

Школьники и студенты занимаются в формате интенсивной учебы 2 месяца - в конце лучшую треть студентов ждет выпускной проект под руководством Яндекса.

На учебу приходится выделять 10-20 часов (с нулевого уровня в сфере, но умением программировать). Для поступления нужно пройти алгоритмическую секцию на 3 задачи из 4 (60% баллов)

Соблюдается баланс между "Ладно, сейчас разберусь" и "Боже мой, где окно" - учеба действительно интенсивная и сложная, даже для студента с опытом в сфере, а знания сильно помогут в работе будущему специалисту (точно)

Всего было 4 направления в этом году:

  • Большие данные (самое сложное)

  • Разработка игр

  • Веб-разработка на Django

  • Машинное обучение

    Направления часто меняются, раньше было NLP и Backend.

Я для себя выбрал Большие данные (дальше речь пойдет о нем), и судя по выпускным проектам и словам организаторов - именно оно оказалось самым сложным. Здесь чувствуется, что навыки даются не совсем для школьников - но это хорошо. Также хотел бы отметить направление ML.

Действует система баллов, и чтобы попасть в проект, нужно будет сделать хотя бы 2/3 всех заданий, не проходя мимо сложные номера

Направление Большие данные

План 8-недельного курса
План 8-недельного курса

Курс построен на двух видеоуроках в неделю + домашней работе

Домашняя работа очень важна - если первое задание вводит тебя в тему, и его видоизмененное решение часто предоставлено в презентации, то последние задачи - настоящие продуктовые кейсы, которыми занимаются стажёры и джуны в Яндексе

Подробнее о модулях:

  • 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-классник Артем Цыганков

Задачей было сделать качественный дашборд на основе всего одной таблицы:

данные таблицы. Колонка value -значение в рублях
данные таблицы. Колонка value -значение в рублях

Организация работы

Мы делали спринты по 2 дня, в конце которого анализировали, где потеряли время. Также у нас были дейли-встречи, чтобы обсудить кто чем занимается - на проект уходило по 3 часа в день (не меньше)

Мы документировали всю информацию с помощью хэштегов #важное #идея (и др.) в телеграме, накопили 74 записи.

Размер планов на проект
Размер планов на проект

Также у нас была Miro-доска, на которой отображалось сразу все: вкладки дашборда, метрики, планы на будущее проекта, идеи, комментарии, прогресс

Первая проблема - хранение данных

Нам дали входной файл (таблицу) размером 970 Мб, а Datalens вмещал максимум 200 Мб в один csv.

Мы испробовали три варианта:

  1. С помощью Pandas изменить тип колонок + разбить таблицу на две и объединить по ключу - таким образом Артем сократил файл до 280 Мб, мог бы и больше, но в тот момент нашлось решение лучше

  2. Я решил воспользоваться сервисами Yandex Cloud. Хотел Clickhouse, но он, как и любой другой кластер, стоил слишком дорого. Зато был ваирант положить CSV в Object Store, и читать его с помощью языка Yandex Query

  3. Оба этих варианта оказались медленными. Мы начали задумываться о других вариантах, и Михаил нашел способ получить кластер на 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
Синий цвет - реальные данные. Белый - prophet

Мы тюнили модель - учитывали также аномальные значения (праздники) - Prophet это позволяет. Но первая модель (стандартная) показала себя лучше других.

ETL-процессы: данные с сайта -> базу данных

Это было основой нашей будущей информационной системы

Первоначально она состояла из 4-х компонентов: airflow, микросервис на Django, база данных Clickhouse и дашборд Datalens.

Django отвечал за симуляцию поступающей информации. Это простой сайт, который умеет принимать данные с формы. Вот так это выглядит:

Сайт, который эмулирует действия пользователей
Сайт, который эмулирует действия пользователей

Введенные данные логируются а формате csv.

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

Интерфейс Airflow
Интерфейс Airflow

Логичнее было бы сделать генератор данных, но на вопрос "почему ты сделал именно так?" Михаил не смог ответить - наверное спешил реализовать проект.

Таким образом мы настроили конвейер из 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):

Вкладка "Мониторинг Базы данных"
Вкладка "Мониторинг Базы данных"
Вкладка "О пользователе"
Вкладка "О пользователе"
Вкладка "Маркетинг"
Вкладка "Маркетинг"
Вкладка "Продажи"
Вкладка "Продажи"
Вкладка "Топ-менеджеры"
Вкладка "Топ-менеджеры"
Вкладка "Прогноз"
Вкладка "Прогноз"
Вкладка "Сравнение показателей"
Вкладка "Сравнение показателей"

Спасибо за прочтение, и удачи!

Источник: https://habr.com/ru/articles/732454/


Интересные статьи

Интересные статьи

Всем привет! Меня зовут Диляра. Я дата-сайентист команды разработки F5 Platform — low-code платформы для аналитики данных средних и крупных предприятий. Наша команда разрабатывает математический серви...
Меня зовут Аксёнов Вячеслав, я бэкенд разработчик и в последние годы пишу веб приложения на java/kotlin. Основная идея этой статьи описать основные технические задачи, которые ставятся перед современн...
Чтобы создать дружелюбный интерфейс, необходимо обеспечить однообразное поведение всех форм в приложении. Однообразное поведение часто достигается повторяющимся кодом, хоть и в неявной ...
При чём тут лебедь? Если Вас, как CEO или CTO IT-проекта (быстрорастущего или уже крупного), не покидают ощущения, что: Roadmap продукта буксует Разработка не успевает з...
В первой части доклада мы в общих чертах рассказали, как измеряем качество документации и эффективность ее разработки. Теперь погрузимся в детали подсчета метрик. Рассказывает Юрий Никулин, ру...