Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр

Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр Аналитика

Техническое интервью: вступление

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

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

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

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

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

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

Вопросы для интервью с бизнес-аналитиками

  • Сколько вы занимались бизнесом? Каково было ваше участие?
  • Расскажите мне о времени, когда вы создали долгосрочные планы у предыдущего работодателя.
  • Как вы определяете, какие средства бизнес-аналитики (BI) использовать? С чем вы работали?
  • Если две компании объединяются, объясните, какие задачи вы бы выполнили для успешного слияния, и как вы будете выполнять эти задачи.
  • Объясните шаги, которые необходимо предпринять для создания прецедентов при работе с конкретными требованиями к документу.
  • Расскажите мне о времени, когда вам приходилось работать с трудными заинтересованными сторонами и как вы его обрабатывали.
  • Опишите три разных типа диаграмм, которые чаще всего используют бизнес-аналитики.
  • Определить и описать разницу между основным потоком, потоком исключений и альтернативным потоком в случаях использования.
  • Расскажите, как вы обычно подходите к проекту.
  • Как вы справлялись с заинтересованными сторонами, которые были трудными?
  • Можете ли вы определить диаграммы, которые используют бизнес-аналитики?
  • Почему, по-вашему, важны блок-схемы?
  • Где вы видите роль бизнес-аналитика в организации?
  • Какова ваша стратегия вызывания требований?

Как аналитику найти другого хорошего аналитика

Однажды, ничего не предвещало беды.

Как вдруг, мой начальник озадачил меня: «А вот нам на смежный проект нужен новый аналитик, давай ты будешь собеседовать кандидатов?»

Я, конечно, согласился.

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

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

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

В итоге, бесполезным оказалось всё связанное с технологиями и приложениями. Проект на который я искал человека был про бизнес-приложения для клиентов, так что проверять знание, например, SQL или JSON не было никакого резона, а научить рисовать картинки в Sparx можно и обезьяну за неделю. Знание же всяких UML и BPMN требовалось лишь в контексте понимания процесса работы, а не «как правильно рисовать кружочки и стрелочки».

Казалось бы, о чем спрашивать то тогда? Но в итоге образовался отличный план, через который прошли 17 соискателей.

План состоял из трех частей.

  • Общие вступительные вопросы.
    Какие требования бывают и какими свойствами обладают хорошие требования.
    Они нужны чтобы понять, а аналитик ли передо мной?
    Как выяснилось в процессе, за красивыми резюме скрывались и тестировщики и разработчики и даже люди не имеющие отношения к IT.
    Вдобавок, эти простые вопросы дали еще один неожиданный эффект. Некоторые соискатели начинали психовать, когда им, обладателям таких шикарных резюме, задают такие простые вопросы. Ну, с такими разговор короткий, психованным в аналитиках не место.
  • Вопросы о процессе разработки и роли аналитика в команде.
    Что должен делать аналитик, а что не должен. Какие у него отношения с девелоперами и QA, как он понимает методологии разработки в которых участовал и т.д. Практика показала, что далеко не все представляют себе весь цикл разработки приложения, свою роль в команде и зачем вообще бизнес заказывает софт у разработчиков.
  • Ситуационные вопросы.
    Здесь мы моделировали как реальные ситуации в работе аналитика, так и выдуманные мной, чтобы проследить за ходом мысли соискателя. Рассматривали обычные проблемы аналитика: конфликт приоритетов или требований между несколькими заказчиками, конфликт внутри команды, нечеткое подчинение, интервьюирование заказчика, конфликт бизнес-интересов и т.п.
    Самый полезный блок, т.к. проверял не только внимательность и сообразительность, но и способность уточнять неизвестные данные. В некоторых ситуациях я специально умалчивал некоторые вводные, однако только три(!) из семнадцати кандидатов хоть что-то уточняли у меня. Что, по моему мнению, печально.

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

Так что если вы с такой стороны еще не смотрели на найм аналитиков, посмотрите!

UPD: Привожу примеры задаваемых вопросов и ожидаемых ответов.

Из вступительных вопросов:

  • Какой, по вашему, главный инструмент аналитика?
    Самый первый вопрос. Я свято уверен что это голова. Но как оказалось, некоторые соискатели путают понятия «инструмент», «навык» и «компетенция»
  • Какие требования бывают?
    Здесь достаточно ответа что функциональные и нефункциональные. Что, нефункциональные можно разделить на бизнес-правила, ограничения и атрибуты качества. Что требования к отказоустойчивости — это атрибут качества, а требования к интеграции — это ограничения.
  • Какими свойствами обладают хорошие требования?
    Здесь ожидал услышать что-нибудь из этого списка: полные, однозначные, непротиворечивые, проверяемые и понимаемые. Можно еще, конечно, называть, но мне подойдет и так.

