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

1. Организация - ключ к успеху

Я проходил собеседование в Google (и DeepMind), Uber, Facebook, Amazon на должности, которые относятся к категории «Data Scientist», и это типичная тема построения интервью, которую я наблюдал:

  1. Программная инженерия
  2. Прикладная статистика
  3. Машинное обучение
  4. Обработка, обработка и визуализация данных

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

Рекомендую использовать Notion для организации подготовки к работе. Он чрезвычайно универсален и позволяет использовать принципы интервального повторения и активного отзыва для изучения и развертывания ключевых тем, которые снова и снова возникают на собеседовании со специалистом по данным. У Али Абдала есть отличное руководство по ведению заметок с помощью Notion, чтобы максимально расширить свой учебный потенциал во время собеседования.

Раньше я просматривал свои заметки о Notion снова и снова, но особенно прямо перед собеседованием. Это обеспечило загрузку ключевых тем и определений в мою рабочую память, и я не тратил драгоценное время на «ммммммм», задавая какой-нибудь вопрос.

2. Программная инженерия

Не все роли специалистов по анализу данных будут задавать вам вопросы о временной сложности алгоритма, но все эти роли предполагают, что вы будете писать код. Наука о данных - это не одна работа, а набор вакансий, которые привлекают таланты из самых разных отраслей, включая мир разработки программного обеспечения. Таким образом, вы соревнуетесь с парнями, которые разбираются в тонкостях написания эффективного кода, и я бы рекомендовал проводить как минимум 1-2 часа в день перед собеседованием, практикуя следующие концепции:

  1. Массивы
  2. Хеш-таблицы
  3. Связанные списки
  4. Алгоритмы на основе двух указателей
  5. Строковые алгоритмы (интервьюерам это нравится)
  6. Бинарный поиск
  7. Алгоритмы разделяй и властвуй
  8. Алгоритмы сортировки
  9. Динамическое программирование
  10. Рекурсия

НЕ ИЗУЧАЙТЕ АЛГОРИТМЫ НА СЕРДЦЕ. Этот подход бесполезен, потому что интервьюер может спросить вас о любом варианте алгоритма, и вы потеряетесь. Вместо этого изучите стратегию, лежащую в основе работы каждого алгоритма. Узнайте, что такое вычислительная и пространственная сложность, и узнайте, почему они так важны для создания эффективного кода.

LeetCode был моим лучшим другом во время подготовки к собеседованию и, на мой взгляд, стоит 35 долларов в месяц. У ваших интервьюеров есть только определенное количество вопросов по алгоритму для выборки, и этот веб-сайт охватывает множество концепций алгоритмов, включая компании, которые, вероятно, или, как известно, задавали эти вопросы в прошлом. Также есть отличное сообщество, которое подробно обсуждает каждую проблему и помогало мне в бесчисленное количество застрявших моментов, с которыми я сталкивался. У LeetCode есть облегченная версия с меньшим банком вопросов, если цена в 35 долларов слишком высока, как и HackerRank и geeksforgeeks, которые являются другими замечательными ресурсами.

Что вам следует сделать, так это попытаться ответить на каждый вопрос, даже если это метод грубой силы, на выполнение которого уходит много времени. Затем посмотрите на решение модели и попытайтесь выяснить, какая стратегия является оптимальной. Затем прочтите, какая стратегия является оптимальной, и попытайтесь понять, почему она является оптимальной. Задайте себе такие вопросы, как «почему у Quicksort средняя временная сложность O (n²)?», Почему два указателя и один цикл for имеют больше смысла, чем три цикла for?

3. Прикладная статистика

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

Во время собеседований я внимательно изучал следующие темы, и вы готовы поспорить, что у меня мало денег, что меня волновали по каждой теме:

  1. Описательная статистика (какому распределению соответствуют мои данные, каковы способы распределения, ожидание, дисперсия)
  2. Теория вероятностей (учитывая, что мои данные следуют биномиальному распределению, какова вероятность наблюдения 5 платящих клиентов в 10 событиях перехода по клику)
  3. Проверка гипотез (на основе любого вопроса по A / B-тестированию, T-тестам, анове, критериям хи-квадрат и т. Д.).
  4. Регрессия (является ли связь между моими переменными линейной, каковы потенциальные источники систематической ошибки, каковы предположения, лежащие в основе обычного решения методом наименьших квадратов)
  5. Байесовский вывод (какие преимущества / недостатки по сравнению с частотными методами)

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

  1. Введение в вероятность и статистику, открытый курс по всему перечисленному выше, включая вопросы и экзамен, который поможет вам проверить свои знания.
  2. Машинное обучение: байесовская и оптимизационная точки зрения Сергиоса Теодоридиса. Это больше текст по машинному обучению, чем конкретный учебник по прикладной статистике, но подходы линейной алгебры, изложенные здесь, действительно помогают осознать ключевые статистические концепции регрессии.

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

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

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

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

Метрики - Классификация

  1. Матрицы неточности, точность, прецизионность, отзыв, чувствительность
  2. Оценка F1
  3. ТПР, ТНР, ФПР, ФНР
  4. Ошибки типа I и типа II
  5. Кривые AUC-ROC

Метрики - Регрессия

  1. Общая сумма квадратов, объясненная сумма квадратов, остаточная сумма квадратов
  2. Коэффициент детерминации и его скорректированная форма
  3. АПК и БИК
  4. Преимущества и недостатки RMSE, MSE, MAE, MAPE

Компромисс смещения и отклонения, пере / недооборудование

  1. Алгоритм K ближайших соседей и выбор k в компромиссе смещения и дисперсии
  2. Случайные леса
  3. Асимптотическое свойство
  4. Проклятие размерности

Выбор модели

  1. Перекрестная проверка K-Fold
  2. Регуляризация L1 и L2
  3. Байесовская оптимизация

Отбор проб

  1. Работа с классовым дисбалансом при обучении классификационных моделей
  2. SMOTE для генерации псевдонаблюдений для недостаточно представленного класса
  3. Классовый дисбаланс по независимым переменным
  4. Методы отбора проб
  5. Источники смещения выборки
  6. Измерение ошибки выборки

Проверка гипотез

Это действительно относится к прикладной статистике, но я не могу не подчеркнуть важность изучения статистической мощности. Это чрезвычайно важно при A / B-тестировании.

Модели регрессии

Обычная линейная регрессия, ее допущения, вывод оценок и ограничения подробно описаны в источниках, цитируемых в разделе прикладной статистики. Вам следует ознакомиться с другими моделями регрессии:

  1. Глубокие нейронные сети для регрессии
  2. Случайная лесная регрессия
  3. Регрессия XGBoost
  4. Регрессия временных рядов (ARIMA / SARIMA)
  5. Байесовская линейная регрессия
  6. Регрессия гауссовского процесса

Алгоритмы кластеризации

  1. К-Средние
  2. Иерархическая кластеризация
  3. Модели смесей процесса Дирихле

Классификационные модели

  1. Логистическая регрессия (Самая важная, исправьте хорошо)
  2. Множественная регрессия
  3. Классификация XGBoost
  4. Машины опорных векторов

Это много, но большая часть контента будет тривиальной, если ваша прикладная статистика будет достаточно прочной. Я бы порекомендовал знать тонкости как минимум трех различных методов классификации / регрессии / кластеризации, потому что интервьюер всегда мог (и ранее) спрашивал: «Какие другие методы мы могли бы использовать, каковы некоторые преимущества / недостатки»? Это небольшая часть мировых знаний о машинном обучении, но если вы знаете эти важные примеры, собеседования пройдут много более плавно.

5. Обработка данных и визуализация

«Какие шаги необходимо предпринять для обработки и очистки данных перед применением алгоритмов машинного обучения»?

