Вопросы с собеседовании по машинному обучению

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

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

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

1. Какая модель была бы лучше для прогнозирования цен бронирования на Airbnb: линейная регрессия или метод случайного леса?

Метод случайного леса и Линейная регрессия. Вот преимущества обеих моделей:

  • Метод случайного леса лучше работает с категориальными предикторами и может хорошо обрабатывать недостающие значения.
  • Линейная регрессия, с другой стороны, является стандартным методом регрессии, в котором моделируются взаимосвязи, например: y = Ax + B.

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

2. Что такое смещение?

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

3. Что такое дисперсия?

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

4. Что такое регуляризация?

Вопросы с собеседовании по машинному обучению

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

5. Что такое градиентный спуск?

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

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

6. Как вы интерпретируете коэффициенты линейной регрессии?

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

7. Что такое метод максимального правдоподобие?

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

8. В чем заключается различие между методами классификации и регрессии в машинном обучении?

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

9. Что такое линейный дискриминантный анализ?

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

10. Сравните алгоритмы бэггинг и бустинга.

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

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

Бэггинг на подпространствах

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

Бустинг (англ. boosting — улучшение) — это процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. Бустинг представляет собой жадный алгоритм построения композиции алгоритмов. Изначально понятие бустинга возникло в работах по вероятно почти корректному обучению в связи с вопросом: возможно ли, имея множество плохих (незначительно отличающихся от случайных) алгоритмов обучения, получить хороший[1].

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

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

11. Объясните, что такое Встраивание слов  GloVe (глобальные векторы для представления слов).

Что такое встраивание слов?

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

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

Глобальные векторы для Word-представления или алгоритм GloVe довольно похож на Word2Vec. Однако, метод немного отличается. GloVe рассматривает контекстную информацию только на основе 1-1. Это означает, что GloVe создает только матрицу, связанную со словом, которая включает в себя вероятность P (a | b) просмотра k-слова вокруг слова b.
Основная цель этой методики – найти такое представление двух векторов, которое генерирует вероятность лога их точечных продуктов, равное кооперации. Они имеют отличные результаты для сопоставления слов в контексте друг с другом.

12. В чем разница между Лассо и регрессией гребня?

Начнём с основных определений. Представим, что у нас есть наблюдения, которые характеризует один признак. Например, мы хотим предсказать количество предстоящих лет жизни человеку по его индексу массы тела — такое вот у нас исследование. У нас есть набор данных “с ответами” — то есть табличка соответствия “ИМТ в 30 лет → n оставшихся лет” собранная с населения какой-нибудь скандинавской страны.

данные взяты с потолка
данные взяты с потолка

Дальше всякими правдами и не-правдами догадываемся, что зависимость годов жизни от ИМТ описывается полиномом степени 2, а значит надо искать три коэффициента — при ИМТ^2ИМТ^1 и при ИМТ^0 (он же сдвиг кривой по оси ординат).

Чтоб найти коэффициенты, возьмём наш набор наблюдений-иксов и “раскроем его” — вместо одного икса сделаем икс в нулевой, икс в первой (он же просто икс) и икс в квадрате, — чтоб найти уместные коэффициенты перед каждым компонентом уравнения полиномиальной регрессии.

превращаем икс в три степени икса
превращаем икс в три степени икса

Решим матричное уравнение. В матрице у нас каждый ряд представляет собой одно наблюдение, в нашем случае – одного человечка. Вектор w — искомый вектор коэффициентов регрессии. Вектор игрек — вектор количества лет — одно число для каждого человечка. Хорошо про решение таких уравнений для поиска коэффициентов регрессии написано тут.

\begin{equation*} \left( \begin{array}{ccc} 1 & x_1 & x_1^2\\ 1 & x_2 & x_2^2\\ \vdots & \vdots & \vdots\\ 1 & x_n & x_n^2 \end{array} \right) \end{equation*} \cdot \left(  \begin{array}{c} w_0 \\ w_1 \\ w_2  \end{array} \right) = \left(  \begin{array}{c} y_1 \\ y_2 \\ \vdots \\ y_n  \end{array} \right)

Решаем и получаем что-то типа y=-(x-23)^2+15=-x^2+6x-5 — искомый полином степени 2.

предположения о зависимости ИМП и лет жизни тоже взяты с потолка
предположения о зависимости ИМП и лет жизни тоже взяты с потолка

Bam! Мы построили линию регрессии и теперь по ИМТ можем предсказывать дату смерти!

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

На самом деле и в жизни, и в науке исследователи далеко не всегда знают, какие признаки влияют на целевую переменную. Влияет ли на доходность бизнеса средняя продолжительность рабочего дня CEO компании? А широта и долгота главного офиса компании? Влияет ли на дату смерти человека аномалии в гене OCA2 (один из генов, кодирующих цвет радужки)?