Из вопросов о роли аналитика в команде:

  • Кто оценивает трудоемкость задач?
    Команда разработки
  • Кто пишет тест план и тест кейсы ?
    QA. Несмотря на простоту ответа, некоторые соискатели удивили меня тут, сказав что все это делает аналитик. Для таких у меня был заготовлен вопрос: «Так что, по вашему QA — это такая бездумная обезьяна которая только и может что кнопки жать по готовым сценариям?» Но не смотря на подсказку, пара человек всё равно гордо ответила «Да!» на этот наводящий вопрос.
  • Кто показывает демо клиенту (в случае scrum команды)?
    Кто угодно из команды разработки, но не аналитик.

Разыгранные ситуации.

  • Конфликт разработчика и QA
    Вводная: Приходят к аналитику разработчик и QA и жалуются друг на друга. QA говорит что разработчик неправильно сделал, а разработчик говорит что это QA ничего не понимает.
    Ожидаемые действия: Надо выяснить кто как понял, в чем проблема и в случае косяка со стороны аналитика уточнить требование, если оно трактуется неоднозначно.
  • Конфликт приоритетов
    Вводная: Релиз жестко запланирован по дате, разработки осталось месяц, всё вроде хорошо, но тут прибегает заказчик с новой пачкой требований и говорит срочно добавить их в релиз. При этом очевидно, что и новые и старые требования за месяц не сделать.
    Ожидаемые действия: Выяснить что повлекло возникновение новых требований, проговорить потребности клиента, вдруг старые уже не актуальны, тогда их можно выкинуть. В случае если всё нужно, заставить клиента самому заново выставить приоритет и новым и старым и те что не влезают отложить на следующий релиз.
  • «Убойное» требование
    Вводная: На этапе оценки затрат разработчик говорит что это требование разрушит систему и чтобы его реализовать надо пару месяцев убить только на изменение архитектуры. А заказчик говорит: «Я, конечно, всё понимаю, но мне это нужно, по этому сделайте, вы же разработчики!»
    Ожидаемые действия: Часто то что хочет заказчик — это лишь его личное видение ситуации и решения. За любым требованием лежит некая бизнес-потребность, задача её выявить и предложить более оптимальное решение, более дешевое в плане разработки.
  • Интервью в слепую
    Вводная: Аналитика отправляют опросить нового заказчика, однако о нем ничего не известно, даже не ясно еще, что за приложение ему нужно.
    Какие главные вопросы задаст аналитик заказчику.
    Следующие вопросы и их вариации я считаю правильными в такой ситуации:
    Чем занимается заказчик и его сотрудники?
    Зачем им понадобилось ПО? В чем вообще проблема?
    Что он ожидает от этого ПО? Какой результат?
    Как заказчик поймет что результат достигнут?
    Какие ограничения есть у заказчика?
  • Два директора
    Вводная: Команда аналитика делает ПО для международной корпорации с офисами в Лондоне и Нью-Йорке. ПО будет использоваться клиентами этой корпорации. Директора этих офисов являются конечными заказчиками и для успешного релиза они оба должны подписаться. Однако, на одной из экранных форм один директор хочет чтобы была синяя кнопка и делала одно, а другой хочет чтобы была зеленая кнопка и делала совсем другое. Нужно найти аргументы, чтобы оба директора согласились на какое-то одно решение.
    Ожидаемые действия: Через цепочку рассуждений прийти к выводу что раз директора управляют бизнесом, то и аргументы должны быть связаны с бизнесом компаний, а не «давайте сделаем две разные страницы» или «будем определять клиента по географическому положению». Идеальный вариант — соотношение выгоды, которую получит компания от разных функционалов с расходами на разработку и обслуживание этих функционалов.

Матрица компетенций – главная «шпаргалка» интервьюера

После того, как кандидат рассказал о своем опыте, интервьюер переходит к вопросам. И здесь у него есть три основных «шпаргалки», которые готовятся заранее и помогают эффективно проводить собеседование: 

  1. Матрица компетенций, востребованных в компании.
  2. Задачи (реальные или теоретические) на основе матрицы, позволяющие определить, насколько кандидат владеет каждой компетенцией.
  3. Глобальная задача, которая является своего рода «дорожной картой» всего интервью. Такой глобальной задачей может быть, например, реальный кейс внедрения в компании новой CRM-системы, на примере которого вы можете затронуть те компетенции кандидата, которые наиболее вас интересуют. 

В матрице компетенций указываются навыки и уровень владения ими для каждого грейда сотрудников – от Junior до Lead. «Три кита» матрицы компетенций – это hard skills (профессиональные знания и навыки) и soft skills (личные качества, например, умение презентовать материалы или конструктивно доводить до собеседника свою точку зрения), а также владение конкретными инструментами и знание предметной области (tools and domain).

Применительно к профессии аналитика наиболее важными группами навыков из числа hard skills, образующими разделы в матрице компетенций Ak Bars Digital, являются: 

Дополнительный анализ:  Андрей Грозин об экономическом росте Узбекистана и шансах РФ

Опыт кандидата

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

