∑ Пять вопросов в интервью по Data Science, на которые вы должны уметь отвечать

Чтобы начать карьеру в сфере науки о данных, требуются серьезные познания в математике и ИТ. Публикуем инсайдерское руководство по вопросам, которые задают кандидатам во время интервью при трудоустройстве в Amazon, Netflix и Google.

Инсайдерское руководство по вопросам о Data Science из интервью в Amazon/Netflix/Google.
Статья публикуется в переводе, автор оригинального текста Monika Sharma.

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

Вопрос 1: расскажите о функции потерь деревьев решений

Ответ: прежде, чем ответить на этот вопрос, важно указать, что Деревья Решений – это гибкий алгоритм машинного обучения, способный решать задачи не только классификации, но и регрессии. Поэтому и функции потерь для этих двух задач будут разными.

Функция потерь для задач классификации

Прежде чем мы сможем понять функцию потерь, сначала нужно познакомиться с такой важной концепцией, как критерий Джини (Gini impurity), поэтому давайте сначала объясним ее.

Gi=1k=1npi,k2

Здесь p – доля экземпляров класса k среди тренировочных экземпляров на i-м узле. Что это значит? Давайте разберемся на следующем примере. На рис. 1 показана простейшая визуализация дерева решений для классического примера классификации ирисов глубиной 2. Верхний уровень – это корневой узел. Концепция разделения тренировочного набора на набор решений алгоритмически довольно проста. Здесь, например, набор данных по ирисам разделен на два поднабора на основании единственного признака "ширина лепестков" на корневом узле. Если ширина лепестков меньше или равна 0.8, алгоритм идет на глубину 1, влево. В противном случае он идет на глубину 1, вправо. Там он делит поднабор дальше на основании дополнительного признака "ширины лепестков". Правый узел на глубине 1 описывает 100 экземпляров и применяется к 0 экземпляров Iris Setosa, 50 экземпляров Iris Versicolor и оставшиеся 50 экземпляров Iris Virginica.

Рис. 1. Дерево решений для ирисов

Таким образом, критерий Джини для этого узла равен 0.5:

Gk,tk=1(0100)2(50100)2(50100)2

Точно так же, для узла глубиной 1 слева критерий Джини равен нулю, потому что все тренировочные экземпляры принадлежат к одному классу. Этот узел считается "чистым".

Чтобы понять, что такое критерий Джини, давайте вернемся к основному вопросу. Деревья решений используют для обучения алгоритм Classification And Regression Tree (CART), основанный на простой концепции разделения набора данных на два поднабора, используя единственный признак (k) и порог (t). В наборе данных ирисов признаком была "ширина лепестков", а порогом – 0.8. Как алгоритм выбирает t и k? Он ищет пару (t,k), производящую "самые чистые" подмножества. Поэтому функция потерь, которую алгоритм пытается минимизировать, описывается следующим уравнением:

J(k,tk)=mleftmGleft+mrightmGright

Здесь Gleft и Gright – критерии Джини для левого и правого узлов, а m представляет экземпляры подмножеств.

Функция потерь для задач регрессии

Функция потерь для деревьев регрессии просто интуитивна. Мы используем сумму разности квадратов (RSS). Она изображена следующей формулой, в которой Y – истинное значение, а Y с крышкой – предсказанное.

RSS=k=1n(YY^)2

Вопрос 2: как коллинеарность влияет на ваши модели?

Ответ. Коллинеарность относится к ситуации, в которой две или более прогнозных переменных сильно зависят друг от друга. Рисунок 2 демонстрирует пример коллинеарных переменных. Переменная Variable 2 строго следует за Variable 1 с коэффициентом корреляции Пирсона, равным 1. Поэтому, очевидно, одна из этих переменных будет вести себя как "шум", если их скормить моделям машинного обучения.

Рис. 2. Пример коллинеарных переменных

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

Простой способ обнаружения коллинеарности – посмотреть на матрицу корреляции прогнозных переменных. Каждый элемент этой матрицы, достаточно большой по модулю, обозначает пару признаков с высокой коллинеарностью, и, следовательно, проблемы в данных. К сожалению, не все проблемы с коллинеарностью можно выявить анализом матрицы корреляции: возможно существование коллинеарности между тремя и более переменными, даже при отсутствии высокой корреляции между любой парой этих переменных. Такая ситуация называется мульти-коллинеарностью. Для таких случаев вместо анализа матрицы корреляции намного лучший метод – анализ коэффициента повышения дисперсии (Variance Inflation Factor, VIF). Коэффициент повышения дисперсии для каждой переменной рассчитывается по такой формуле:

VIF=11RXj|Xj2