Часто исследователи стараются зафиксировать как можно больше признаков — порода домашнего животного, ИМТ, уровень глюкозы, рост — просто на всякий случай. Но если мы будем учитывать все собранные признаки, то существует риск большой дисперсии модели на новых данных. Конечно, если у нас для одного человека собрано 100 фич, среди которых ИМТ, цвет глаз, порода собаки, количество морганий в минуту, то модели будет сложно выделить действительно значимые тренды и при изменении одного, даже самого незначительно признака (например, количество морганий изменили на +2) предсказание — оставшиеся года жизни — изменится радикально. И вот уже человеку жить не 50 лет, а 30. А ещё может быть такой случай — признаки, которые мы собрали, сильно скоррелированы. Например, вес человека утром и вес человека перед сном. Скоррелированные признаки сильно мешают нам в решении матричного уравнения, так как становится трудно построить обратную матрицы. Подробнее про такие плохо обусловленные задачи написано тут.

Вопросы с собеседовании по машинному обучению

Представим, что мы собрали чуть больше данных о наших скандинавских ребятах. Теперь у нас есть не только их ИМТ, но ещё количество морганий в час. Теперь признаковое пространство стало двумерным. Координата точки по икс1 и икс2 — в нижней полуплоскости — даёт нам представление о том, какой у человека ИМТ и сколько раз в час он в среднем моргает. Красная парящая точка в воздухе — есть предсказание оставшиеся лет.

Вопросы с собеседовании по машинному обучению

Попробуем развернуть это трёхмерное пространство — разбить его на два двумерных и посмотреть на зависимость целевой переменной от каждого признака.

Вопросы с собеседовании по машинному обучению

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

И снова про регуляризацию

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

🅾️ Регуляризация — метод добавления некоторых дополнительных ограничений к условию с целью решить некорректно поставленную задачу или предотвратить переобучение.
(с) Вики

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

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

J_{LASSO} = \sum_i (y_i - \hat{y})^2 + \lambda ||w||
 J_{RIDGE} = \sum_i (y_i - \hat{y})^2 + \lambda w^2

Лямбда – гиперпараметр, который мы можем настраивать вручную. Чем больше лямбда, тем сильнее модель штрафуется за величину коэффициентов и их количество. Если занулить лямбду, мы получим самую обычную функцию потерь методом наименьших квадратов, соответственно — самую обычную регрессию. То если в лассо и ридж модель пытается найти баланс между хорошим предсказанием, которое подходит под тренировочные данные, и не слишком большой сложностью модели, когда мы используем не все фичи и не делаем коэффициенты огромными (10 000, 100 000 и т.д.). Понятно, что чем длиннее вектор коэффициентов (то есть чем больше в нём мы рассматриваем фич) и чем больше эти коэффициенты по модулю, тем сильнее будет штрафоваться модель.

Существенно отличие регрессии лассо от ридж в том, что лассо зануляет коэффициенты. То есть буквально перед какими-то фичами она ставит 0 и в модели они не рассматриваются. Ридж же может коэффициент сильно уменьшить, но не занулить. Почему так?

Объяснения LASSO и Ридж. Та Самая Картинка

Вопросы с собеседовании по машинному обучению

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

Итак, на Той Самой Картинке мы пытаемся оптимизировать регрессию с двумя фичами – \beta_1и \beta_2. Это могут быть коэффициенты обычной линейной регрессии y=\beta_2\cdot x + \beta_1. Это могут быть два разных признака, например, рост отца и рост матери, когда мы пытаемся предсказать рост ребёнка. По сути мы ищем такую точку на плоскости с координатами \beta_{1_{идеальное}} и \beta_{2_{идеальное}}, чтоб она соответствовала минимуму функции ошибок.

С осями разобрались. А что за красные овалы? Красные овалы есть квадратичная функция потерь обычной линейной регрессии без всякого штрафа. Причём это вид на функцию сверху. Вспомним, как вообще выглядит функция ошибок SSE (sum of squered errors) с двумя параметрами. Меняться могут два параметра, следовательно функция ошибок – трёхмерная, и принимает вид этакой чаши, а по-научному — параболоида. Минимум квадратичной функции ошибок — на дне чаши.

Вопросы с собеседовании по машинному обучению

ссылка на интерактивную визуализацию

Вернёмся к Той Самой Картинке. Красные овалы — это вид на функцию потерь сверху. А точка \hat{\beta} — это точка на дне чаши, минимум квадратичной ошибки. И если б у нас была обычная регрессия, не лассо и не ридж, то мы бы взяли коэффициенты \beta_1и \beta_2, соответствующие точке \hat{\beta} и всё, готова наша регрессия. Но у нас есть штраф! И этот штраф не даёт нам взять \hat{\beta} , а заставляет искать другое значение.