Советы кандидату: 

  1. Чем интереснее был ваш опыт, тем подробнее надо на нем остановиться. О первых шагах в профессии или малоинтересном этапе без особых достижений и вызовов достаточно упомянуть одной фразой. Более развернуто расскажите о том, чем можете гордиться.  
  2. NDA – не повод отмалчиваться. Если вы не можете рассказать об интересном опыте из-за соглашения о неразглашении коммерческой тайны, абстрагируйтесь. Обозначьте предметную область, в которой работали, регионы внедрения продукта и т.п., без указания конкретных названий (задача интервьюера, если кандидат запнулся из-за проблем с NDA – подсказать ему такую возможность). 
  3. Говорите только о личном опыте. Какой бы интересной и важной ни была командная работа, нанимателя интересует не команда, а конкретный человек, претендующий на вакансию. 
  4. Расскажите о методологиях, нотациях, инструментах, которые использовали в работе. Это поможет понять, с чем вы сталкивались и насколько быстро сможете погрузиться в работу в новой компании. 
  5. Расскажите, с какими сложностями пришлось столкнуться. Тем самым вы продемонстрируете свою планку, покажете, что лично для вас является вызовом и достижением (если кандидат не затронет эту тему сам, интервьюерам стоит задать ему этот вопрос). 

Решение

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

— длина ребра квадратной сетки. Тогда общее число возможных маршрутов:


Вывод формулы описан

. А вот как узнать число маршрутов с пересечением реки для каждого

? Озадачившись этим вопросом, я решил взять несколько длин сетки поменьше, нарисовать поля и вручную подсчитать, сколько маршрутов пересекают реку, надеясь проследить зависимость (Очень рекомендую вам также сейчас взять листочек и ручку и поэкспериментировать с рисованием маленьких сеток и путей).

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

Как только я сделал рисунок, понял, что намного проще будет отследить маршруты, реку не пересекающие, а именно маршруты ниже реки. Затем можно будет умножить их число на 2, учтя таким образом и зеркальные маршруты выше реки. Так как мы знаем вдобавок и общее число маршрутов, найдём и количество пересекающих реку. Но вернёмся к главной задаче — нам нужна зависимость между $n$ и числом путей с переходом реки.На рисунке выше для случая 3×3 я отметил синим некоторые «сухопутные» маршруты, доступные путнику: отмеченные маршруты проходят по рёбрам клеток с горизонтальной координатой 2, на левые и верхние рёбра клеток раньше путник не заступает. Таких маршрутов 3, т. е. $n$. Теперь разберёмся с маршрутами, что проходят через клетку столбца 1.

Новые пути я отметил красным. Итак, понятно, что если путник свернёт на левое и затем верхнее ребро клетки (1, 0), ему далее будут доступны лишь 2 из трёх путей через клетки с горизонтальной координатой 2, ведь двигаться можно лишь вверх и вправо — третий же путь лежит ниже.

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

Крайний правый столбец вновь даёт нам

маршрутов. Верхнее ребро клетки (2, 0) добавит нам

маршрут. Верхнее ребро клетки (2, 1) добавит

маршрута. Верхнее ребро клетки (1, 0) добавит столько маршрутов, сколько добавили клетки (2, 0) и (2, 1) вместе. При желании можно нарисовать сетку побольше и продолжить считать маршруты тем же алгоритмом. Наша задача — подсчитать маршруты для сетки 100×100. Для этого можно написать программку, которая примет на вход

и построит матрицу

, начиная со столбца

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

Код
import numpy as np
import math

def routes_total(n): # Общее число путей
    return math.factorial(2*n) / (math.factorial(n)**2)

def fill_matrix(n): # Число путей, не пересекающих реку с одной стороны реки
    net = np.zeros((n, n)) 
    net[0, 0] = n # Крайний столбец даёт n путей
    for i in range(n-2):
        net[1, i] = n - i - 1 

    for i in range(2, n):
        for j in range(n - i - 1): 
            net[i, j] = 0
            for g in range(j, n - i   1):
                net[i, j]  = net[i - 1, g]
    
    # Сумму полученных чисел умножаем на 2, чтобы учесть другую сторону реки
    return (2 * sum(sum(net))) 

# Хотим долю пересекающих реку путей - вычитаем результат из 1
print(1  - fill_matrix(100) / routes_total(100))

Условие задачи


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

Однажды королю Государства стало известно, что в его границы собирается вторгнуться Народ Точек Разрыва. Так как Государство не было готово к обороне, король принял нелёгкое решение — разделить Государство на много маленьких, каждое из которых будет самостоятельно защищать свои границы.

Было решено, что два города можно и нужно оставить в одном государстве, если из одного города можно будет добраться во второй, даже если Народ Точек Разрыва захватит одну дорогу между двумя любыми городами Государства Линейного Распределения. Во всех остальных случаях — города должны оказаться в разных государствах.

На каждой дороге, которая будет пересекать границу каких-либо двух новых государств, необходимо поставить бастион. Это нужно на случай, если одно из этих государств будет захвачено Народом Точек Разрыва. Тогда второе сможет продолжать оборонять свои границы. Иными словами, бастион будет поставлен на дороге, которая соединяет города из разных государств.

Король попросил вас дать ему список дорог, на которых необходимо поставить бастионы.

Формат ввода и вывода в программе
Формат ввода

Первая строка входного файла содержит два натуральных числа

$n$

