Обложка статьи «10 вопросов на позицию специалиста по Data Science»

10 вопросов на позицию специалиста по Data Science

Тарас Баранюк

Тарас Баранюк

Senior Data Scientist в Bidease

Машинное обучение и наука о данных рассматриваются как основная движущая сила следующей промышленной революции, которая происходит сегодня в мире. Что, в свою очередь, выводит позицию  DS/ML-специалистов в топ по востребованности.  Более того, даже джуниоры востребованы как никогда.

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

Чтобы помочь вам понять как, зачастую, могут выглядеть вопросы на собеседованиях на junior/middle позиции, я подготовил по 5 вопросов из двух обязательных для этой позиции областей знаний — теории вероятности и машинного обучения. Если вы без подготовки сможете ответить хотя бы на половину из них, то можно смело начинать ходить на собеседования.

5 вопросов по теории вероятности

1. Пусть A и B — события в одном и том же пространстве выборки, причем P (A) = 0,6 и P (B) = 0,7. Могут ли эти два события не пересекаться (быть несовместными)?

А) Да

Б) Нет

(Б) Эти два события не могут быть несовместными так как P(A)+P(B) > 1

2. Шестигранный кубик бросается 6 раз. Какова вероятность того, что все результаты будут уникальными?

A) 0.01543

Б) 0.01993

В) 0.23148

Г) 0.03333

(A) Чтобы все результаты были уникальными, у нас есть 6 вариантов для первого хода, 5 для второго хода, 4 для третьего хода и так далее.

3. У нас есть две монеты: A и Б. Для каждого броска монеты A вероятность выпадения орла равна 1/2, а для каждого броска монеты Б вероятность выпадения орла составляет 1/3. Все броски одной монеты независимы. Выбираем монету наугад и подбрасываем до выпадения решки. Вероятность выбора монеты A равна 1/4, а монеты Б — 3/4. Какое ожидается количество бросков, чтобы получить первые решки?

А) 2,75

Б) 3,35

В) 4,13

Г) 5,33

(A) Если выбрана монета A, то количество раз, когда монета будет подброшена для гарантированного орла, равно 2, аналогично для монеты Б это 3. Таким образом, количество раз будет:

Tosses=2*(1/4)[вероятность выбора A]+3*(3/4)[вероятности выбора Б] = 2.7

4. При перекрестном оплодотворении красного и белого цветов в 25% случаев появляются красные цветы. Теперь мы перекрестно оплодотворяем пять пар красных и белых цветков и производим пять потомков. Какова вероятность того, что в пятерке потомков нет красных цветочных растений?

A) 23.7%

Б) 37.2%

В) 22.5%

Г) 27.3%

(A) Вероятность того, что потомство будет красным, составляет 0,25, таким образом, вероятность того, что потомство не будет красным, составляет 0,75. Поскольку все пары независимы друг от друга, вероятность того, что все потомки не красные, будет (0,75)^ 5 = 0,237. Вы можете думать об этом как о биноме со всеми ошибками.

5. Какова примерно вероятность того, что в классе из 30 учеников день рождения двух учеников наступит в один и тот же день (определяется одним днем и месяцем) (при условии, что это не високосный год)?

A) 49%

Б) 52%

В) 70%

Г) 35%

(В) Общее количество возможных комбинаций, когда два человека не могут иметь один и тот же день рождения в классе из 30 человек, составляет 30 * (30-1) / 2 = 435.

Итак, в году 365 дней (при условии, что это не високосный год). Таким образом, вероятность того, что у людей будет другой день рождения, будет 364/365. Теперь возможно 870 комбинаций. Таким образом, вероятность того,что у двух людей один и тот же день рождения, равна (364/365) ^ 435 = 0,303. Следовательно, вероятность того, что у двух людей дни рождения будут в один и тот же день, будет 1 — 0,303 = 0,696

5 вопросов по машинному обучению

