Machine learning Interview
24.7K subscribers
1.07K photos
78 videos
12 files
725 links
Разбираем вопросы с собеседований по Machine Learning, Data Science, Deep Learning и Нейронным сетям, Python.

Вопросы - @notxxx1


@itchannels_telegram -🔥лучшие it каналы

РКН: clck.ru/3FmwRz
Download Telegram
🖥 Какие методы можно использовать для заполнения пропущенных данных, и каковы последствия невнимательного заполнения данных? (Тема: Очистка данных)

Ответ

Данные из реального мира часто имеют пропуски. Есть множество методов для их заполнения. Полное «лечение» – это процесс удаления каждой строки, содержащей значение NA. Это допустимо, если значений NA не очень много, они задевают не очень много строк, и данных достаточно – в противном случае, мы можем потерять что-нибудь важное. В данных из реального мира удаление любых строк, содержащих NA, может привести к потере наблюдаемых паттернов в данных.

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

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

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

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие приемущества даёт слой батч нормализации.

Ответ

➡️ Возможность использовать больший learning rate. Батч нормализация сглаживает ландшафт функции ошибки, тем самым позволяя использовать бо́льший lr без опаски проскочить локальный минимум.

➡️ Ускорение обучения. За счёт сохранения распределения фичей между слоями, нейронная сеть обучается быстрее.

➡️ Регуляризация. Статистики считаются на батче и экспоненциального сглаживаются — появляется эффект регуляризации.

➡️ Ёмкость сети не тратится понапрасну. Так как для основных слоёв сети распределение фичей практически не меняется, им не нужно тратить ману на заучивание распределений, а можно сконцентрироваться на поиске новых важных фичей.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Hadoop MapReduce?

Hadoop MapReduce — программный каркас для программирования распределённых вычислений в рамках парадигмы MapReduce. Разработчику приложения для Hadoop MapReduce необходимо реализовать базовый обработчик, который на каждом вычислительном узле кластера обеспечит преобразование исходных пар «ключ — значение» в промежуточный набор пар «ключ — значение» (класс, реализующий интерфейс Mapper, назван по функции высшего порядка Map), и обработчик, сводящий промежуточный набор пар в окончательный, сокращённый набор (свёртку, класс, реализующий интерфейс Reducer). Каркас передаёт на вход свёртки отсортированные выводы от базовых обработчиков, сведе́ние состоит из трёх фаз:

shuffle (тасовка, выделение нужной секции вывода)
sort (сортировка, группировка по ключам выводов от распределителей — досортировка, требующаяся в случае, когда разные атомарные обработчики возвращают наборы с одинаковыми ключами, при этом, правила сортировки на этой фазе могут быть заданы программно и использовать какие-либо особенности внутренней структуры ключей)
reduce (свёртка списка) — получения результирующего набора. Для некоторых видов обработки свёртка не требуется, и каркас возвращает в этом случае набор отсортированных пар, полученных базовыми обработчиками.
Hadoop MapReduce позволяет создавать задания как с базовыми обработчиками, так и со свёртками, написанными без использования Java: утилиты Hadoop streaming позволяют использовать в качестве базовых обработчиков и свёрток любой исполняемый файл, работающий со стандартным вводом-выводом операционной системы (например, утилиты командной оболочки UNIX), есть также SWIG-совместимый прикладной интерфейс программирования Hadoop pipes на C++. Также, в состав дистрибутивов Hadoop входят реализации различных конкретных базовых обработчиков и свёрток, наиболее типично используемых в распределённой обработке.

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

@machinelearning_interview
🖥 Зачем вам нужно использовать активное обучение при обучении нейронных сетей

Часто разметка данных оказывается самой серьёзной преградой для машинного обучения — сбор больших объёмов данных, их обработка и разметка для создания достаточно производительной модели могут занимать недели или даже месяцы. Активное обучение позволяет обучать модели машинного обучения на гораздо меньшем количестве размеченных данных. Лучшие компании в сфере ИИ, например, Tesla, уже используют активное обучение. Мы считаем, что и вам тоже оно необходимо.