и

$m$

— количества городов и дорог в Государстве Линейного Распределения соответственно.

$(1 leq n leq 20000, 1 leq m leq 200000)$

. Следующие m строк содержат описание дорог по одной строке. Дорога номер i описывается двумя натуральными числами

$b_i, e_i$

— номерами городов, которые эта дорога соединяет

$(1 leq b_i, e_i leq n)$

Формат вывода

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

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

Часть 1. подача заявки и я.контест

После прохождения десятка курсов на степике, я понял, что хочется применить этот опыт где-то и решил подать заявку на стажировку в Яндекс на позицию стажёра по направлению “Аналитик данных”. Зашёл на сайт, заполнил анкету, через час получил ссылку на тестовое задание в Яндекс Контест. Увидел, что даётся 6 часов на решение задач и принял решение выделить утро субботы на прохождение теста.

UPD: условия задач удалены по просьбе

Тест оказался не очень сложным, было 6 задач. 2 из них на математическую статистику (задачи A и B), 2 стандартные задачи на Питоне (C и D), 1 задача на базовые знание библиотеки Pandas (E) и задача на логику и аналитическое мышление.С последними двумя задачами я справился за полчаса, с первой задачей по матстату ещё минут за 10, на вторую задачу было потрачено 20 минут, и осталось целых 5 часов на 2 задачи на питоне.

На каждую я потратил минут по 30, но в одной задаче не прошёл несколько тестов (скорее всего, условие мною было проинтерпретировано неверно), а в другой выдавал memory limit. В итоге, оптимизировать код и дорешать задачи до конца не вышло. Ещё раз проверил 4 прошлые задачи и отправил решения.

Часть 2. первое интервью

Интересный момент, что получилось провести интервью только через неделю, тк то у меня не получалось, то интервьюера. Мы созвонились в зуме, он представился, сказал, что возглавляет отдел аналитики Яндекс.Маркета, начал общение сразу на “ты”, позднее мне рекрутер сказал, что в Яндексе так принято.

Интервьюер, назовём его Сергей, рассказал как будет устроено интервью: 10 минут я должен рассказать о себе, потом ТЗ (задача на питоне) и задачи на теорвер.Я вкратце рассказал о себе, своем проекте про алгоритмы кластеризации, которым я занимаюсь в институте.

Он позадавал пару стандартных вопросов из разряда: “Почему Яндекс?”, “Какие качества мне стоит развивать?”, “Что было моим успехом?” .Далее была ТЗ: вывести список уникальных слов, считываемых из файла. Я код написал, в целом, ему важна была идея и знания синтаксиса. Всё подводные камни я разгадал у этой задачи, но не сразу. Вот сами камни:

  1. Если файл пустой

  2. Английский и русский язык (что будет?)

  3. Отделение знаков препинания

  4. Первые слова в предложении

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

  1. Бросаем монетку 10 раз. Какова вероятность, что выпадет 10 орлов? [(1/2)^10] 

  2. Бросаем монетку 10 раз. Какова вероятность, что выпадет 9 орлов? [10*(1/2)^10]

  3. В ящике есть 4 вида носков. Носков бесконечно много. Сколько нужно изьятий, чтобы получить пару? [5]

Далее, задача на математику: “У Аркадия много жён. У него есть коллекция кактусов, которые он решил раздать всем жёнам. Первой жёне отдал 1000 кактусов и 10% от остатка. Второй жене 2000 кактусов и 10% от остатка. И так далее… Каждая жена получила поровну.

Сколько жён у Аркадия?Ход решения я тоже рассказал. Чтобы не ждать, пока я посчитаю, он мне сказал, сколько всего было кактусов и я дал ответ. [81000 всего кактусов, 9000 каждой жене]. Последней была задачка на проверку аналитических способностей:20 детям в детском садике задали вопрос: живут ли их родители вместе?

На что 2 ребёнка ответили, что не живут. На следующий день в местной газете выходит статья с заголовком: “10% семей в нашем городе в разводе”. Почему данное утверждение неверно? Всего есть 6 ключевых пунктов, до 2х последних я, к сожалению, не додумался:

  1. Дети могут быть из одной семьи

  2. Разный возраст детей, и, соответственно, разные группы, то-то более осознанный, кто-то ещё не понимает вопроса.

  3. Месторасположение садика, может выборка была только в благополучном/неблагополучном районе.

  4. У ребёнка может быть один родитель или у ребёнка может быть мачеха/отчим, отсюда неверные результаты.

  5. Дети врут.

  6. Есть семьи, где дети не ходят в садик.

После этой задачи Сергей рассказал мне как я в целом отвечал и рассказал, чем занимается отдел аналитики.У них есть 2 типа задач:

  1. Визуализация данных, представление менеджерам отчётов, в частности, работа в Tableau, то есть создание дашбордов.

  2. Прогонка данных из одного сервиса в другой

Я позадавал вопросы и Сергей сказал, что назначит через рекрутера ещё одно интервью, где мне подробнее расскажут про задачи.

После интервью создалось приятное впечатление о интервьюере и о возможных задачах и в целом от общения.