1. Вам предоставляется набор данных, состоящий из 1000 столбцов и 1 миллиона строк. Набор данных основан на задаче классификации. Ваш менеджер попросил вас уменьшить размер этих данных, чтобы можно было сократить время вычисления модели. У вашей машины нехватка памяти. Что бы ты сделал? (Вы можете делать практические  предположения.)

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

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

— Мы можем случайным образом выбрать набор данных. Это означает, что мы можем создать меньший набор данных, скажем, имеющий 1000 переменных и 300000 строк, и провести вычисления.

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

— Кроме того, мы можем использовать PCA и выбрать компоненты, которые могут объяснить максимальную дисперсию в наборе данных.

— Возможным вариантом является использование алгоритмов онлайн-обучения, таких как Vowpal Wabbit (доступный на Python).

— Также полезно построение линейной модели с использованием стохастического градиентного спуска.

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

2. Вам предоставляется набор данных. В наборе данных отсутствуют значения, которые разбросаны на 1 стандартное отклонение от медианы. Какой процент данных останется без изменений? Почему?

В этом вопросе достаточно подсказок, чтобы вы начали думать!

Поскольку данные распределены по медиане, предположим, что это нормальное распределение. Мы знаем, что при нормальном распределении ~ 68% данных находится в пределах 1 стандартного отклонения от среднего (или модового, медианного), что оставляет неизменными ~ 32% данных. Следовательно, пропущенные значения не повлияют на ~ 32% данных.

3. Вам предоставляется набор данных по выявлению рака. Вы построили модель классификации и достигли точности 96%. Почему вы не должны быть довольны своей моделью? Что вы можете сделать по этому поводу?

Если вы опытный дата-саентист, вы должны сделать вывод, что обнаружение рака приводит к несбалансированности данных. В несбалансированном наборе данных точность не должна использоваться в качестве меры, потому что 96% (как указано) могут правильно предсказывать только класс большинства, но наш интересующий класс — это класс меньшинства (4%), то есть люди, которые фактически получили факт диагностирования рака. Следовательно, чтобы оценить производительность модели, мы должны использовать:
— Sensitivity (True Positive Rate)
— Specificity (True Negative Rate)
— F-measure

Еще можно предпринять следующие шаги:
— Мы можем использовать undersampling/oversampling или SMOTE, чтобы сбалансировать данные.
— Мы можем изменить пороговое значение прогноза, выполнив калибровку вероятности и найдя оптимальный порог с помощью кривой AUC-ROC.
— Мы можем назначить вес классам, чтобы классы меньшинства получали больший вес.
— Мы также можем использовать методы обнаружения аномалий.

4. Вы узнали, что ваша модель страдает от low bias и high variance. Какой алгоритм вы должны использовать для решения этой проблемы? Почему?

Вариантов ответа множество, ниже приведен только пример.

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

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

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

5. Чем случайный лес отличается от алгоритма повышения градиента (GBM)?

Принципиальная разница в том, что для прогнозов случайный лес использует технику bagging-а. GBM использует методы boosting-а, чтобы делать прогнозы.

В методе bagging-а набор данных делится на n выборок с использованием рандомизированной выборки. Затем с использованием единого алгоритма обучения модель строится на всех образцах. Позже полученные прогнозы объединяются с помощью голосования или усреднения. Bagging производится параллельно. При boosting-e после первого раунда прогнозов алгоритм взвешивает неверно классифицированные прогнозы выше, чтобы их можно было исправить в следующем раунде. Этот последовательный процесс присвоения более высоких весов ошибочно классифицированным прогнозам продолжается до тех пор, пока не будет достигнут критерий остановки.

Случайный лес повышает точность модели за счет уменьшения дисперсии (в основном). Деревья не коррелированы для максимального уменьшения дисперсии. С другой стороны, GBM повышает точность, уменьшая как смещение, так и дисперсию модели.