Дело в том, что штраф, очевидно, накладывает некоторое ограничение на наши коэффициенты. На Той Самой Картинке это ограничение изображено как голубой квадрат и зелёный круг. В случае с лассо мы говорим, что сумма модулей наших коэффициентов не должна быть больше некоторого t. t – это некоторое число, которое зависит от величины лямбда (чем больше лямбда, тем меньше t) и от диапазона наших наблюдений, для разных данных t будет разным. Факт в том, что если сумма модулей коэффициентов становится чуть больше t, то функция потерь лассо J_{LASSO} = \sum_i (y_i - \hat{y})^2 + \lambda ||w|становится настолько большой, что в этой точке никак не может быть её минимум. Неравенство |\beta_1|+|\beta_2|\leq tвыполняется только внутри квадрата и на его границах, соответственно, везде вне квадрата штраф будет слишком большой, чтоб там был искомый нами минимум.

Можно заметить, что оптимальная с точки зрения квадратичной функции потерь точка\hat{\beta} находится вне голубого квадрата. Однако \beta_1и \beta_2в ней слишком большие, чтобы удовлетворить ограничения штрафа. Что ж, придётся подниматься вверх по чаше квадратичной функции потерь, пока мы не найдём такие \beta_1и \beta_2, что они удовлетворят ограничению штрафа.

Вопросы с собеседовании по машинному обучению

Мы начинаем ползти вверх. Зелёным пунктиром обозначен наш путь. Зелёный крестик – оптимальные\beta_1и \beta_2с точки зрения функции потерь лассо. Второй рисунок — вид сверху. На Той Самой Картинке множественные красные овалы как раз обозначают наш путь вверх по чаше, вверх по квадратичной функции потерь. Заметьте, что зелёный крестик вовсе не соответствует минимуму квадратичной функции ошибок, минимум у нас в синем кружочке. Зато зелёный крестик позволяет \beta_1и \beta_2уменьшится настолько, что штраф милостиво пропускает такие значения, а значит мы достигаем минимума по функции потерь лассо J_{LASSO} = \sum_i (y_i - \hat{y})^2 + \lambda ||w||.

На Той Самой Картинке оптимум находится в точке пересечения красного круга и грани квадрата. Мы нашли то самое равновесие — квадратичная ошибка не так велика, не так велик штраф. Мы могли бы сдвинуться ещё внутрь голубого квадрата — штраф бы стал ещё меньше, так как меньше стали бы \beta_1и \beta_2. Но тогда скакнула бы вверх функция квадратичной ошибки, ведь мы бы забрались ещё выше по стенкам её чаши. Мы могли бы не доходить до голубого квадрата вообще и попытаться уменьшить квадратичную функцию ошибки, но тогда штраф за большие значения\beta_1и \beta_2был бы слишком велик.

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

 наш оптимум — помесь не-слишком-большой-ошибки и не-слишком-большого-штрафа
наш оптимум — помесь не-слишком-большой-ошибки и не-слишком-большого-штрафа

Заметьте, что на Той Самой Картинке в случае лассо оптимум достигается там, где \beta_1 равно нулю. Почему именно там? Потому что мы, путешествуя по стенке чаши и уменьшая сумму модулей коэффициентов, наткнёмся на уголок квадрата неравенства |\beta_1|+|\beta_2|\leq t раньше, чем на что-то другое. Он просто как бы повёрнут нам навстречу. А так как уголок неравенства всегда будет лежать на оси \beta_1=0, мы всегда будем занулять один из коэффициентов.

UPD

Как справедливо указали в комментариях – нет, не всегда. В Лассо может случится ситуация, когда функция ошибок столкнётся с квадратом на грани квадрата, а не на его уголке. А Ридж в свою очередь тоже может занулить какой-то из коэффициентов. Другое дело, что из-за того, что штраф лассо – квадратный (или кубический, или гиперкубический), то есть у него много острых углов и рёбер, у функции ошибок вероятность наткнуться на ребро или угол больше, следовательно и вероятность занулить один или больше коэффициентов больше.

Вот, например, ситуация, когда регрессия Лассо не занулит ни один из коэффицентов, а ридж – возьмёт и занулит 😱. За рисунок спасибо @vbogach

Вопросы с собеседовании по машинному обучению

На Той Самой Картинке слева, там, где изображена регрессия ридж, ситуация такая же за одним исключением — оптимум там достигается не там, где \beta_1=0, а там, где \beta_1почти ноль. А с чем же это связано? Дело в том, что в случае с ридж-регрессией штраф выглядит иначе: J_{Ridge} = \sum_i (y_i - \hat{y})^2 + \lambda w^2 . Здесь в штрафе коэффициенты возводим в квадрат. Значит, и ограничение, накладываемое штрафом выглядит иначе: \beta_1^2+\beta_2^2\leq c. Это уравнение окружности. Внутри окружности и на границах штраф достаточно мал, снаружи — слишком велик. Оптимальные коэффициенты снова находятся там, где овал функции потерь в первый раз встречается со штрафом. Только теперь это будет не на оси \beta_1=0, потому что в случае с кругом, гладкий славный бочок круга всегда встретится с овалом функции потерь раньше, чем она встретится с осью \beta_1=0. Именно поэтому ридж и не попадает в ноль. Тем не менее, видно, что на Той Самой Картинке коэффициент \beta_1 находится достаточно близко к нулю.

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