🎲 40 вопросов по статистике с собеседований на должность data scientist

Каждый Data Scientist знает, что фундаментальные знания статистики необходимы для успеха в его профессии. Поэтому мы прошерстили Интернет и нашли сорок вопросов по статистике, задаваемых аналитикам данных на собеседовании.

1. Как оценить статистическую значимость анализа?

Для оценки статистической значимости нужно провести проверку гипотезы. Сначала определяют нулевую и альтернативную гипотезы. Затем рассчитывают p – вероятность получения наблюдаемых результатов, если нулевая гипотеза верна. Наконец, устанавливают уровень значимостиalpha. Если p < alpha, нулевая гипотеза отвергается – иными словами, анализ является статистически значимым.

2. Приведите три примера распределений с длинным хвостом. Почему они важны в задачах классификации и регрессии?

Пример распределения с «длинным хвостом»
Пример распределения с «длинным хвостом»

Три практических примера: степенной закон, закон Парето и продажи продуктов (например, продукты-бестселлеры против обычных).

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

3. Что такое центральная предельная теорема, и почему она важна?

Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр

Центральная предельная теорема (ЦПТ) говорит о том, что сумма достаточно большого количества слабо зависимых случайных величин с примерно одинаковыми масштабами имеет распределение, близкое к нормальному.

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

4. Что такое статистическая мощность?

Статистическая мощность – это мощность бинарной гипотезы, то есть вероятность отклонения нулевой гипотезы, если альтернативная гипотеза верна.

5. Что такое ошибка отбора (в отношении данных), и почему она важна? Как предварительная обработка данных может ухудшить ситуацию?

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

Существуют следующие виды ошибок отбора:

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

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

6. Дайте простой пример того, как постановка экспериментов может помочь ответить на вопрос о поведении. Как экспериментальные данные контрастируют с данными наблюдений?

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

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

Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр

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

7. Является ли подстановка средних значений вместо пропусков допустимым? Почему?

Подстановка средних значений – это метод замены пропусков в наборе данных средними значениями соответствующих признаков.

Как правило, подстановка средних значений – плохой метод, поскольку он не принимает во внимание корреляцию между признаками.

Например, у нас есть таблица с данными о возрасте и уровне физической формы, и для 80-летнего человека уровень физической формы пропущен. Если мы возьмем средний уровень физической формы для всех возрастов от 15 до 80 лет, очевидно, что наш 80-летний получит более высокий уровень, чем имеет на самом деле.

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

8. Что такое выброс и внутренняя ошибка? Объясните, как их обнаружить, и что бы вы делали, если нашли их в наборе данных?

Выброс (англ. outlier) – это значение в данных, существенно отличающееся от прочих наблюдений.

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

1) Z-оценка/стандартные отклонения: если мы знаем, что 99.7% данных в наборе лежат в пределах тройного стандартного отклонения, мы можем найти элементы данных, выходящие за эти пределы. Точно так же, мы можем рассчитать z-оценку каждого элемента, и если она равна /- 3, это выброс.

Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр

2) Межквартильное расстояние (Inter-Quartile Range, IQR) – концепция, положенная в основу ящиков с усами (box plots), которую также можно использовать для нахождения выбросов. МКР – это расстояние между 3-м и 1-м квартилями. После его расчета можно считать значение выбросом, если оно меньше Q1-1.5*IQR или больше Q3 1.5*IQR. Это составляет примерно 2.7 стандартных отклонений.

Собеседование на позицию Data Scientist: 20 типичных вопросов / Блог компании SkillFactory / Хабр

Другие методы включают кластеризацию DBScan, Лес Изоляции и устойчивый случайно-обрубленный лес.

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

9. Как вы обрабатываете пропуски? Какие методы подстановки вы рекомендуете?

Существует несколько способов обработки пропущенных данных:

  • удаление строк с пропущенными данными;
  • подстановка среднего значения, медианы или моды;
  • присваивание уникального значения;
  • предсказание пропущенных значений;
  • использование алгоритма, допускающего пропуски – например, случайный лес.

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

10. Есть данные о длительности звонков в колл-центр. Разработайте план кодирования и анализа этих данных. Приведите пример, как может выглядеть распределение этих данных. Как бы вы могли проверить, хотя бы графически, подтверждаются ли ваши ожидания?

Чтобы очистить, исследовать и представить данные, я бы провел EDA – Exploratory Data Analysis (разведочный анализ данных). В процессе EDA я бы построил гистограмму длительности звонков, чтобы увидеть их распределение.

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

Пример логнормального распределения
Пример логнормального распределения

Чтобы подтвердить, распределена длительность звонков логнормально или нет, мы могли бы использовать график КК (QQPlot).

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

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

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

12. Вы составляете отчет по объему загруженного пользователями контента, и обнаруживаете пик загрузок в октябре – причем это пик загрузки изображений. Что могло послужить причиной этого, и как бы вы проверили свою догадку?

Есть несколько потенциальных причин пика загрузки изображений.

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

Метод проверки зависит от причины пика, но для тестирования правильности догадки используется проверка гипотез.

