Линейные модели, древовидные модели, нейронные сети и многое другое!

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

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

Сюда входят следующие темы:

  • Линейная регрессия
  • Проверка
  • Классификация и логистическая регрессия
  • Регуляризация
  • Деревья решений
  • Случайный лес
  • Деревья с градиентным усилением
  • Нейронные сети
  • Классификация текста
  • Кластеризация
  • Рейтинг: поиск и рекомендации
  • Временная последовательность

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

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

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

  • 👶 легко
  • ‍⭐️ средний
  • 🚀 эксперт

Это, конечно, субъективно и основано только на моем личном мнении.

Давайте начнем!

Машинное обучение с учителем

  • Что такое машинное обучение с учителем? 👶

Линейная регрессия

  • Что такое регресс? Какие модели можно использовать для решения задачи регрессии? 👶
  • Что такое линейная регрессия? Когда мы его используем? 👶
  • Какое нормальное распределение? Почему нас это волнует? 👶
  • Как проверить, соответствует ли переменная нормальному распределению? ‍⭐️
  • Что, если мы хотим построить модель для прогнозирования цен? Цены распределяются нормально? Нужна ли нам предварительная обработка цен? ‍⭐️
  • Какие методы решения линейной регрессии вы знаете? ‍⭐️
  • Что такое градиентный спуск? Как это работает? ‍⭐️
  • Что такое нормальное уравнение? ‍⭐️
  • Что такое SGD - стохастический градиентный спуск? В чем разница с обычным градиентным спуском? ‍⭐️
  • Какие метрики для оценки регрессионных моделей вы знаете? 👶
  • Что такое MSE и RMSE? 👶

Проверка

  • Что такое переоснащение? 👶
  • Как проверить свои модели? 👶
  • Почему нам нужно разделить наши данные на три части: обучение, проверка и тестирование? 👶
  • Вы можете объяснить, как работает перекрестная проверка? 👶
  • Что такое K-кратная перекрестная проверка? 👶
  • Как выбрать K при перекрестной проверке в K-кратном порядке? Какой твой любимый К.? 👶

Классификация

  • Что такое классификация? Какие модели вы бы использовали для решения задачи классификации? 👶
  • Что такое логистическая регрессия? Когда нам нужно его использовать? 👶
  • Логистическая регрессия - это линейная модель? Почему? 👶
  • Что такое сигмовидная? Что оно делает? 👶
  • Как мы оцениваем классификационные модели? 👶
  • Что такое точность? 👶
  • Всегда ли точность - хороший показатель? 👶
  • Что такое таблица путаницы? Какие ячейки в этой таблице? 👶
  • Что такое точность, отзывчивость и оценка F1? 👶
  • Компромисс между точностью и отзывчивостью ‍⭐️
  • Что такое кривая ROC? Когда это использовать? ‍⭐️
  • Что такое AUC (AU ROC)? Когда это использовать? ‍⭐️
  • Как интерпретировать оценку AU ROC? ‍⭐️
  • Что такое кривая PR (точность-отзыв)? ‍⭐️
  • Какая площадь находится под кривой PR? Это полезный показатель? ‍⭐️
  • В каких случаях AU PR лучше, чем AU ROC? ‍⭐️
  • Что нам делать с категориальными переменными? ‍⭐️
  • Зачем нужна горячая кодировка? ‍⭐️

Регуляризация

  • Что произойдет с нашей моделью линейной регрессии, если у нас есть три столбца в наших данных: x, y, z - а z - это сумма x и y? ‍⭐️
  • Что произойдет с нашей моделью линейной регрессии, если столбец z в данных представляет собой сумму столбцов x и y и некоторого случайного шума? ‍⭐️
  • Что такое регуляризация? Зачем нам это нужно? 👶
  • Какие методы регуляризации вы знаете? ‍⭐️
  • Какие методы регуляризации применимы к линейным моделям? ‍⭐️
  • Как L2-регуляризация выглядит в линейной модели? ‍⭐️
  • Как выбрать правильные параметры регуляризации? 👶
  • Как влияет L2-регуляризация на веса линейной модели? ‍⭐️
  • Как L1 регуляризация выглядит в линейной модели? ‍⭐️
  • В чем разница между регуляризацией L2 и L1? ‍⭐️
  • Можем ли мы иметь в линейной модели компоненты регуляризации L1 и L2? ‍⭐️
  • Как интерпретируется термин смещения в линейных моделях? ‍⭐️
  • Как мы интерпретируем веса в линейных моделях? ‍⭐️
  • Если вес для одной переменной выше, чем для другой - можно ли сказать, что эта переменная более важна? ‍⭐️
  • Когда нам нужно выполнять нормализацию функций для линейных моделей? Когда это нормально не делать? ‍⭐️

Выбор функции

  • Что такое выбор функции? Зачем нам это нужно? 👶
  • Важен ли выбор функций для линейных моделей? ‍⭐️
  • Какие методы выбора функций вы знаете? ‍⭐️
  • Можем ли мы использовать регуляризацию L1 для выбора функций? ‍⭐️
  • Можем ли мы использовать регуляризацию L2 для выбора функций? ‍⭐️

Деревья решений

  • Что такое деревья решений? 👶
  • Как мы обучаем деревья решений? ‍⭐️
  • Каковы основные параметры модели дерева решений? 👶
  • Как мы обрабатываем категориальные переменные в деревьях решений? ‍⭐️
  • Каковы преимущества одного дерева решений по сравнению с более сложными моделями? ‍⭐️
  • Как мы можем узнать, какие функции более важны для модели дерева решений? ‍⭐️

Случайный лес

  • Что такое случайный лес? 👶
  • Зачем нужна рандомизация в случайном лесу? ‍⭐️
  • Каковы основные параметры модели случайного леса? ‍⭐️
  • Как выбрать глубину деревьев в случайном лесу? ‍⭐️
  • Как узнать, сколько деревьев нам нужно в случайном лесу? ‍⭐️
  • Легко ли распараллелить обучение модели случайного леса? Как мы можем сделать это? ‍⭐️
  • Каковы потенциальные проблемы со многими большими деревьями? ‍⭐️
  • Что, если вместо того, чтобы найти лучший сплит, мы случайным образом выберем несколько сплитов и просто выберем из них лучшее. Это будет работать? 🚀
  • Что происходит, когда мы коррелируем функции в наших данных? ‍⭐️

Повышение градиента

  • Что такое деревья, повышающие градиент? ‍⭐️
  • В чем разница между случайным лесом и усилением градиента? ‍⭐️
  • Можно ли распараллелить обучение модели повышения градиента? Как это сделать? ‍⭐️
  • Важность функции в деревьях повышения градиента - каковы возможные варианты? ‍⭐️
  • Есть ли какие-либо различия между непрерывными и дискретными переменными, когда речь идет о важности характеристик моделей повышения градиента? 🚀
  • Каковы основные параметры модели повышения градиента? ‍⭐️
  • Как вы подходите к настройке параметров в XGBoost или LightGBM? 🚀
  • Как выбрать количество деревьев в модели повышения градиента? ‍⭐️

Настройка параметров

  • Какие стратегии настройки параметров (в целом) вы знаете? ‍⭐️
  • В чем разница между стратегией настройки параметров поиска по сетке и случайным поиском? Когда использовать тот или иной? ‍⭐️

Нейронные сети

  • Какие проблемы могут решить нейронные сети? 👶
  • Как работает обычная полносвязная нейронная сеть с прямой связью? ‍⭐️
  • Зачем нужны функции активации? 👶
  • Каковы проблемы с сигмовидной кишкой как функцией активации? ‍⭐️
  • Что такое ReLU? Чем он лучше сигмовидной или тангенциальной? ‍⭐️
  • Как мы можем инициализировать веса нейронной сети? ‍⭐️
  • Что, если мы установим все веса нейронной сети на 0? ‍⭐️
  • Какие методы регуляризации нейронных сетей вы знаете? ‍⭐️
  • Что такое отсев? Почему это полезно? Как это работает? ‍⭐️

Оптимизация в нейронных сетях

  • Что такое обратное распространение? Как это работает? Зачем нам это нужно? ‍⭐️
  • Какие методы оптимизации для обучения нейронных сетей вы знаете? ‍⭐️
  • Как мы используем SGD (стохастический градиентный спуск) для обучения нейронной сети? ‍⭐️
  • Какая скорость обучения? 👶
  • Что происходит, когда скорость обучения слишком велика? Слишком маленький? 👶
  • Как установить скорость обучения? ‍⭐️
  • Что такое Адам? В чем основное различие между Адамом и SGD? ‍⭐️
  • Когда бы вы использовали Adam, а когда SGD? ‍⭐️
  • Хотим ли мы иметь постоянную скорость обучения или лучше менять ее на протяжении всего обучения? ‍⭐️
  • Как мы решаем, когда прекратить обучение нейронной сети? 👶
  • Что такое контрольная точка модели? ‍⭐️
  • Можете рассказать, как вы подходите к процессу обучения модели? ‍⭐️

Нейронные сети для компьютерного зрения

  • Как мы можем использовать нейронные сети для компьютерного зрения? ‍⭐️
  • Что такое сверточный слой? ‍⭐️
  • Зачем на самом деле нужны свертки? Разве для этого нельзя использовать полносвязные слои? ‍⭐️
  • Что объединяет в CNN? Зачем нам это нужно? ‍⭐️
  • Как работает максимальный пул? Есть ли другие методы объединения? ‍⭐️
  • CNN устойчивы к вращению? Что происходит с предсказаниями CNN, если изображение повернуто? 🚀
  • Что такое аугментации? Зачем они нам нужны? 👶 Какие аугментации вы знаете? 👶Как выбрать, какие аугментации использовать? ‍⭐️
  • Какие архитектуры CNN для классификации вам известны? 🚀
  • Что такое трансферное обучение? Как это работает? ‍⭐️
  • Что такое обнаружение объектов? Вы знаете какую-нибудь архитектуру для этого? 🚀
  • Что такое сегментация объектов? Вы знаете какую-нибудь архитектуру для этого? 🚀