13. Как бы вы предотвратили переобучение в модели глубокого обучения?

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

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

Методы предотвращения переобучения

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

14. Как извлечь семантику из тела текста?

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

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

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

15. Опишите ситуацию, в которой вы бы использовали MSE.

Среднеквадратичная ошибка (MSE) определяется как среднее значение квадрата разницы между фактическими и расчётными значениями.

Мы бы использовали MSE при оценке точности регрессионной модели.

Измеряет среднюю сумму квадратной разности между фактическим значением и прогнозируемым значением для всех точек данных. Выполняется возведение во вторую степень, поэтому отрицательные значения не компенсируют положительными. А также в силу свойств этой метрики, усиливается влияние ошибок, по квадратуре от исходного значения. Это значит, что если в в исходных измерениях мы ошиблись на 1, то метрика покажет 1, 2-4, 3-9 и так далее. Чем меньше MSE, тем точнее наше предсказание. Оптимум достигается в точке 0, то есть мы идеально предсказываем.

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

16. Улучшит ли добавление дополнительных фитч GBM или логистическую регрессию?

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

17. Как вы оптимизируете параметры модели во время построения модели?

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

18. Какова взаимосвязь между PCA и LDA?

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

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

19. В чем разница между контролируемым и неконтролируемым обучением?

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

Основная разница между контролируемым и неконтролируемым обучением: размеченные данные

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

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

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

Другие ключевые различия между контролируемым и неконтролируемым обучением

  • Цели. Цель контролируемого обучения — прогнозировать результаты по новым данным. Вы заранее знаете, какого рода результат ожидать. Цель неконтролируемого обучения — получить полезную информацию из огромного объема новых данных. В ходе обучения машина сама определяет, какая информация из набора необычна или представляет интерес.
  • Области применения. Модели контролируемого обучения идеально подходят для обнаружения спама, анализа тональности высказываний, прогнозирования погоды, изменения цен и т. д. Модели неконтролируемого обучения созданы для выявления отклонений, повышения эффективности рекомендательных сервисов, прогнозирования поведения клиентов и медицинской визуализации.
  • Сложность. Контролируемое обучение — это простой метод машинного обучения, который обычно рассчитывается с использованием таких программ как R или Python. Неконтролируемое обучение требует мощных инструментов для работы с большим количеством неклассифицированных данных. Модели неконтролируемого обучения отличаются высокой вычислительной сложностью, поскольку для получения необходимых результатов нужна большая обучающая выборка.
  • Недостатки. Модели неконтролируемого обучения могут быть затратными по времени, а разметка входных и выходных данных требует опыта и знаний. Методы неконтролируемого обучения могут давать очень неточные результаты, если выходные переменные не будут валидироваться человеком.

Контролируемое и неконтролируемое обучение: что лучше?

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

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

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

20. Как работает алгоритм опорных векторов?

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

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

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

21. Вы создаете двоичный классификатор на основе набора данных с 1000 выборками и 10 000 объектами. Вы бы использовали логистическую регрессию?

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

22. Опишите, как бы вы построили модель для прогнозирования ETA водителя Uber после того, как пассажир запросит поездку.

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

  • Как бы вы оценили прогнозы модели ETA водителя Uber?
  • Какие функции вы бы использовали для прогнозирования времени прибытия водителя Uber?

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

23. Как бы вы построили модель, которая предскажет, примет ли водитель Uber запрос на поездку?

Развернутый ответ на этот вопрос содержится в данном видео на Youtube.

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

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

Несколько важных пунктов:

  • Насколько точны наши данные? Все ли данные тщательно помечены? Какой объем мошенничества мы не обнаруживаем, если клиенты даже не знают, что их обманывают?
  • Какая модель хорошо работает с несбалансированным набором данных? Как правило, на ум приходят древовидные модели.
  • Построение высокоточной модели для нашего набора данных может оказаться не лучшим методом, если мы не сможем ничего из этого извлечь. В случае, когда наши клиенты подвергаются риску без нашего ведома, мы сталкиваемся с проблемой построения модели, на которой мы не можем учиться, и тратим время на разработку функций в будущем.
Обнаружение мошенничества с онлайн-платежами с использованием машинного обучения в Python
Здесь мы попробуем решить этот вопрос с помощью машинного обучения в Python.

Набор данных, который мы будем использовать, имеет эти столбцы:
Вопросы с собеседовании по машинному обучению

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

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


X = data_new.drop(['isFraud', 'type', 'nameOrig', 'nameDest'], axis=1)
y = data_new['isFraud']

Вывод : 

Online Payment Fraud Detection using Machine Learning