Где R2 – регрессия переменной X по всем остальным прогнозным переменным. Если VIF близок к единице или больше нее, коллинеарность присутствует. Если обнаружилась проблема коллинеарности, есть два решения. Можно удалить избыточную переменную. Это можно сделать, не ухудшая сходимость регрессии. Другое решение – это объединить все коллинеарные переменные в единственную прогнозную переменную.

Вопрос 3: как бы вы объяснили работу глубоких нейронных сетей непрофессионалу?

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

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

Рис. 3. Пример визуализации узла нейронной сети

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

Глубокие нейронные сети содержат несколько внутренних слоев

Вопрос 4: какой должна быть 3-минутная презентация вашего тестового проекта по Data Science?

Ответ. Типовое интервью на позицию Data Scientist'а начинается с тестового задания в виде проекта, который вы должны сделать дома. Предоставляемое на это время может сильно варьироваться в зависимости от сложности задачи. Однажды мне дали два дня на решение задачи и подготовку отчета для руководства, но в другой раз на решение задачи дали две недели. Незачем и говорить, что это была намного более сложная задача, где набор данных содержал сильный дисбаланс классов. Поэтому 3-минутная презентация для "продажи" вашего решения позволяет вам продемонстрировать ваш уровень понимания предложенной задачи. Начните со своей интерпретации задачи, кратко опишите свой подход к ее решению, какие типы моделей машинного обучения вы использовали и почему. Заканчивайте презентацию хвастовством по поводу точности предсказания ваших моделей.

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

Вопрос 5: что значит "регуляризация модели", и как добиться регуляризации для линейной модели?

Ответ. Регуляризация – это термин для ограничения (сокращения переобучения) вашей модели машинного обучения. Хороший способ ограничения модели машинного обучения – иметь меньше степеней свободы. Имея меньше степеней свободы, модели сложнее переобучиться под тренировочные данные. Например, простой способ регуляризации полиномиальной модели – сократить количество полиномиальных степеней свободы. Однако для линейных моделей регуляризация обычно достигается ограничением весов модели. По сравнению с обычной линейной регрессией модели L1-регуляризация (Lasso Regression), L2-регуляризация или регуляризация Тихонова (Ridge Regression) и упругая сетевая регуляризация (Elastic Net) предлагают собственные способы ограничения весов. Для полноты картины давайте начнем с определения линейной регрессии:

y^=θ0+θ1x1+θ2x2+...θnxn
  • y с крышкой – предсказанное значение.
  • n – количество признаков.
  • xi – i-й признак.
  • Тэта – параметры модели, также известные как веса признаков.

Функция потерь Средняя Квадратичная Ошибка (Mean Square Error) определяется как:

MSE(X,hθ)=1mi=1m(θTx(i)y(i))2

где тэтаT – транспонированная тэта (вектор-строка вместо вектора-столбца).

Регуляризация Тихонова (Ridge Regression) – это вариант линейной регрессии с регуляризацией, то есть в функцию потерь дополнительно добавлен элемент регуляризации, что заставляет алгоритм обучения не только подстраиваться под тренировочные данные, но и делать веса настолько маленькими, насколько это возможно. Заметим, что элемент регуляризации должен добавляться к функции потерь только в процессе обучения. Когда модель уже обучена, мы хотим измерять ее качество работы без регуляризации.

J(θ)=MSE(θ)+α12i=1nθ2

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

L1-регуляризация (Lasso Regression) – другой вид регуляризованной линейной регрессии, который также добавляет в функцию потерь элемент регуляризации, но на основе L1-нормы вектора весов в отличие от L2-нормы.

J(θ)=MSE(θ)+αi=1n|θi|

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

Упругая сетевая регуляризация (Elastic Net) – нечто среднее между регуляризацией Тихонова и L1-регуляризацией. Элемент регуляризации – это просто смесь двух видов регуляризации в пропорции, определяемой параметром r. При r=0 это чистая регуляризация Тихонова, а при r=1 – L1-регуляризация.

J(θ)=MSE(θ)+rαi=1n|θi|+α1r2i=1nθ2

Желательно всегда иметь какую-нибудь регуляризацию, а использования чистой линейной регресии следует избегать. По умолчанию хороша регуляризация Тихонова, но если в некотором наборе данных значение имеет лишь небольшой процент признаков, тогда лучше использовать L1-регуляризацию. Упругая сетевая регуляризация в большинстве случаев лучше L1-регуляризации, потому что последняя может приводить к странным результатам, когда количество признаков больше количества тренировочных записей, или когда несколько признаков имеют сильную корреляцию друг с другом.

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

Удачного изучения!

  1. Hands-On Machine Learning with Scikit-Learn, Keras and Tensorflow.
  2. An Introduction to Statistical Learning.

Источники

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
08 октября 2017

13 ресурсов, чтобы выучить математику

Среди разработчиков часто возникают споры о том, необходимо ли изучать мате...
admin
14 июля 2017

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элеме...