Однажды я получил оффер от Deliveroo, в этой компании я должен был стать Data Science Manager. Пока я готовился к тому, чтобы приступить к выполнению своих обязанностей, оффер отозвали. У меня на тот момент не было подушки безопасности на случай продолжительного отсутствия работы. Я поделюсь с вами всем, что в итоге помогло мне получить сразу два оффера на должность Data Scientist от Facebook. Надеюсь, это поможет кому-то из вас выбраться из той сложной ситуации, в которой я оказался несколько месяцев назад.
1. Организация — ключ ко всему
Я ходил на собеседования в Google (и DeepMind), Uber, Facebook, Amazon на все, что было так либо иначе связано с должностью Data Scientist. В большинстве случаев мне задавали вопросы из таких отраслей, как
- Разработка ПО
- Прикладная статистика
- Машинное обучение
- Обработка, управление и визуализация данных
Никто не ожидает от вас уровня «суперпрофи» для всех этих отраслей. Но вы должны понимать в них достаточно, чтобы убедить интервьюера в своей компетентности и праве занять предлагаемую должность. Насколько глубоко вы должны разбираться в теме — зависит от самой вакансии, но поскольку это очень конкурентная сфера, пригодятся любые знания.
Я рекомендую использовать Notion для организации подготовки к собеседованию. Этот инструмент универсален, плюс ко всему, он дает возможность применять такие техники, как интервальное повторение и активное вспоминание. Они помогают закрепить результаты обучения и раскрыть ключевые вопросы, которые снова и снова возникают на собеседовании на должность дата сайентиста. У Али Абдала (Ali Abdaal) есть отличное руководство по ведению заметок с помощью Notion. Помогает максимально раскрыть ваш потенциал во время собеседования.
Я постоянно повторял свои записи в Notion, особенно активно — как раз перед интервью. Это позволяло быть уверенным в своих силах и в том, что ключевые темы и термины находятся в моей «рабочей памяти», так что не не придется тратить драгоценное время, многозначительно говоря «нуууууу» после некоторых вопросов.
2. Разработка ПО
Далеко не всегда вам понадобится отвечать на вопросы о временной сложности алгоритма. Но на любой должности дата-саентиста нужно писать код. Data Science, как известно, это не одна профессия, а множество, эта отрасль привлекает таланты из самых разных направлений, включая разработку ПО. Соответственно, вам придется конкурировать с программистами, которые разбираются в нюансах написания эффективного кода. Я бы рекомендовал перед собеседованием потратить 1-2 часа в день, осваивая и/или укрепляя знания и умения в таких темах:
- Массивы.
- Хэш-таблицы.
- Связные списки.
- Метод двух указателей.
- Строковые алгоритмы (работодатели ОБОЖАЮТ эту тему).
- Бинарный поиск.
- Алгоритмы разделяй и властвуй.
- Алгоритмы сортировки.
- Динамическое программирование.
- Рекурсия.
Не изучайте алгоритмы чисто формально. Это бесполезно, поскольку интервьюер может задать вопрос о нюансах какого-то алгоритма, и вы потеряетесь. Вместо этого лучше освоить базу, лежащую в основе работы каждого алгоритма. Изучите, что такое вычислительная и пространственная сложности и поймите, почему все это важно для создания качественного кода.
У интервьюеров в самом деле найдется что порасспросить об алгоритмах, поэтому стоит изучить базовые элементы и чаще всего встречающиеся кейсы, чтобы потом было проще отвечать на собеседованиях.
Попробуйте ответить на каждый из возможных вопросов, даже если на это уйдет много времени. Затем посмотрите на модель решения и попытайтесь определить оптимальную стратегию. Затем посмотрите на ответы и попытайтесь понять, почему так? Задайте себе вопросы вроде «почему средняя временная сложность Quicksort O (n²)?» или «Почему два указателя и один цикл for имеют больше смысла, чем три цикла for»?
3. Прикладная статистика
В Data Science важную роль играет прикладная статистика. Насколько важную — будет зависеть от должности, на которую вы претендуете. Где на самом деле используется прикладная статистика? Везде, где необходимо систематизировать, интерпретировать и извлекать информацию из данных.
Во время собеседований я советую внимательно изучать вот такие темы:
- Описательная статистика (какому распределению соответствуют мои данные, каковы режимы распределения, математическое ожидание, дисперсия).
- Теория вероятностей (учитывая, что мои данные соответствуют биномиальному распределению, какова вероятность наблюдения 5 лидов в 10 событиях перехода по клику).
- Проверка гипотез (основа любого вопроса по A / B-тестированию, T-тестам, дисперсионному анализу, критериям хи-квадрат и т. Д.).
- Регрессия (является ли соотношение между переменными линейным, каковы потенциальные источники смещения и ошибок в данных).
- Байесовский вывод (какие преимущества / недостатки по сравнению с частотными методами).
Если вам кажется, что это огромный объем информации для изучения, то вам не кажется. Я был поражен, сколько всего могут спросить на интервью и сколько можно найти в сети для того, чтобы помочь себе в ходе подготовки. Справиться мне помогли два ресурса:
- Introduction to Probability and Statistics — бесплатный курс, где рассказывается обо всем, что было описано выше, включая вопросы и экзамен для самопроверки.
- Machine Learning: A Bayesian and Optimization Perspective. Это, по большей части, курс по машинному обучению, чем по прикладной статистике. Но подходы линейной алгебры, описанные здесь, помогают осознать нюансы концепции регрессионного анализа.
Лучше всего осваивать это не путем заучивания. Нужно решить столько задач, сколько сумеете. Glassdoor — отличный репозиторий для вопросов по прикладной статистике, которые обычно попадаются в интервью. Наиболее сложным собеседованием, которое было у меня, стало интервью в G-Research. Но мне очень понравилось готовиться к нему, и Glassdoor помог понять, насколько я продвинулся в освоении этой темы.
4. Машинное обучение
Теперь мы пришли к самому главному — машинному обучению. Но эта тема настолько обширна, что в ней можно просто потеряться.
Ниже — ресурсы, которые дадут очень прочную основу для начала работы с машинным обучением. Вот далеко не исчерпывающий набор тем, ранжированных по темам.
Метрики — классификация
- Матрицы неточностей, точность, прецезионность, recall, чувствительность
- F1-оценка
- TPR, TNR, FPR, FNR
- Ошибки I и II типов
- Кривые AUC-Roc
Метрики — регрессия
- Общая сумма квадратов, объясненная сумма квадратов, остаточная сумма квадратов
- Коэффициент детерминации и его скорректированная форма
- AIC и BIC
- Преимущества и недостатки RMSE, MSE, MAE, MAPE
Компромисс отклонение-дисперсия, Over/Under-Fitting
Выбор модели
Sampling
- Классовый дисбаланс при обучении классифицирующих моделей
- SMOTE
- Несбалансированность классов в независимых переменных
- Систематическая ошибка выборки
Проверка гипотезы
Эта тема больше относится к прикладной статистике, но она чрезвычайно важна, в частности, при A/B-тестировании.
Модели регрессии
О линейной регрессии доступно огромное количество информации. Вам следует ознакомиться с другими моделями регрессии:
- Глубокие нейронные сети для проблем регрессии
- Случайная лесная регрессия
- Регрессия XGBoost
- ARIMA / SARIMA
- Байесовская линейная регрессия
- Регрессия на основе гауссовского процесса
Алгоритмы кластеризации
Классификационные модели
- Логистическая регрессия (самая важная, хорошо исправьте)
- Множественная регрессия
- XGBoost
- Метод опорных векторов
Это много, но все выглядит не так страшно, если вы разбираетесь в прикладной статистике. Я бы порекомендовал изучить нюансы по крайней мере трех различных методов классификации / регрессии / кластеризации, потому что интервьюер всегда может спросить (и делает это): «Какие другие методы мы могли бы использовать, каковы некоторые преимущества / недостатки»? Это лишь малая толика знаний, но если вы знаете эти важные примеры, собеседования пройдут гораздо более гладко.
5. Обработка данных и визуализация
«Расскажите об этапах обработки и очистки данных перед применением алгоритмов машинного обучения».
Нам предоставляется определенный набор данных. Первое и основное — доказать, что вы можете выполнить EDA. Лучше всего использовать Pandas, это, при условии правильного использования — самый мощный инструмент в наборе инструментов для анализа данных. Лучший способ научиться использовать Pandas для обработки данных — загрузить много, много датасетов и работать с ними.
В одном из собеседований мне нужно было загрузить датасет, очистить его, визуализировать, выбрать, построить ьи оценить модель — и это все за один час. Это было настоящим сумасшествием, мы было очень тяжело. Но я как раз практиковался делать все это в течение нескольких недель, поэтому я знал, что делать, даже в том случае, если я потеряю нить.
Организация данных
В жизни есть три важных вещи: смерть, налоги и получение запроса на объединение наборов датасетов. Pandas практически идеально подходит для этой работы, поэтому, пожалуйста, практикуйтесь, практикуйтесь, практикуйтесь.
Профилирование данных
Эта задача включает понимание «мета» характеристик набора данных, таких как форма и описание числовых, категориальных и временных характеристик в данных. Вы всегда должны стремиться ответить на ряд вопросов, вроде «сколько у меня наблюдений», «как выглядит распределение каждой функции», «что означают эти функции». Этот вид профилирования на раннем этапе может помочь вам с самого начала отказаться от нерелевантных функций, таких как категориальные функции с тысячами уровней (имена, уникальные идентификаторы), и снизить объем работы для вас и вашего компьютера в дальнейшем (работать с умом, не усердно, или как то так проснулся).
Визуализация данных
Здесь вы спрашиваете себя: «Как вообще выглядит распределение моих функций?». Небольшой совет: если вы не узнали о коробчатых диаграммах в части прикладной статистики учебного пособия, то сейчас -самое время, потому что вам нужно научиться определять выбросы визуально. Гистограммы и графики оценки плотности ядра являются чрезвычайно полезными инструментами при просмотре свойств распределений каждой функции.
Затем мы можем спросить, «как выглядят отношения между моими функциями», и в этом случае у Python есть пакет под названием seaborn, содержащий классные и мощные инструменты, например, pairplot и неплохую тепловую карту для графиков корреляции.
Обработка нулевых значений, синтаксических ошибок и повторяющихся строк / столбцов
Пропущенные значения неизбежны, эта проблема возникает из-за множества различных факторов, каждый из которых по-своему влияет на смещение. Необходимо узнать, как лучше всего справляться с пропущенными значениями. Ознакомьтесь с этим руководством по способам обработки нулевых значений.
Синтаксические ошибки обычно возникают в том случае, если набор данных содержит информацию, введенную вручную, например, через форму. Это может привести нас к ошибочному заключению, что у категориальной функции намного больше уровней, чем на самом деле, потому что «Hot», «hOt», «hot / n» считаются уникальными уровнями. Ознакомьтесь с этим источником по обработке грязных текстовых данных.
Наконец, повторяющиеся столбцы никому не нужны, а наличие повторяющихся строк может привести к искажению представления, поэтому с ними стоит разобраться на раннем этапе.
Стандартизация или нормализация
В зависимости от набора данных, с которым вы работаете, и метода машинного обучения, который вы решите использовать, может быть полезно стандартизировать или нормализовать данные, чтобы различные масштабы различных переменных не оказывали негативного влияния на производительность вашей модели.
В целом, мне помогла не столько установка «запомнить все», сколько понимание того, насколько обучение мне помогло. Я провалил множество собеседований, прежде чем понял, что все, что названо выше — не эзотерические концепции, которые способны освоить лишь избранные. Это инструменты, которые дата-сайентисты используют для построения крутых моделей и получения важной информации из данных.
По теме:
- Интервью «Я боялась рутинных задач, но в Data Science всё иначе»;
- Практический онлайн-курс «Профессия Data Scientist».