Линейные модели, древовидные модели, нейронные сети и многое другое!
Типичный процесс собеседования на должность специалиста по анализу данных включает несколько раундов. Часто один из таких раундов охватывает теоретические концепции, цель которых - определить, знает ли кандидат основы машинного обучения.
В этом посте я хотел бы обобщить весь свой опыт собеседований - как на собеседовании, так и на собеседовании - и составил список из более чем 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.