13. Вы летите в Казань, и хотите решить, стоит ли брать зонт. Вы звоните трем случайным казанцам и спрашиваете, идет ли дождь. Каждый из них говорит правду с вероятностью 2/3, а с вероятностью 1/3 обманывает вас. Все трое говорят, что дождь идет. Какова вероятность, что он идет на самом деле?

Поскольку последнее предложение фактически спрашивает: «какова вероятность A при условии, что верно B?», можно сразу сказать, что здесь нужна теорема Байеса. Нам потребуется информация о вероятности дождя в Казани в произвольный день, не связанный с полетом Допустим, она равна 25%.

P(A) = вероятность дождя = 25%

P(B) = вероятность, что все три казанца говорят, что идет дождь.

P(A|B) = вероятность дождя, при условии, что все трое говорят, что он идет.

P(B|A) = вероятность, что все трое говорят, что идет дождь, при условии, что он действительно идет = (2/3)3=8/27.

Шаг 1. Находим P(B)

Формулу Байеса P(A|B) = P(B|A) * P(A) / P(B) можно переписать в виде

P(B) = P(B|A) * P(A) P(B| не А) * P(не A)

P(B) = (2/3)3*0.25 (1/3)3*0.75 = 0.25*8/27 0.75*1/27.

Шаг 2. Находим P(A|B)

P(A|B) = 0.25*(8/27) / (0.25*8/27 0.75*1/27) = 8 / (8 3) = 8/11.

Таким образом, если все три казанца говорят, что идет дождь, то он действительно идет с вероятностью 8/11.

14. В первой коробке 12 черных и 12 красных карт, а во второй – 24 черных и 24 красных. Если вытянуть две случайные карты из одной коробки, для какой коробки вероятность вытянуть две карты одного цвета будет выше?

Вероятность вытянуть две карты одного цвета выше для второй коробки, содержащей по 24 карты каждого цвета.

Если мы вытянули, например, красную карту из первой коробки, там останется 11 красных карт и 12 черных, то есть вероятность вытянуть вторую красную карту будет 11 / (11 12) = 11/23.

Во второй коробке после вытягивания первой карты останется 23 карты того же цвета и 24 карты другого, то есть вероятность вытянуть вторую карту того же цвета будет 23 /(23 24) = 23/47.

Поскольку 23/47 > 11/23, вероятность вытянуть две карты одного цвета из коробки, в которой больше карт, выше.

15. Что такое подъем (lift), ключевые показатели эффективности (KPI), робастность, обучение модели, планирование эксперимента, правило 80/20?

Подъем (lift) – мера качества предсказаний модели по сравнению с моделью, выбирающей результат случайным образом. Иными словами, подъем определяет, насколько модель лучше, чем отсутствие какой-либо модели.

Ключевые показатели эффективности (KPI): измеримые метрики, показывающие, насколько хорошо компания добивается бизнес-целей. Например, это процент ошибок.

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

Обучение модели – настройка внутренних параметров модели, чтобы добиться меньших ошибок на обучающем наборе данных.

Планирование эксперимента (design of experiment, DOE) – подготовка задач для описания и объяснения изменений информации, которые предположительно должны отражать поведение переменной. Фактически, эксперимент пытается предсказать результат, основываясь на изменении одного или более входных параметров – независимых переменных.

Правило 80/20 (закон Парето) гласит, что 80% эффекта получается от 20% случаев. Например, 80% продаж приходится на 20% клиентов.

16. Дайте определение понятиям «обеспечение качества» и «шесть сигм».

Обеспечение качества (Quality Assurance, QA) – действия или набор действий, направленных на поддержание желаемого уровня качества, минимизацию ошибок и дефектов.

Шесть сигм – вид методологии обеспечения качества, включающий набор техник и инструментов, улучшающих процесс. Процесс «шесть сигм» – тот, в котором 99.99966% результатов не имеют дефектов.

17. Приведите пример данных, распределение которых не Гауссово и не логнормальное.

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

18. Что такое RCA (root cause analysis)? Как отличить причину от корреляции? Приведите примеры.

Анализ причин (root cause analysis, RCA) – метод решения задач, используемый для выявления причин некоторого явления.

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

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

19. Приведите пример, когда медиана лучше описывает данные, чем среднее значение.

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

20. Вы бросаете два шестигранных кубика. Какова вероятность, что сумма выпавших значений будет равна 4? А 8?

Выбросить 4 можно тремя комбинациями: (1 3, 2 2, 3 1). Поскольку всего комбинаций 36, P(4) = 3/36 = 1/12.

Выбросить 8 можно пятью комбинациями: (2 6, 3 5, 4 4, 5 3, 6 2). P(8) = 5/36.

21. Что такое Закон больших чисел?

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

Например, после 100 тыс. бросков правильной монеты процент выпавших гербов будет ближе к 50%, чем после 100 бросков.

22. Как рассчитать необходимый размер выборки?

Для определения желаемого размера выборки можно использовать формулу предельной ошибки (margin of error):

  • t или z – значение t/z, использованное при расчете доверительного интервала.
  • S – стандартное отклонение выборки.

23. Какие ошибки вы можете внести, когда делаете выборку?

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

24. Как уменьшить количество ошибок выборки?

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

25. Что такое вмешивающиеся переменные?

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

26. Что такое A/B тестирование?

A/B тестирование – это метод проверки гипотез по двум выборкам для одной и той же переменной, контрольной и тестовой. Широко применяется для улучшения обслуживания пользователей и в маркетинге.

27. Уровень заражений в больнице, превышающий 1 заражение на 100 человеко-дней, считается высоким. В некоторой больнице было 10 заражений за последние 1787 человеко-дней. Вычислите P-значение верного одностороннего теста, чтобы определить, высок ли уровень заражений в этой больнице.

Поскольку мы анализируем количество событий (заражений), произошедших за определенный интервал времени, нужно использовать распределение Пуассона:

Нуль-гипотеза: 1 заражение на 100 человеко-дней или меньше

Альтернативная гипотеза: больше 1 заражения на 100 человеко-дней.

k (фактическое) = 10 заражений.

Лямбда (теоретическое) = 1/100 * 1787.

P = 0.032372 или 3.2372% (можно рассчитать с помощью using.poisson() в Excel, ppois в R или scipy.stats.poisson в Python)

Поскольку значение P меньше альфы (при уровне значимости 5%), мы отвергаем нулевую гипотезу, и делаем вывод, что больница не соответствует стандарту.

28. Вы бросаете жульническую монету (вероятность герба=0.8) пять раз. Какова вероятность, что выпадет минимум три герба?

Для ответа на этот вопрос используем общую формулу биномиальной вероятности:

В нашей задаче p = 0.8, n=5, k=3, 4, 5.

P(3 или больше гербов) = P(3 герба) P(4 герба) P(5 гербов) = 0.94 или 94%.

29. Случайная величина X распределена нормально со средним значением 1020 и стандартным отклонением 50. Вычислите P(X>1200).

Используем Excel: p = 1-norm.dist(1200, 1020, 50, true). Получаем p=0.000159.

30. Пусть количество пассажиров на автобусной станции имеет распределение Пуассона со средним значением 2.5 в час. Какова вероятность, что за 4 часа появится не более трех человек?

x=3, а среднее значение за 4 часа = 2.5*4=10.

Используем Excel: p=poisson.dist(3, 10, true), и получаем p=0.010336.

31. Тест на ВИЧ имеет чувствительность 99.7% и специфичность 98.5%. Пациент из окружения с распространенностью заболевания 0.1% получил положительный результат теста. Какова точность теста (то есть, вероятность, что он ВИЧ-позитивен)?

Точность теста = PV = (0.001*0.997)/[(0.001*0.997) ((1–0.001)*(1–0.985))] = 0.0624 или 6.24%.

Более подробно об этом уравнении можно прочитать здесь.

32. Вы баллотируетесь на пост, и ваш социолог опросил 100 избирателей, 60 из которых сказали, что собираются голосовать за вас. Можете ли вы быть уверены в победе?

  • Примем для простоты, что у вас только один соперник.
  • Также примем, что желаемый доверительный интервал составляет 95%. Это даст нам z-оценку 1.96.

В нашей задаче p = 0.6, z = 1.96, n = 100, что дает доверительный интервал [50.4, 69.6].

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

33. Счетчик Гейгера записывает 100 радиоактивных распадов за 5 минут. Найдите приблизительный 95% интервал для количества распадов в час.

  • Поскольку это задача на распределение Пуассона, среднее = лямбда = дисперсия, что также означает, что стандартное отклонение = квадратному корню из среднего.
  • Доверительный интервал 95% соответствует z-оценке 1.96.
  • Одно стандартное отклонение = 10.

То есть, доверительный интервал равен 100 /- 19.6 = [964.8, 1435.2].

34. Количество убийств в Шотландии упало со 115 до 99. Является ли это изменение значимым?

Эта задача аналогична предыдущей – зесь тоже используется распределение Пуассона. Доверительный интервал равен 115 /- 21.45 = [93.55, 136.45]. Поскольку 99 находится в этом доверительном интервале, мы можем сделать вывод, что это изменение не является значимым.

35. Рассмотрим эпидемию инфлюэнцы для гетеросексуальных семей с двумя родителями. Предположим, что вероятность заражения хотя бы одного родителя 17%. Вероятность заражения отца 12%, а заражения обоих родителей – 6%. Какова вероятность заражения матери?

Используем общее правило сложения вероятностей:

P(мать или отец) = P(мать) P(отец) – P(мать и отец)

P(мать) = P(мать или отец) P(мать и отец) – P(отец) = 0.17 0.06 – 0.12 = 0.11

36. Предположим, что диастолическое кровяное давление мужчин от 35 до 44 распределено нормально со средним значением 80 (мм. рт. столба) и стандартным отклонением 10. Чему примерно равна вероятность того, что давление случайного мужчины меньше 70?

Поскольку 70 – это одно стандартное отклонение вниз от среднего значения, нужно взять площадь Гауссова распределения до минус одного стандартного отклонения: 2.3 13.6 = 15.9%.

37. Выборка 9 человек из интересующей нас популяции выявила средний объем мозга = 1100 куб.см. со стандартным отклоненим 30 куб.см. Каким будет 95% Т-доверительный интервал Стьюдента для среднего объема мозга в этой популяции?

Используем формулу доверительного интервала для выборки:

Учитывая уровень доверительности 95% и количество степеней свободы, равное 8, t-оценка = 2.306.

Доверительный интервал = 1100 /- 2.306*(30/3) = [1076.94, 1123.06].

38. Девять испытуемых получали диетические пилюли на протяжении 6 недель. Средняя потеря веса составила -2 кг. Каким должно быть стандартное отклонение потери веса, чтобы верхняя граница 95% Т-доверительного интервала была равна 0?

Верхняя граница = среднее t-оценка * (стандартное отклонение / квадратный корень из размера выборки).

0 = -2 2.306*(s/3)

2 = 2.306 * s / 3

s = 2.601903

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

39. Для тестирования новой и старой систем сортировки пациентов неотложной помощи исследователи выбрали 20 ночей и случайным образом назначили новую систему сортировки на 10 из них, в остальных оставив старую. Они рассчитали среднее время ожидания (СВО) доктора для каждой ночи. Для новой системы СВО = 3 часа с отклонением 0.60, тогда как для старой было 5 часов с отклонением 0.68. Оцените 95% доверительный интервал для разницы в среднем СВО между системами. Считайте дисперсию постоянной.

Воспользуемся формулой нахождения доверительного интервала для двух независимых выборок (используем t-таблицу для n1 n2-2 степеней свободы):

Доверительный интервал – это среднее /- t-оценка * стандартную ошибку.

Среднее значение = новое среднее – старое среднее = 3-5 = -2.

t-оценка равна 2.101, учитывая 18 степеней свободы (20-2) и 95% доверительный интервал.

Стандартная ошибка = sqrt(0.62*9 0.682*9)/(10 10–2)) * sqrt(1/10 1/10) = 0.352. Доверительный интервал = [-2.75, -1.25].

40. Для дальнейшего тестирования системы сортировки пациентов администраторы выбрали 200 ночей и случайным образом назначили новую систему на 100 из них, оставив старую для 100 остальных. Они посчитали среднее время ожидания (СВО) каждой ночи – для новой системы 4 часа со стандартным отклонением 0.5, а для старой – 6 часов со стандартным отклонением 2 часа. Рассмотрите гипотезу о сокращении времени ожидания при новой системе. Что предполагает 95% независимый групповой доверительный интервал с неравными дисперсиями для этой гипотезы? (Поскольку измерений на группу так много, просто используйте Z-квантиль вместо T).

Предположим мы вычитаем в порядке «Новая система – Старая система». Используем формулу доверительных интервалов для двух независимых выборок и Z-таблицу для стандартного нормального распределения:

среднее значение = новое среднее – старое среднее = 4-6 = -2

z-оценка = 1.96 для доверительного интервала 95%

Стандартная ошибка = sqrt((0.52*99 0.22*99)/(100 100–2)) * sqrt(1/100 1/100) = 0.205061.

Нижняя граница = -2–1.96*0.205061 = -2.40192

Верхняя граница = -2 1.96*0.205061 = -1.59808

Доверительный интервал равен[-2.40192, -1.59808]

Часть 5. заключение

Пройдусь по каждому пункту.

1) Задачи на Яндекс Контесте – 9/10

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

2) Общение с рекрутером – 10/10

Рекрутер довольно развернуто и оперативно отвечал на все вопросы по почте, после 1го интервью сразу перешел в телеграм для удобства

3) Первое интервью – 10/10

Первое интервью мне очень понравилось. Задачи, подсказки от Сергея, лёгкое и приятное общение.

4) Второе интервью – 5/10

Было слишком много стандартных вопросов, словесная нагрузка в начале интервью от Светланы. Считаю, что можно было кратко и менее нагружено представиться и рассказать, чем занимается отдел. Непростые вопросы на аналитику, сейчас поясню. Должен ли человек, который подаёт на позицию стажёра “Аналитик данных” знать продуктовую аналитику? Наверное, да.

5) Выводы

К сожалению, я получил только фидбек, только написанный в части 4. Проанализировав 2 интервью, я сделал вывод о том, что нужно подтянуть sql. Насчёт продуктовой аналитики я не знаю, в каждой компании свои процессы и заранее вникать в особенности ее работы, наверное, тяжело и затратно по времени. Я согласен, что если ты работаешь уже внутри, то ты обязан знать все подробности, но до этого – вряд ли.

Попробую ли я ещё раз? Думаю, да. Через полгода, может раньше. Несмотря на отказ. Мне нравятся сервисы, которые делает компания и я активно ими пользуюсь. Поэтому было бы интересно поучаствовать в их улучшении.

Буду рад, если этот пост поможет кому-то подготовиться и попасть в Яндекс.

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

Оцените статью
Аналитик-эксперт
Добавить комментарий

Adblock
detector