Чтобы вывести информацию о данных, мы можем использовать команду data.info().

data.info()

Output : 

Online Payment Fraud Detection using Machine Learning - information

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


X = data_new.drop(['isFraud', 'type', 'nameOrig', 'nameDest'], axis=1)
y = data_new['isFraud']

Output : 

Online Payment Fraud Detection using Machine Learning - Describe

Визуализация данных

В этом разделе мы постараемся разобраться и сравнить все столбцы.

Давайте посчитаем столбцы с разными типами данных, такими как Category, Integer, Float.

obj = (data.dtypes == 'object')
object_cols = list(obj[obj].index)
print("Categorical variables:", len(object_cols))
 
int_ = (data.dtypes == 'int')
num_cols = list(int_[int_].index)
print("Integer variables:", len(num_cols))
 
fl = (data.dtypes == 'float')
fl_cols = list(fl[fl].index)
print("Float variables:", len(fl_cols))

Вывод : 

Categorical variables: 3
Integer variables: 2
Float variables: 5

Давайте посмотрим график подсчета столбца Тип платежа, используя библиотеку Seaborn.

sns.countplot(x='type', data=data)

Вывод : 

Online Payment Fraud Detection using Machine Learning - Count

Мы также можем использовать гистограмму для одновременного анализа столбца «Тип» и «Количество».

sns.barplot(x='type', y='amount', data=data)

Output : 

Online Payment Fraud Detection using Machine Learning - Barplot

Как на графике хорошо видно, что в основном тип cash_out и transfer максимальны как по количеству, так и по сумме.

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

data['isFraud'].value_counts()

Вывод : 

0    8000
1    8000

Теперь давайте посмотрим на распределение столбца step с помощью distplot.


plt.figure(figsize=(15, 6))
sns.distplot(data['step'], bins=50)

Вывод : 

Online Payment Fraud Detection using Machine Learning - Distplot

На графике показано максимальное распределение между 200 и 400 шагами.

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

plt.figure(figsize=(12, 6))
sns.heatmap(data.corr(),
            cmap='BrBG',
            fmt='.2f',
            linewidths=2,
            annot=True)

Output :

Online Payment Fraud Detection using Machine Learning - Heatmap

Предварительная обработка данных

type_new =pd.get_dummies(data['type'], drop_first=True)

data_new =pd.concat([data, type_new], axis=1)

data_new.head()

Вывод:

Online Payment Fraud Detection using Machine Learning - Modified Data

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


X = data_new.drop(['isFraud', 'type', 'nameOrig', 'nameDest'], axis=1)
y = data_new['isFraud']

X = data_new.drop(['isFraud', 'type', 'nameOrig', 'nameDest'], axis=1)
y = data_new['isFraud']

Вывод:

((16000, 10), (16000,))

star_border

Теперь давайте разделим данные на 2 части: обучение и тестирование.


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42)

Обучение модели

Мы будем использовать следующие модели:

Логистическая регрессия :  предсказывает, относится ли вероятность данных к определенной категории или нет.

XGBClassifier: относится к деревьям решений Gradient Boosted. В этом алгоритме деревья решений создаются в последовательной форме, и всем независимым переменным присваиваются веса, которые затем вводятся в дерево решений, предсказывающее результаты.

SVC: SVC используется для поиска гиперплоскости в N-мерном пространстве, которая четко классифицирует точки данных.

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

Давайте импортируем модули соответствующих моделей.

fromxgboost importXGBClassifier

fromsklearn.metrics importroc_auc_score as ras

fromsklearn.linear_model importLogisticRegression

fromsklearn.svm importSVC

fromsklearn.ensemble importRandomForestClassifier

Закончив импорт, давайте обучим модель.

models = [LogisticRegression(), XGBClassifier(),
          SVC(kernel='rbf', probability=True),
          RandomForestClassifier(n_estimators=7,
                                 criterion='entropy',
                                 random_state=7)]
 
for i in range(len(models)):
    models[i].fit(X_train, y_train)
    print(f'{models[i]} : ')
     
    train_preds = models[i].predict_proba(X_train)[:, 1]
    print('Training Accuracy : ', ras(y_train, train_preds))
     
    y_preds = models[i].predict_proba(X_test)[:, 1]
    print('Validation Accuracy : ', ras(y_test, y_preds))
    print()

Вывод:

Online Payment Fraud Detection using Machine Learning - Model Accuracy

Оценка модели
Лучшей моделью является XGBClassifier.


from sklearn.metrics import plot_confusion_matrix
 
plot_confusion_matrix(models[1], X_test, y_test)
plt.show()

Вывод:

Confusion matrix of XGBClassifier

25. У вас есть категориальная переменная с тысячами различных значений. Как бы вы ее закодировали?

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

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

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

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

28. Вы хотите создать способ определения возраста, месяца и дня рождения человека. Какие методы вы бы предложили; какие данные вы бы использовали?

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

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

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

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

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