В этом посте мы расскажем, что такое активное обучение, рассмотрим инструменты для его практического применения и продемонстрируем, как мы сами упрощаем внедрение активного обучения в процесс NLP.

➡️ Читать дальше

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 В чем разница между Байесовской оценкой решения и Методом максимального правдоподобия? (Тема: Алгоритмы)

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

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

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое нормализация и денормализация в SQL при работе с данными?

Нормализация отношений в SQL призвана организовать информацию в базе данных таким образом, чтобы она не занимала много места и с ней было удобно работать. Это удаление избыточных данных, устранение дублей, идентификация наборов связанных данных через PRIMARY KEY, etc.

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

Подробнее о пяти нормальных формах и форме Бойса-Кодда можно узнать из данного видеокурса.


@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Часто считается, что Ложный Негативный результат хуже, чем Ложный Позитивный. Можете ли вы привести пример, когда Ложный Позитивный результат хуже Ложного Негативного? (Тема: Показатели классификации, Организация)

Ответ

Вот один пример из многих. Предположим, компания электронной торговли решила подарить чек на $1000 клиентам, которые, по ее мнению, купят товаров не менее чем на $5000. Если модель, используемая компанией, выдаст Ложный Негативный результат, она (ошибочно) не пошлет чек данному клиенту, поскольку считает, что он не потратит $5000 на товары. Хотя это далеко не идеально, компания не потеряет на этом денег. А вот если компания пошлет чек клиенту c Ложным Позитивным результатом (для которого модель ошибочно утверждает, что он купит на $5000), она потеряет на этом деньги.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 В каких случаях вы бы использовали MSE и MAE? (Тема: Метрики точности)?

Среднеквадратичная ошибка (Mean Squared Error, MSE) используется чаще, поскольку она «подсвечивает» большие ошибки. Поскольку производная от x2 равна 2x, чем больше x, тем больше разность между x и x-1. Однако, иногда выбирают Среднюю ошибку по модулю (Mean Absolute Error, MAE), поскольку она выдает результат, который проще интерпретировать. Таким образом, MSE может быть лучше, если вам просто нужно сравнивать модели друг с другом, но не нужно интерпретировать саму метрику, но если нужно интерпретировать результат метрики, лучше использовать MAE .

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Почему нелинейная функция Softmax часто бывает последней операцией в сложной нейронной сети? (Тема: Нейронные сети)

Ответ

Потому, что она принимает вектор действительных чисел и возвращает распределение вероятностей. Какой бы вектор x ни подали на ее вход (неважно, положительных или отрицательных), на выходе будет набор чисел, пригодный в качестве распределения вероятностей: каждый элемент выходного значения будет неотрицательным, и их сумма будет равна 1.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое векторизация TF/IDF

TF/IDF – это сокращение для Term Frequency/Inverse Document Frequency. Это числовая статистика, которая должна отражать, насколько данное слово важно для документа, являющегося частью набора документов. Она часто используется в качестве взвешивающего множителя при получении информации и извлечении текста. Значение TF/IDF увеличивается пропорционально количеству появлений этого слова в документе, но уменьшается пропорционально частоте использования этого слова во всем наборе документов, что помогает компенсировать тот факт, что некоторые слова в принципе встречаются чаще других.

На сколько вопросов вы ответили правильно? Эти вопросы относились к широкому диапазону тем, от нейронных сетей до очистки данных, от SVM до NLP, и от показателей классификации до статистики. Они должны хорошо показать, насколько вы знакомы с концепциями Data Science.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое PCA, и чем он может помочь? (Тема: Алгоритмы)

Метод главных компонент (Principal Component Analysis, PCA) – метод сокращения размерности путем нахождения n ортогональных векторов, представляющих наибольшую вариантность из данных, где n – это размерность, до которой пользователь хочет сократить данные. Эти n векторов служат измерениями для новых данных.

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

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Какие вы знаете метрики для регрессии?
Вкратце расскажите о каждой (как она считается, какой смысл несет).