Нам предоставляется новый набор данных. Первое, что вам нужно доказать, это то, что вы можете выполнить исследовательский анализ данных (EDA). Прежде чем вы узнаете что-либо, поймите, что есть один путь к успеху в обработке данных: Pandas. Pandas IDE при правильном использовании является самым мощным инструментом в наборе инструментов для анализа данных. Лучший способ научиться использовать Pandas для обработки данных - это загрузить множество наборов данных и научиться выполнять следующий набор задач с такой же уверенностью, как при приготовлении утренней чашки кофе.

Одно из моих интервью включало загрузку набора данных, его очистку, визуализацию, выполнение выбора функций, построение и оценку модели за один час. Это была безумно сложная задача, и временами я чувствовал себя подавленным, но я удостоверился, что несколько недель практиковался в построении моделей конвейеров, прежде чем приступить к собеседованию, поэтому я знал, что смогу найти свой путь, если заблудусь.

Совет: Единственный способ добиться успеха во всем этом - это практика, а сообщество Kaggle обладает невероятным объемом знаний по освоению EDA и построению конвейеров моделей. Я бы проверил некоторые из лучших блокнотов по некоторым проектам. Загрузите несколько примеров наборов данных и создайте свои собственные записные книжки, познакомьтесь с синтаксисом Pandas.

Организация данных

В жизни есть три верных вещи: смерть, налоги и получение просьбы объединить наборы данных и выполнить задачи группировать и применить к указанным объединенным наборам данных. Pandas НЕВЕРОЯТНО универсален в этом, поэтому, пожалуйста, практикуйтесь на практике.

Профилирование данных

Это включает в себя понимание «мета» характеристик набора данных, таких как форма и описание числовых, категориальных и временных характеристик в данных. Вы всегда должны стремиться ответить на ряд вопросов, таких как «сколько у меня наблюдений», «как выглядит распределение каждой функции», «что означают эти функции». Такой вид профилирования на раннем этапе может помочь вам с самого начала отказаться от нерелевантных функций, таких как категориальные функции с тысячами уровней (имена, уникальные идентификаторы), и означать, что в дальнейшем для вас и вашего компьютера будет меньше работы (работайте с умом, не усердно, или как то так проснулся).

Визуализация данных

Здесь вы спрашиваете себя: Как вообще выглядит распределение моих функций?. Небольшой совет: если вы не узнали о коробчатых диаграммах в части прикладной статистики учебного пособия, то здесь, я подчеркиваю, вы узнаете о них, потому что вам нужно научиться определять выбросы. визуально, и мы сможем обсудить, как с ними бороться позже. Гистограммы и графики оценки плотности ядра являются чрезвычайно полезными инструментами при просмотре свойств распределений каждой функции.

Затем мы можем спросить, как выглядит взаимосвязь между моими функциями, и в этом случае у Python есть пакет под названием seaborn, содержащий очень изящные инструменты, такие как pairplot и визуально удовлетворяющая тепловая карта для графиков корреляции.

Обработка нулевых значений, синтаксических ошибок и повторяющихся строк / столбцов

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

Синтаксические ошибки обычно возникают, когда наш набор данных содержит информацию, введенную вручную, например, через форму. Это может привести нас к ошибочному заключению, что у категориальной функции намного больше уровней, чем есть на самом деле, потому что Hot, hOt, hot / n считаются уникальными уровнями. Ознакомьтесь с этим учебником по работе с грязными текстовыми данными.

Наконец, повторяющиеся столбцы никому не нужны, а наличие повторяющихся строк может привести к смещению чрезмерного представления, так что с ними стоит разобраться на раннем этапе.

Стандартизация или нормализация

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

Здесь есть через что пройти, но, честно говоря, мне помог не столько менталитет «запомнить все», сколько уверенность, которую я мог вселить в обучение. Должно быть, я провалил так много собеседований, прежде чем формула «щелкнула», и я понял, что все эти вещи не являются эзотерическими концепциями, которые могут освоить только избранные, это просто инструменты, которые вы используете для создания невероятных моделей и получения понимания из данных. .

Удачи вам в поисках работы, ребята, если вам вообще нужна помощь, дайте мне знать, и я отвечу на электронные письма / вопросы, когда смогу.