В этом разделе объедим несколько специальностей: мл инженер, дл инженер, дата сайнтист. Границы очень размыты, у каждой компании и команды свои представления о задачах и обязанностей. Чем крупнее компания, тем больше она может себе позволить дифференцировать задачи и под каждый класс задач выделять отдельную вакансию. В задачи все этого гипотетической компании может входить:
— разработать и развернуть мл/дл модель
— автоматизация и мониторинг моделей
— все задачи аналитика данных
— все задачи дата инженера
Эта область сейчас очень популярна, большая конкуренция. Если у вас нет в резюме топового факультета, то нужно что-то предоставить взамен: опыт работы, научные статьи или все в совокупности. Поэтому немало ребят начинают свой путь с аналитики данных, ибо она нередко входит в задачи мл специалиста и порог входа там ниже, а затем горизонтально перерастают в мл.
Каждый раздел бездонная бочка, поэтому советую осваивать материалы параллельно. Они дадут вам фундамент, с которым смело можно ходить по собесам. Также смотрим всякие конференции по ML, читаем популярные статьи, узнаем популярные вопросы на собесах. Обычно спрашивают баяны из общего информационного поля, потому держим ухо востро!
Пет проекты в первую очередь нужны как элемент вашего образования, чтобы отработать теорию на чем-то более реальном, чем задачи c leetcode. Не нужно изобретать велосипед или новый FaceBook. Просто октрываем GitHub и копипастим самые популярные проекты, может быть как-то их адаптируя. Ниже привожу самые популярные пет проекты.
1. Кредитный скоринг Стоит ли давать кредит— довольно популярная задача и отличный выбор для новчиков, чтобы самостоятельно проделать все этапы. Сначала берем любой датасет на kaggle по запросу Credit Scoring. Проводим EDA, генерируем гипотезы, фичи, готовим данные для модели и делаем бейзлайн: логистическая регрессия. Затем уже можно попробовать случайный лес, градиентный бустинг, KNN или еще что по вкусу— сравниваем метрики. И на последок не забываем проанализировать результаты и культурно презентовать. Можно провести АВ тест на смой первой модели. Все варианты решения и реализации можно найти в интернетах: GitHub, Хабр. Очень полезным будет посмотреть всякие выступления на конференциях по этой теме для вдохновения, да и это очень поможет на мл кейсах.
2. Наивный Байесовский классификатор (НБК) Для конкретики будем классифицировать письма на спам. Опять же обработаем данные: удаляем числа, знаки препинания, стоп-слова, стемминги, лемматизацию. Объединяем все методы предварительной обработки и создаём словарь слов и счётчик каждого слова в наборе данных для обучения:
1. Вычисляем вероятность для каждого слова в тексте и отфильтровываем слова со значением вероятности меньше порогового. Такие слова будут нерелевантными.
2. Для каждого слова в словаре создаём вероятность, что это слово окажется в спаме. Определяем условную вероятность для использования её в НБК.
3. Вычисляем прогнозируемый результат с помощью условных вероятностей. НБК реализовать не сложно. Куда интересней погрузиться во всю теорию, которая за этим стоит, в вероятностные модели. К тому же, кейс фильтрации спама и подобного часто встречается на собесах.
3. MLOps Можно наладить какой-то минимальный прод для проектов: например телеграм бот или FastAPI. Можно еще автоматизировать пайплайн с помощь AirFlow и попробовать запустить инфраструктуру не только локально, но и облаке. Конечно нужно будет поизучать Docker, Cuber, Hadoop, Spark, HDFS, Kafka.
4. Ранжирование и матчинг Для начала лучше пробежаться глазами по соответствующим статьям Яндекса и посмотреть, что пишут в интернетах. Можно выделить три подхода к задаче: поточечный, попарный, списочный. Советую начать с первого как самого простого. Для конкретики будем предсказать оценку релевантности для запросов тестового датасета. Здесь можно кстати поучиться парсить web-страниц и собирать сырые данные, размечать их с помощью какого-нибудь Яндекс-Толока. Делаем регрессию, а затем Random Forest Regressor, XGBoost, lightGBM, CatBoost. Совсем продвинутые могут попробовать языковые модели в духе FastText, Word2Vec, DSSM и более сложные: BERT, можно даже попробовать архитектуру трансформеров.
5. Рекомендашки Очень популярный кейс на собесах. Для начала лучше пробежаться глазами по соответствующим статьям Яндекс и посмотреть, что пишут в интернетах. Затем начинаем реализовывать самое простое как бейзлайн, например, content-based рекомендации, KNN. Дальше можно попробовать факторизации матрицы рейтингов по svd разложению или по более эффективной als архитектуре и функции ошибок bpr. Затем можно попробовать W2V подход, чтобы использовать последовательность взаимодействий пользователя для построения рекомендации следующего предмета. Для знатоков DL можно попробовать DSSM, SasRec/Bert4Rec, MultVAE, Merlin или графовые нейронки: GCN-подобные архитектуры. Также стоит попробовать обучение с подкреплением: многоруких бандитов. Ну и конечно рекомендательные системы можно попробовать рассмотреть как задачу ранжирования.
Здесь собраны тестовые задания на позицию Data Scientist, ML и тому подобное. Сборник постоянно обновляется, если у вас есть какие-то тестовые задания (на аналитика, мл, разработчика, любую позицию), прошу прислать их мне в лс тг: @vice22821, готов к обмену! Не забудьте указать компанию, позицию и прикрепить данные, если есть. Все ссылки ведут на телеграм.
Эти тестовые задания мы активно разбираем на нашем курсе по ML.
По этой ссылке в тг собраны собеседования и прочие полезные материалы по ML. Если у вас есть чем подобным поделиться пишите в тг @vice22821, в долгу не останемся!