Ответ
1. mse, rmse, mae, mape, smape, wape, r^2

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

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

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

mape - средняя абсолютная ошибка в процентах, отлично интерпретируется

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

wape - взвешенная абсолютная ошибка, сталкивался с метрикой во временных ряда в задачах прогнозирования спроса, может кто знает в чем ее преимущества?

r^2 - показывает как хорошо модель объясняет дисперсию целевой переменной

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое ансамбли, и чем они полезны? (Тема: Алгоритмы)

Ответы

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

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Расскажите о командах systemd для управления Docker

Ответ

Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service.


$ sudo systemctl start docker
$ sudo service docker start


Чтобы добавить сервис в автозагрузку, либо убрать его:


$ sudo systemctl enable docker
$ sudo systemctl disable docker


Для проверки параметров запуска сервиса и их изменения:


$ sudo systemctl edit docker

Просмотра связанных с сервисом журналов:


$ journalctl -u docker

Опишите процесс масштабирования контейнеров Docker

Контейнеры могут быть масштабированы с использованием команды docker-compose scale. Процесс масштабирования такой:


Масштабируем контейнер и запускаем n экземпляров:

$ docker-compose --file docker-compose-run-srvr.yml scale <service_name>=<n>

В вышеприведенном примере имя сервиса задается в файле docker-compose-run-srvr.yml, а также запускается n копий контейнеров, где n — любое целое положительное число.


После масштабирования контейнера для проверки можно использовать такую команду:

$ docker ps -a

@machinelearning_interview
➡️ Задание с собеседования Big Data МТС

Во вложении датасет – отток абонентов в телекоме. Целевая переменная – churn (индикатор оттока).

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

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

Варианты решиний пишите в комментариях.

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
✒️ Что такое преобразование Бокса-Кокса?

Преобразование Бокса-Кокса — это широко используемый метод преобразования ненормально распределенного набора данных в более нормально распределенный.

Основная идея этого метода состоит в том, чтобы найти некоторое значение λ, чтобы преобразованные данные были как можно ближе к нормальному распределению, используя следующую формулу:

y(λ) = (y λ – 1) / λ, если y ≠ 0
y(λ) = log(y), если y = 0


Мы можем выполнить преобразование box-cox в R, используя функцию boxcox() из библиотеки MASS().В следующем примере показано, как использовать эту функцию на практике.

Пример: преобразование Бокса-Кокса в R
В следующем коде показано, как подобрать модель линейной регрессии к набору данных, а затем использовать функцию boxcox() , чтобы найти оптимальную лямбду для преобразования переменной ответа и соответствия новой модели.

library (MASS)

#create data
y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7,8)
x=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5,8)

#fit linear regression model
model <- lm(y~x)

#find optimal lambda for Box-Cox transformation
bc <- boxcox(y ~ x)
(lambda <- bc$x[which.max(bc$y)])

[1] -0.4242424

#fit new linear regression model using the Box-Cox transformation
new_model <- lm(((y^lambda-1)/lambda) ~ x)


Оптимальная лямбда оказалась равной -0,4242424.Таким образом, новая регрессионная модель заменила исходную переменную отклика y на переменную y = (y -0,4242424 – 1) / -0,4242424.

В следующем коде показано, как создать два графика QQ в R, чтобы визуализировать различия в остатках между двумя моделями регрессии:

#define plotting area
op <- par(pty = "s", mfrow = c(1, 2))

#Q-Q plot for original model
qqnorm(model$residuals)
qqline(model$residuals)

#Q-Q plot for Box-Cox transformed model
qqnorm(new_model$residuals)
qqline(new_model$residuals)

#display both Q-Q plots
par(op)

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

Обратите внимание, как модель преобразования Бокса-Кокса создает график QQ с гораздо более прямой линией, чем исходная модель регрессии.

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

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Задание от Сбербанка