Сравниваем меры качества

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

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

Критерий ранжирования — нормированная функция расстояния между ранжированием разбиений, задаваемым мерой качества, и агрегированным ранжированием разбиений, задаваемым оценками на основе визуального восприятия. Область значения данной функции: [0, 1];чем значение функции ближе к Вопросы с собеседовании по машинному обучению, тем рассматриваемая мера качества лучше.

Для наглядности давайте рассмотрим пример с собранным мною набором данных из двухсот двумерных наборов данных 2D-200. Для каждого набора данных из 2D-200 были сформированы 14 разбиений. Эти разбиения были оценены пятью асессорами и девятнадцатью мерами качества. В итоге на наборе данных 2D-200 выявлены лучшие меры качества с точки зрения критериев AdqиR.Затем для каждой меры по всем элементам из 2D-200 были вычислены следующие величины:

— соотношение числа раз, когда мера отвечала критерию адекватности Adqк общему числу экспериментов;

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

Значения и для всех мер качества на наборе данных наборов данных 2D-200 представлены в таблице ниже.

МераBestCVI_{Adq}BestCVI_RМераBestCVI_{Adq}BestCVI_R
DB0,6300,000Sym0,5650,123
Dunn0,6650,038CI0,3850,006
Silhouette0,6650,058DB*0,6950,000
CH0,6750,058gD310,7300,064
S_Dbw0,6400,000gD410,7350,155
SymDB0,6750,045gD510,6500,012
CS0,4750,006gD330,7150,129
COP0,0350,000gD430,6950,168
SV0,4500,071gD530,5850,003
OS0,0350,253

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

Однако эффективная рекомендация из девятнадцати мер качества требует значительно большего числа наборов данных, чем представлено в 2D-200. Поэтому я построил множество из четырех самых лучших мер с точки зрения AvgCVI_R— среднего значения, вычисляемого на основе критерия ранжирования мер: мера Silhouette, мера Calinski-Harabasz, мера gD41 и мера OS. В таблице приведены значения для всех исследованных мной внутренних мер качества.

МераAvgCVI_RМераAvgCVI_R
gD41\mathbf{0,312}gD530,442
gD430,314S_Dbw0,501
gD330,317Dunn0,517
OS\mathbf{0,342}gD510,614
CH\mathbf{0,369}CI0,647
Silhouette\mathbf{0,370}CS0,763
SV0,370DB0,800
Sym0,380COP0,808
gD310,380DB*0,819
SymDB0,410

Классификатор, который рекомендует меру качества

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

Как подобрать алгоритм

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

Эвристические алгоритмы

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

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

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

Давайте формализуем задачу. Пусть задан некоторый временной бюджет на поиск лучшего алгоритма Требуется разбить его на интервалы T = t_1 + t_2 + . . . + t_mтаким образом, что при запуске процессов \pi_jс ограничением по времени t_iполучается значение меры качества Qтакое, что:

Q(A_{\lambda_j}^{j}) \xrightarrow{(t_1, t_2, \ldots, t_m)} \min_j,

гдеA^j \in A, \lambda = \pi(t_i, A^j, \emptyset),и t_1 + \ldots + t_m = T, t_i \geq 0 \: \forall i.

В этом случае каждой ручке бандита соответствует определённая модель алгоритма кластеризации из конечного множества вызову ручки на итерации — процесс оптимизации гиперпараметров этой модели в течение времени В результате будет достигнуто качество кластеризацииQ(A_{\lambda_i}^{i}, D).

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

Вопросы с собеседовании по машинному обучению

Иллюстрация работы метода выбора и настройки эвристического алгоритма MASSCAH представлена на рисунке ниже:

Вопросы с собеседовании по машинному обучению

Эволюционные алгоритмы

Одним из ключевых аспектов работы эволюционных алгоритмов является вычисление функции приспособленности. В нашем случае — это внутренняя мера оценки разбиения. Важно научиться быстро её перерасчитывать, если структура кластеров изменилась. Переформулировать задачу можно так: пусть точка x_{id} переместилась из кластера C_aв кластер C_b.

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

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

МераПолный пересчётИнкрементальный пересчётТочность пересчёта
Dunn\mathcal{O}(n^2)\mathcal{O}(n)точный пересчёт
CH\mathcal{O}(n^2 \log(n))\mathcal{O}(n)аппроксимация
CI\mathcal{O}(n \log(n))\mathcal{O}(n)аппроксимация
DB\mathcal{O}(n \log(n))\mathcal{O}(n)аппроксимация
Sil\mathcal{O}(n^2)\mathcal{O}(n)точный пересчёт
gD31\mathcal{O}(n^2)\mathcal{O}(n)точный пересчёт
gD33\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
gD41\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
gD43\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
gD51\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
gD53\mathcal{O}(n \log(n))\mathcal{O}(n)аппроксимация
CS\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
DB*\mathcal{O}(n \log(n))\mathcal{O}(n)аппроксимация
Sym\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
SymDB\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
COP\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
SV\mathcal{O}(n^2)\mathcal{O}(n)аппроксимация
OS\mathcal{O}(n^2 \log(n))\mathcal{O}(n)аппроксимация
S_Dbw\mathcal{O}(n \log(n))\mathcal{O}(n)аппроксимация

Для эволюционных алгоритмов важен выбор стратегии, операций кроссовера и мутаций на каждой итерации. Анализируя работы различных эволюционных алгоритмов, я выяснил, что качество получаемого разбиения зависит в основном от выбираемых мутаций. Поэтому из нескольких тестируемых решил использовать самую эффективную по времени (1 + 1)стратегию, в которой на каждой итерации равновероятно выбирается одна из мутаций. Таким образом, нужно проводить лишь настройку (1 + 1)стратегии, а именно — выбор используемых мутаций для решаемой задачи кластеризации.

Эволюционный алгоритм кластеризации (1+1).
Эволюционный алгоритм кластеризации (1+1).

Принимая во внимание эту особенность, я придумал мета-классификатор, рекомендующий список мутаций для решаемой задачи кластеризации. По всем запускам алгоритма с равновероятно выбираемыми мутациями для каждого из используемых набора данных я посчитал степень «полезности» каждой мутации. Для каждого запуска алгоритма построил распределение, которое показывало, какое число раз та или иная мутация давала прирост с точки зрения функции приспособленности на каждой итерации. Потом я взял пять лучших мутаций и построил бинарный вектор, где лучшим мутациям соответствовала 1,а остальным — Вопросы с собеседовании по машинному обучению. Мета-признаковое описание каждого набора данных аналогично тому, которое использовалось мной для построения классификатора, предсказывающего меру качества. Таким образом был построен мета-классификатор, позволяющий для каждого набора данных рекомендовать набор мутаций, который нужно использовать в(1 + 1)алгоритме.

Ниже представлена таблица числа запусков алгоритма с автоматизацией и без неё, сгруппированная по оптимизируемым мерам качества. «Хуже» и «не хуже» означает, что автоматизированный алгоритм, соответственно, отстаёт либо не отстаёт от алгоритма без автоматической настройки параметров по качеству разбиений;  среднее время работы алгоритма с автоматизацией и без неё соответственно.

Calinski-HarabaszOSgD41Silhouette
хужене хужехужене хужехужене хужехужене хуже
t_p>t_a ” src=”https://habrastorage.org/getpro/habr/upload_files/8ae/009/ebe/8ae009ebeb43544e8cb654197018f254.svg”></td><td><img decoding=6246232415
Вопросы с собеседовании по машинному обучению187254416472058

Сравнение алгоритмов

Интересно сравнить алгоритм на основе выбора и настройки эвристических алгоритмов кластеризации MASSCAH с алгоритмом настройки эволюционного (1+1)алгоритма кластеризации.

Я предположил, что два алгоритма получают одинаковые значения меры качества, если интервалы этих значений [µ - σ, µ + σ]пересекаются. То есть была использована квантиль уровня для нормального распределения. Временной бюджет алгоритма, запускаемого на определённых мере и наборе данных, задавался равным среднему времени работы автоматизированного эволюционного алгоритма на этих мере и наборе данных. Я запустил алгоритмы со всеми отобранными ранее четырьмя мерами качества: Silhouette, Calinski-Harabasz, gD41 и OS. Для каждой пары «мера – набор данных» производилось 10 запусков алгоритма. Полученные количества удачных и неудачных запусков приведены в таблице ниже.

Число положительных и отрицательных результатов сравнений алгоритмов на базе метода выбора и настройки эвристического алгоритма кластеризации на основе обучения с подкреплением, сгруппированные по мере качества разбиений. Столбец MASSCAH > Evo соответствует случаям, когда качество эволюционного алгоритма оказалось хуже, чем алгоритма на базе обучения с подкрепление, MASSCAH ≈ Evo — что качества сравнимы, MASSCAH < Evo —  разработанный алгоритм опережает существующий результат.

MASSCAH > Evo” src=”https://habrastorage.org/getpro/habr/upload_files/ee3/b8b/f56/ee3b8bf56b7f23c87b146364daa03f58.svg”></td><td><img decoding=Вопросы с собеседовании по машинному обучению
Мера CH115036
Мера OS96523
Мера Silhouette127213
Мера gD4147617
Все меры3626389
Мера Meta-CVI136816

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

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

Представьте, что у нас есть три человека: Алиса, Олег и Иван. Все они подали заявки на получение кредита. Упрощая модель финансового кредитования, давайте предположим, что единственными особенностями, принимаемыми во внимание, являются:

  • Общее количество кредитных карт
  • Возраст кредита
  • Сумма долга кредита

В этом примере у Алисы, Олега и Ивана одинаковое количество кредитных карт и возраст кредита, но не одинаковая сумма текущего долга в долларах:

Алиса: 10 кредитных карт, возраст кредита 5 лет, долг в 20 тысяч рублей.
Олег: 10 кредитных карт, возраст кредита 5 лет, долг в 15 тысяч рублей.
Иван: 10 кредитных карт, возраст кредита 5 лет, долг в 10 тысяч рублей.

Алисе и Олегу отказывают в кредите, а Иван получает одобрение. Мы бы логично предположили, что долг Ивана в 10 тысяч долларов был решающим фактором в том, что модель одобрила ее для получения кредита.

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

31. В вашем наборе данных о жилье 20% объявлений не содержат информации о квадратных метрах. Как бы вы поступили с этими недостающими данными?

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

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

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

32. У вас есть набор данных из 1 миллиона поездок в Париж. Вы хотите построить модель для прогнозирования ETA для гонщиков. Достаточно ли у нас данных, чтобы составить точную модель?

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

В частности, на какие другие виды информации мы должны обратить внимание, когда нам предоставляется набор данных и мы строим модель с “довольно хорошим” показателем точности?

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

33. Какие выводы можно сделать, если площадь под кривой ROC равна 0,5?

Когда AUC=0,5, то классификатор не способен различать положительную и отрицательную классификации. Другими словами, классификатор не работает и предсказывает с точностью, подброшенной монеты.

34. Как бы вы интерпретировали коэффициенты логистической регрессии для категориальных и булевых переменных?

Подсказка: Величина коэффициента напрямую связана с его влиянием на вероятность исхода. Знак коэффициента сообщает вам, прямо или обратно коррелирует переменная с вероятностью исхода.

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

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

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

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

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

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

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

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

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

  • Как будет определяться поиск?
  • Сколько поисковых запросов по подкастам основаны на тексте? Сколько всего существует подкастов?
  • Является ли это инструментом, ориентированным на клиента?
  • Действительно ли необходимо МL-решение?

38. Как бы вы построили модель анализа настроений на основе набора данных WallStreetBets? Каковы потенциальные проблемы, которые могут возникнуть?

С таким набором данных некоторыми непродуманными вариантами могут быть:

  • Тон
  • Скарказм
  • Предвзятость настроения пользователей
  • Полярность
  • Использование смайликов

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

39. Как бы вы построили модель ML для прогнозирования уровня заполняемости отеля?

Для решения этой задачи вам стоило бы подумать над этими вопросами: Как бы вы спроектировали эту модель? Какие данные вы бы использовали для обучения своей модели? Как бы вы оценили производительность модели?

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

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

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

При собеседовании по проектированию системы не забудьте продумать следующие шаги:

  • Сбор данных
  • Набор функций
  • Выбор модели
  • Оценка модели
  • Реализация модели

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

42. Как бы вы создали механизм рекомендаций для объявлений о вакансиях?

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

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

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

43. Как бы вы построили алгоритм рекомендаций для поиска Netflix?

Советуем почитать статью, где подробно расписана модель рекомендации Netflix

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

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

С какой целью делается бинаризация и в каких случаях?

Ответ

Бинаризация используется, когда вы хотите преобразовать вектор числовых признаков в логический вектор. В области обработки цифровых изображений бинаризация изображения — это процесс, посредством которого цветное изображение или изображение в градациях серого преобразуется в бинарное изображение, т. е. изображение только с двумя цветами (обычно черным и белым). Этот метод используется для распознавания объектов, форм и, в частности, символов. Благодаря бинаризации можно отличить интересующий объект от фона, на котором он находится. Функция preprocessing.Binarizer() выполняет бинарную обработку данных в соответствии с заданным порогом. Значения, превышающие пороговое значение, сопоставляются с 1, а значения, меньшие или равные пороговому значению, сопоставляются с 0. При пороговом значении по умолчанию, равном 0, только положительные значения сопоставляются с 1. В нашем случае установленное пороговое значение равно 1,4, поэтому значения, превышающие 1,4 сопоставляются с 1, а значения меньше 1,4 сопоставляются с 0.

==============================================

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

Смотирите пример: https://informatics-ege.blogspot.com/2022/07/what-is-purpose-of-binarization.html

from sklearn import preprocessing

import numpy as np

data = np.array([[3, -1.5, 2, -5.4], [0, 4, -0.3, 2.1], [1, 3.3, -1.9, -4.3]])

print(data)

data_binarized = preprocessing.Binarizer(threshold=1.4).transform(data)

print("Done data_binarized","\n",data_binarized )

print("\n")

(.env) [boris@ServerFedora35 BINARIZE]$ python Binarize1.py

[[ 3.  -1.5  2.  -5.4]

 [ 0.   4.  -0.3  2.1]

 [ 1.   3.3 -1.9 -4.3]]

Done data_binarized 

 [[1. 0. 1. 0.]

 [0. 1. 0. 1.]

 [0. 1. 0. 0.]]

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *