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

Что это?ПодготовкаПет проектыТестовые заданияСобеседование

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

— разработать и развернуть мл/дл модель

— автоматизация и мониторинг моделей

— все задачи аналитика данных

— все задачи дата инженера

Эта область сейчас очень популярна, большая конкуренция. Если у вас нет в резюме топового факультета, то нужно что-то предоставить взамен: опыт работы, научные статьи или все в совокупности. Поэтому немало ребят начинают свой путь с аналитики данных, ибо она нередко входит в задачи мл специалиста и порог входа там ниже, а затем горизонтально перерастают в мл.
SQL:
Для начала советую ознакомиться с возможностями языка здесь. Для дальнейшего погружение разбираемся с этим тренажером : дальше 2го модуля можно не смотреть, также пропускаем про создания/удаление таблиц. Наконец единственное остается набивать руку в sql ex и читать документацию PostgreSQL. Сам синтаксис языка ботается за 2 дня.
Математика
Просто необходима для понимания алгоритмов машинного обучения. Начать стоит с повторения школьной программы здесь, изучения элементов линейной алгебры и мат анализа здесь. Для более глубокого погружения смотрим наши подборки #How_to_заботать в тг канале. На самом же собеседование любят спросить логические задачи и задачи по теор веру, как к такому готовиться писали в нашем тг канале здесь. На позицию выше стажера часто спрашивают AB тесты, как их освоить смотрим в нашем тг канале здесь.
Машинное обучение:
Начать можно с ютуб курса по введению в машинное обучение от ВШЭ, где базовые вещи объясняются просто. Там же есть и записи семинарских занятий, а ноутбуки с практикой и домашками находятся здесь. Однако на собеседованиях ML-алгоритмы спрашивают более подробно, поэтому обязательно углубляем полученные знания на ютубе здесь. Еще полезно иногда заглядывать сюда , если вам не хватило вышеперечисленных лекций. Для практики подойдет этот курс . В дополнении можно обратиться к более хардовой версии курса с ВШЭ здесь , там можно также найти лекции и много ноутбуков с семинарами и домашками. Еще можно посмотреть гитхаб ШАДа.
Python:
Новичкам советую этот туториал . После обязательно проходим этот курс. Он поможет вам понять фундаментальные принципы языка, что часто спрашивают на собесе, а также курс подготовит к написанию промышленного кода на самой работе. Параллельно не перестаем практиковаться на leetcode: решаем несложные алгоритмические задачи на python, а так же можно попрактиковаться с библиотекой для обработки данных pandas.
Git, Linux:
Являются важными инструментами ML-разработчика, поэтому изучаем вот эти материалы, а параллельно проходим любой курс в духе этого или этого. Также важно уметь обращаться с терминалом на базовом уровне, для этого смотрим данный курс. В последний курс можно сильно не углубляться, главное уделить время разделу bash.

Каждый раздел бездонная бочка, поэтому советую осваивать материалы параллельно. Они дадут вам фундамент, с которым смело можно ходить по собесам. Также смотрим всякие конференции по 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.
Accenture
AUTO1
BCG Gamma
Corpus
Diginetica
Doc+
GamblingPro
Gett
Haensel AMS
OLX-Hermes
Neuromation
NeuroTrade
One Factor
PeakData AG
PWC
Revo:Mokka
S7
Spectrm
the-SAAS-co
Uber
Wargaming
Zyfra (Цифра)
Альфабанк KZ
БКС
Ланит ритейл
МТС
СКБ Контур
СКБ Контур 2
 
По этой ссылке в тг собраны собеседования и прочие полезные материалы по ML. Если у вас есть чем подобным поделиться пишите в тг @vice22821, в долгу не останемся!