В этой таблице безымянная частичная выгрузка перемещения пользователей по сайту. Один user_id — один пользователь. Расскажите нам всё, что сможете понять по такой выгрузке

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

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

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

⭐️ Датасет
🖥 Решение

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Тестовое задание для DS в Accenture Moscow

Время на выполнение 3-4 дня
Решение лучше кидайте в комменты в виде jupyter notebook’а.

Задание #1:
Таблица (task2.txt) содержит 11 столбцов чисел. Первые 10 столбцов - входные переменные (x_1 , …. , x_10), 11-й столбец - выходная прогнозируемая переменная y. Каждая строка в файле - это один обучающий пример для построения статистической модели для зависимости y = y(x_1,x_2,..,x_10). Конкретный вид связи между выходной и входными переменными не известен.
Требуется провести разведочный анализ данных, выбрать критерий для точности модели, и указать степень важности (информативности) каждой из 10 входных переменных с точки зрения точности модели. Что еще можно предложить чтобы улучшить получившийся результат?
Файл: tesk2.txt

Задание #2:
Нужно предложить и обосновать подход для группировки идентичных наименований товаров.
Пример входа:
[1] "Кисломолочный напиток Актимель ежевично-черничный 100 г"
[2] "Напиток Данон Актимель черника/ежевика 2,5% 6*0,1л Россия"
[3] "Гель для душа Роскошная мягкость Черная орхидея Palmolive, 250 мл". [4] "Гель Palmolive Naturals д/душа Роскошная мягкость Черная орхидея 250мл Италия"
[5] "Гель для душа Palmolive "Черная орхидея" 250 мл"
[6] "Корм Whiskas говядина/кролик канапе новогодний 85г Россия"
Пример выхода: [1 2] [3 4 5] 6 (см. вложенный файл).
Файл: test_task_NLP.json.
final_top.csv

Решение
Решение 2

Другие решения: Решение от одного из DS Accenture (для задания 1):
https://github.com/pdudukin/Regression-Guide/blob/master/Regression%20Guide.ipynbRegression%20Guide.ipynb

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Задание СКБ Контур

В Контуре есть 4 продукта для ритейла и товарного учета:

Контур.Ритейл
Контур.Поставки
Контур.Маркет
Контур.ОФД
Во всех этих продуктах идет работа с товарами. Мы хотим, чтобы с товарами было удобно работать:

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

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

DataSet разделен на 2 части:

train - для обучения, в нем присутствует ID, название товара (name) и тип его упаковки (tare)

test - для оценки качества обученного вами классификатора, в нем присутствует только ID и название товара. Метрика качества, которая применяется для оценки: accuracy.
Формат решения

Требуется обучить модель на данных из train и предсказать тип упаковки для данных из test. В качестве результата мы ожидаем архив в виде “{Фамилия}_{Имя}.zip”, в котором будут 2 файла:

prediction.csv: предсказание для test в формате csv - id,tare
report.ipynb: jupyter notebook, где описан ход вашего решения от data exploration до построения предсказания для test.csv
Итоговый архив для проверки нужно было загрузить в гугл-форму.

⭐️ train
test
➡️ Решение

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Задание Diginetica

В данном ноутбуке содержится код алгоритма предсказания поисковой выдачи. Алгоритм довольно простой:

на исторических запросах строится TF-IDF индекс слов, биграмм и триграмм
описание товаров и значение их атрибутов объединяются в одно суммарное описание
суммарное описание каждого товара прогоняется через построенный индекс
к каждому запросу ищутся топ-25 релевантных товаров по скалярному произведению векторных представлений
Данный код не идеален и ему требуется внимание знающего человека. Подробнее об этом в каждом из пунктов этого ноутбука.

nB! Для выполнения данного задания должны быть установлены библиотеки numpy, pandas, matplotlib, joblib, а так же scikit-learn. Версии указаны в requirements.txt.

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

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

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

➡️ Task

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Google ML engineer interview: the only post you’ll need to read

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

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

➡️ Читать статью

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM