Собеседование по Data Science: что нужно знать и где это изучить
Leon Chlon, специалист из Facebook, рассказывает, какие знания и подход нужны, чтобы успешно пройти собеседование по Data Science.
34К открытий35К показов
Рассказывает Leon Chlon
Я работал в консалтинговом агентстве, когда Deliveroo предложили мне позицию Data Science Manager. Но через пару месяцев отозвали её — сразу после того, как я ушёл из агентства. Не имея больших денежных запасов, быть безработным — непозволительная роскошь. Я хочу поделиться тем, как мне удалось пройти собеседование по Data Science и получить целых два предложения от Facebook. Надеюсь, что эта статья вам поможет. Особенно, если вы оказались в такой же непростой ситуации.
Ключ — в самоорганизации
Я проходил собеседования в Google (и DeepMind), Uber, Facebook, Amazon. Все на должность Data Scientist, и состояли они в основном из таких тем:
- Разработка программного обеспечения.
- Прикладная статистика.
- Машинное обучение.
- Обработка и визуализация данных.
От вас не требуется космический уровень во всех темах сразу. Тем не менее, нужно убедить интервьюеров, что вы справитесь со своими задачами. Требуемый уровень знаний зависит от конкретной вакансии, но в условиях растущей конкуренции чем больше знаешь — тем лучше, и любой новый опыт — на вес золота.
Чтобы хорошо подготовиться, записывайте всё, что изучаете. Я вёл конспекты в Notion. Каждый день просматривал материалы. Особенно важно так делать перед самым собеседованием, чтобы загрузить ключевую информацию в свою оперативную память. И это помогало — я отвечал на вопросы без лишнего мычания и траты времени.
Разработка программного обеспечения
Не на каждом собеседовании по Data Science вас будут допрашивать о сложности алгоритмов, но везде попросят написать код. Data Science — это ведь не какая-то одна задача. Это ансамбль из нескольких видов деятельности, включая разработку программ. И среди конкурентов — ребята, разбирающиеся в тонкостях написания оптимального кода. Поэтому рекомендую посвящать хотя бы 1–2 часа в день, чтобы разобраться в таких темах:
- массивы,
- хэш-таблицы,
- связные списки,
- алгоритмы, использующие метод двух указателей,
- алгоритмы работы со строками (интервьюеры обожают такие вопросы),
- бинарный поиск,
- алгоритмы, основанные на парадигме «разделяй и властвуй»,
- алгоритмы сортировки,
- динамическое программирование,
- рекурсия.
Не зубрите алгоритмы! Это не поможет, если вас спросят о каких-то вариациях. Вы, скорее всего, просто растеряетесь. Поэтому вникайте в суть их работы. Ещё советую почитать о пространственной и временной сложности алгоритмов, и о том, почему они важны для создания эффективного кода.
Мне сильно помог LeetCode. Он покрывает много алгоритмических принципов, в том числе те, что в прошлом светились на собеседованиях у компаний. А ещё комьюнити сайта помогает детально разобрать любой вопрос. Эти ребята кучу раз вытягивали меня из тупиков.
Прикладная статистика
Data Science косвенно затрагивает прикладную статистику, в основном в тех вакансиях, где нужно структурировать, делать и понимать выводы по данным.
Я изучал следующие темы, и можете не сомневаться — вас прокатят по каждой из них:
- описательная статистика (как распределены ваши данные, моды распределения, ожидание и дисперсия);
- теория вероятности («предполагая биномиальное распределение, какова вероятность увидеть 5 платёжеспособных клиентов за 10 кликов?»);
- проверка гипотез (формирование базиса для А/В тестирования, Т-тесты, дисперсионный анализ (ANOVA), критерий хи-квадрат);
- регрессии (линейность зависимости переменных, возможные источники отклонений, свойства наименьших квадратов);
- байесовский вывод (его преимущества и недостатки в сравнении с частотными методами).
Также мне помогли два бесценных ресурса:
- Introduction to Probability and Statistics — открытый курс, затрагивающий всё вышеописанное. Тест в конце указанной статьи поможет закрепить знания.
- Machine Learning: A Bayesian and Optimization Perspective — книга Сергиоса Теодоридиса. Здесь больше о машинном обучении, но принципы линейной алгебры очень помогают понять регрессию.
Машинное обучение
А теперь зверь тысячелетия — область настолько обширная, что можно запросто в ней потеряться. Материалы о прикладной статистике послужат хорошей основой для машинного обучения (которое, по сути, и является прикладной статистикой, только на языке линейной алгебры). Вот список статей на темы, которые из раза в раз всплывали на собеседованиях по Data Science.
Метрики классификации
- Матрицы ошибок для измерения точности, полноты и чувствительности модели.
- F1 оценка.
- Истинно-положительный, истинно-отрицательный, ложно-позитивный и ложно-отрицательный результаты (TPR, TNR, FTR, FNR).
- Ошибки первого и второго рода.
- Кривые AUC-ROC.
Метрики регрессии
- Общая сумма квадратов, объяснённая сумма квадратов и сумма квадратов отклонений.
- Коэффициент детерминации и его скорректированная форма.
- Информационные критерии Акаике (AIC) и Байеса (BIC).
- Преимущества и недостатки погрешностей RMSE, MSE, MAE и MAPE.
Дилемма смещения-дисперсии, переобучение/недообучение
- Алгоритм k-ближайших соседей и подбор значения k в дилемме смещения-дисперсии.
- Случайные леса.
- Асимптотические свойства оценок.
- Проклятие размерности.
Выбор статистической модели
Сэмплирование
- Решение проблемы дисбаланса классов при обучении моделей классификации.
- Генерация искусственных наблюдений миноритарного класса (SMOTE).
- Сэмплирование.
- Причины перекосов в распределении выборки.
- Ошибка выборки, её измерение.
Проверка гипотез
Хочу подчеркнуть важность знаний о статистической мощности. Очень нужная тема для A/B тестирования.
Регрессионные модели
Простая линейная регрессия, её свойства, ограничения и оценочные методы тоже хорошо описаны в главе о прикладной статистике. Вдобавок стоит знать о таких моделях машинного обучения:
- Глубокие регрессионные нейронные сети.
- Регрессия с помощью алгоритма XGBoost.
- Регрессия временных рядов (ARIMA/SARIMA).
- Байесовская линейная регрессия.
- Гауссовский процесс.
Модели кластеризации
Модели классификации
- Логистическая регрессия (одна из важнейших — тщательно изучите).
- Множественная регрессия.
- Классификация с помощью XGBoost.
- Метод опорных векторов.
Согласен, много материала. Но с хорошей базой по прикладной статистике освоить это будет намного легче. Советую хорошо знать по крайней мере по три метода классификации, регрессии и кластеризации. Всегда есть вероятность, что на собеседовании вас попросят решить одну и ту же задачу другими методами и рассказать о преимуществах и недостатках каждого.
Обработка и визуализация данных
Вам дают новый датасет. Что нужно сделать, прежде чем вы примените алгоритмы машинного обучения? Показать, что вы владеете разведочным анализом данных. Всё, что нужно — это pandas. При правильном использовании это лучший инструмент в руках специалиста по данным. Для практики советую скачать как можно больше датасетов и отрабатывать задачи по анализу.
На одном из моих собеседований по Data Science в эти задачи входил поиск датасета, его очистка, визуализация, отбор признаков, построение и оценка модели. Всё это нужно было сделать в течение одного часа. Было сложно, но тренировки на протяжение нескольких недель даром не прошли.
Организация данных
Невозможно избежать трёх вещей: смерти, налогов и задач по объединению, группированию и применению функций к датасетам. С такими задачами pandas тоже хорошо справляется.
Профайлинг данных
Здесь нужно прочувствовать особенности датасета, форму числовых значений и дат, описание признаков. Всегда нужно обращать внимание на размер выборки, распределение признаков и какие по ним можно сделать выводы. Благодаря такому профайлингу быстро отсекаются незначительные категории, и уменьшается объём работы для вас и вашего алгоритма в дальнейшем.
Визуализация данных
Тут нас интересует внешний вид распределения. Для этого пригодится библиотека seaborn. Если диаграмма размаха из прикладной статистики прошла мимо вас — самое время изучить её, поскольку вам нужно научиться видеть погрешности. Позже поговорим о том, что с ними делать. Гистограммы и графики ядерной оценки плотности тоже помогают оценить характеристики распределения, после чего мы можем определить взаимосвязи между ними.
Обработка null-значений, синтаксических ошибок, дубликатов столбцов и строк
От незаполненных полей в датасете никуда не деться. Каждое влияет на погрешность по-своему. Существует целая область, изучающая методы работы с null-полями. Однажды на собеседовании меня просили в деталях рассказать о каждом из них.
Синтаксические ошибки возникают, когда данные в датасет добавлялись вручную, например через форму. Из-за этого можно получить ненужные уровни категорий, как «Горячий», «ГоРяЧий» и «горячий/n» и т. д.
Напоследок о дубликатах. Повторяющиеся столбцы бесполезны, а вот повторение строк искажает баланс данных в сторону одного класса.
Стандартизация и нормализация
В зависимости от датасета и выбранных алгоритмов машинного обучения может пригодиться стандартизация и нормализация данных. Это нужно, чтобы разница в величине переменных не влияла на эффективность модели.
Больше всего уверенности в себе мне добавило не зубрение, а хорошее понимание материала. Все затронутые здесь темы — это не какая-то сверхнаука в сферическом вакууме, которую могут понять только избранные, а просто инструменты для интерпретации данных и создания крутых моделей. Чтобы понять это, мне пришлось провалить немало собеседований. Желаю удачи в вашем приключении!
34К открытий35К показов