Классификация текста

  • Как мы можем использовать машинное обучение для классификации текста? ‍⭐️
  • Что такое мешок слов? Как мы можем использовать это для классификации текста? ‍⭐️
  • Каковы преимущества и недостатки мешка слов? ‍⭐️
  • Что такое N-граммы? Как мы можем их использовать? ‍⭐️
  • Насколько большим должно быть N для нашего пакета слов при использовании N-граммов? ‍⭐️
  • Что такое TF-IDF? Чем это полезно для классификации текста? ‍⭐️
  • Какую модель вы бы использовали для классификации текста с функциями набора слов? ‍⭐️
  • Вы бы предпочли модель деревьев с градиентным повышением или логистическую регрессию при классификации текста с помощью пакета слов? ‍⭐️
  • Что такое вложения слов? Чем они полезны? Вы знаете Word2Vec? ‍⭐️
  • Вы знаете какие-либо другие способы вложения слов? 🚀
  • Если у вас есть предложение, состоящее из нескольких слов, вам может потребоваться объединить вложения нескольких слов в одно. Как бы ты это сделал? ‍⭐️
  • Вы бы предпочли модель деревьев с градиентным повышением или логистическую регрессию при классификации текста с встраиванием? ‍⭐️
  • Как можно использовать нейронные сети для классификации текста? 🚀
  • Как мы можем использовать CNN для классификации текста? 🚀

Кластеризация

  • Что такое обучение без учителя? 👶
  • Что такое кластеризация? Когда оно нам понадобится? 👶
  • Вы знаете, как работает K-means? ‍⭐️
  • Как выбрать K для K-средних? ‍⭐️
  • Какие еще алгоритмы кластеризации вы знаете? ‍⭐️
  • Вы знаете, как работает DBScan? ‍⭐️
  • Когда вы выберете K-means, а когда DBScan? ‍⭐️

Снижение размерности

  • В чем проклятие размерности? Почему нас это волнует? ‍⭐️
  • Знаете ли вы какие-нибудь техники уменьшения размерности? ‍⭐️
  • Что такое разложение по сингулярным значениям? Как это обычно используется для машинного обучения? ‍⭐️

Рейтинг и поиск

  • В чем проблема ранжирования? Какие модели вы можете использовать для их решения? ‍⭐️
  • Каковы хорошие исходные условия для поиска текстовой информации без учителя? ‍⭐️
  • Как бы вы оценили свои алгоритмы ранжирования? Какие офлайн-показатели вы бы использовали? ‍⭐️
  • Что такое точность и отзыв при k? ‍⭐️
  • Что такое средняя точность при k? ‍⭐️
  • Как мы можем использовать машинное обучение для поиска? ‍⭐️
  • Как мы можем получить данные обучения для наших алгоритмов ранжирования? ‍⭐️
  • Можно ли сформулировать задачу поиска как задачу классификации? Как? ‍⭐️
  • Как мы можем использовать данные о кликах в качестве обучающих данных для алгоритмов ранжирования? 🚀
  • Вы знаете, как использовать деревья повышения градиента для ранжирования? 🚀
  • Как вы проводите онлайн-оценку нового алгоритма ранжирования? ‍⭐️

Рекомендательные системы

  • Что такое рекомендательная система? 👶
  • Каковы хорошие исходные условия при построении рекомендательной системы? ‍⭐️
  • Что такое совместная фильтрация? ‍⭐️
  • Как мы можем включить неявную обратную связь (клики и т. Д.) В наши рекомендательные системы? ‍⭐️
  • В чем проблема холодного запуска? ‍⭐️
  • Возможные подходы к решению проблемы холодного запуска? ‍⭐️🚀

Временная последовательность

  • Что такое временной ряд? 👶
  • Чем временной ряд отличается от обычной задачи регрессии? 👶
  • Какие модели для решения задач временных рядов вы знаете? ‍⭐️
  • Если в нашей серии есть тенденция, как мы можем ее устранить? И зачем нам это делать? ‍⭐️
  • У вас есть ряд только с одной переменной «y», измеренной в момент времени t. Как предсказать «y» в момент времени t + 1? Какие подходы вы бы использовали? ‍⭐️
  • У вас есть серия с переменной «y» и набором функций. Как вы предсказываете «y» в момент t + 1? Какие подходы вы бы использовали? ‍⭐️
  • Какие проблемы возникают при использовании деревьев для решения задач временных рядов? ‍⭐️

Это был длинный список! Я надеюсь, что вы сочли полезным. Удачи вам с интервью! Вы знаете ответы? Подумайте о том, чтобы внести свой вклад в этот репозиторий на github!

Пост основан на этой ветке в Твиттере и изначально был опубликован на hackernoon.