Задачи из интервью Facebook Data Science

Ответы на некоторые вопросы типа “problem solving” из интервью при приеме на работу на позицию Data scientist в Facebook!

Мы продолжаем ряд публикаций, посвященных решениям data science задач, которые работодатели задают в своих интервью при приеме на работу. В этот раз разбираем задачи от Facebook, любезно собранные Теренс Шин.

Напомним, что с вопросами от Google можно ознакомиться здесь.

8 минут чтения

Фото NeONBRAND на Unsplash

В: Вы случайным образом вытягиваете монету из набора 100 одинаковых монет, в котором 1 фальшивая монета  (орел – орел) и 99 обычных (орел-решка), и бросаете ее 10 раз. Если в результате выпадает 10 раз орел, то какова вероятность, что монета фальшивая?

На это можно ответить, используя теорему Байеса. Расширенное уравнение для теоремы Байеса следующее:

Предположим, что вероятность выбора нечестной монеты обозначена как P(A), а вероятность выбрасывания 10 орлов подряд обозначена как P(B). Тогда P(B | A) равно 1, P(B ∣ ¬A) равно 0.5¹⁰, а P(¬A) равно 0.99.

Если вы подставите эти значения в уравнение, то получится P(A | B) = 0,9118 или 91,18%.

В: Есть здание высотой в 100 этажей. Вам дают 2 одинаковых яйца. Как использовать 2 яйца, чтобы найти минимальный пороговый этаж N, когда яйцо обязательно разобьется при падении с любого этажа выше N, включая сам этаж N?

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

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

Теперь представьте, что у нас есть неограниченное количество яиц. Наиболее оптимальный метод определения порогового уровня – бинарный поиск. Во-первых, вы начнете с 50-го этажа. Если яйцо расколется, вы бросите яйцо на 25-й этаж, а если оно не расколется, вы бросите яйцо на 75-й этаж, и вы будете повторять этот процесс, пока не найдете пороговое значение.

С двумя яйцами наиболее оптимальный метод определения порогового уровня – это гибрид двух решений, приведенных выше.

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

Если бы вы бросали первое яйцо каждые 10 этажей до тех пор, пока оно не разобьется, в худшем случае потребовалось бы 19 падений, что намного лучше, чем бросать первое яйцо каждые 5 этажей. Но что, если вы хотите сделать еще лучше?

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

Это можно упростить до:

Решив это неравенство для n, вы получите 14. Таким образом, ваша стратегия будет начинаться с 14-го этажа, затем с 14 + 13, затем с 14 + 13 + 12 и так далее, пока яйцо не разобьется, и затем вы используете второе яйцо, чтобы найти пороговое значение. Один этаж за раз!

В: У нас есть два варианта показа рекламы в новостной ленте. Вариант 1: 1 из каждых 25 новостей, одна будет рекламой. Вариант 2: каждая новость имеет 4% шансов стать рекламой. Какое ожидаемое количество рекламных объявлений будет в 100 новостях для каждого варианта?

Ожидаемое количество шансов для обоих вариантов – 4 из 100.

Для варианта 1: 1/25 эквивалентно 4/100.
Для варианта 2: 4% от 100 составляет 4/100.

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

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

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

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

В: 70% пользователей Facebook на iOS пользуются Instagram, но только 35% пользователей Facebook на Android используют Instagram, как бы вы исследовали такое расхождение?

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

  • Демография пользователей iOS и Android может существенно отличаться. Например, согласно Hootsuite, 43% женщин используют Instagram, и лишь 31% мужчин. Если доля женщин-пользователей для iOS значительно больше, чем для Android, это может объяснить несоответствие (или, по крайней мере, его часть). Это же можно сказать и по возрасту, расе, этнической принадлежности, месту проживания и т.д.
  • Поведенческие факторы также могут оказывать влияние на расхождение. Если пользователи iOS используют свои телефоны более интенсивно, чем пользователи Android, то они будут пользоваться Instagram и другими приложениями более часто,  чем те, кто проводит меньше времени со своими телефонами.
  • Другой возможный фактор, который следует учитывать, – это отличие Google Play и App Store. Например, если у пользователей Android есть значительно больше приложений (и приложений для социальных сетей), это может привести к «размыванию» пользователей.
  • Наконец, любые различия в пользовательском опыте могут удерживать пользователей Android от использования Instagram по сравнению с пользователями iOS. Если приложение для пользователей Android более «глючное», чем для iOS, вероятность того, что оно будет активно использоваться ниже.

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

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

Сосредоточим внимание на лайках на пользователя. Есть две причины, по которым этот показатель мог возрасти. Первая причина заключается в том, что вовлечение пользователей обычно увеличивается с течением времени. Активные пользователи с большей вероятностью становятся лояльными пользователями, поскольку использование платформы становится привычной практикой. Другая причина, по которой увеличивается количество лайков на пользователя, заключается в том, что знаменатель, общее количество пользователей, уменьшается. Предполагая, что пользователи, которые прекращают использовать платформу, являются неактивными пользователями, то есть пользователями с небольшим уровнем вовлеченности и меньшим количеством лайков, чем в среднем. Это увеличивает среднее число лайков на пользователя.

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

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

В: Facebook видит, что количество лайков выросло на 10% по сравнению с прошлым годом, почему это может быть?

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

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

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

В: Если бы вы тестировали продукт X, на какие показатели вы бы рассчитывали, чтобы определить, успешен ли он?

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

Метрики от Lean Analytics

В: Если руководитель говорит, что хочет удвоить количество объявлений в новостной ленте, как бы вы выяснили, хорошая это идея или нет?

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

Затем вы должны выбрать метрику, чтобы определить, что такое «хорошая идея».

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

В: Вы играете в кости, бросая два шестигранных кубика. Если сумма выпадающих значений равна семи, то вы выиграете 21 доллар. При этом вы должны платить 5 долларов за каждый бросок кубиков. Имеет ли смысл играть в эту игру?

Несложно посчитать, что вероятность выпадения 7 равна 1/6 (6 возможных комбинаций из 36 вариантов).

Это означает, что в среднем вы должны заплатить 30 долларов (5 * 6), чтобы выиграть 21 доллар. То есть, ожидаемая выплата составляет -9 долларов (21 – 30).
Поскольку ожидаемая выплата является отрицательной, то игра для вас не имеет смысла.


Спасибо за потраченное время. Надеемся, это было полезно!

Поделиться...
Share on facebook
Share on twitter
Share on vk