- Оригинальный адрес:Data Science and Machine Learning Interview Questions
- Оригинальный автор:George Seif
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:jianboy
- Корректор:yqian1991
Вопросы для интервью по науке о данных и машинному обучению
Ах, ужасное интервью по машинному обучению. На первый взгляд, вы думаете, что знаете все... но когда вы воспользуетесь этим, вы обнаружите многое, чего не знаете!
За последние несколько месяцев я прошел собеседование на несколько вакансий начального уровня, связанных с наукой о данных и машинным обучением. Чтобы дать вам лучшее представление о моем опыте, в настоящее время я нахожусь на последних месяцах моей магистерской программы по машинному обучению и компьютерному зрению в аспирантуре, большая часть моего предыдущего опыта была исследовательской / академической, но 8 месяцев были в стартапах (не связанные с ОД). Эти должности включают профессиональную работу в области науки о данных, машинного обучения и обработки естественного языка или компьютерного зрения. Я брал интервью у крупных компаний, таких как Amazon, Tesla, Samsung, Uber, Huawei и т. д. Также взял интервью у многих стартапов от ранней стадии до зрелых и хорошо финансируемых.
Сегодня я поделюсь с вами всеми вопросами, которые мне задавали на собеседовании, и тем, как с ними справляться. Многие из задач являются общими, а некоторые - базовыми теоретическими, но многие другие очень творческие и новые. Я просто перечислю наиболее распространенные из них, так как существует множество онлайн-ресурсов для получения этих базовых теоретических знаний, и углублюсь в некоторые из менее распространенных и сложных проблем. Я надеюсь, что чтение этой статьи помогло вам преуспеть в собеседованиях по машинному обучению и получить работу своей мечты!
Давайте взглянем:
- В чем разница между смещением и дисперсией?
- Что такое градиентный спуск?
- Объясните проблемы переобучения и недообучения и способы их решения?
- Как решить проблему высокой размерности данных и как уменьшить размерность?
- Что такое регуляризация, почему мы ее используем и приведем несколько примеров распространенных методов?
- Что такое анализ главных компонентов (PCA)?
- Почему ReLU лучше и чаще используется в нейронных сетях, чем Sigmoid?
- Что такое нормализация данных и зачем она нужна?Я думаю, это важно. Нормализация данных — очень важный этап предварительной обработки для масштабирования значений в соответствии с определенным диапазоном, чтобы обеспечить лучшую сходимость во время обратного распространения. Обычно это сводится к вычитанию среднего значения каждой точки данных и делению на его стандартное отклонение. Если мы этого не сделаем, то некоторые функции (функции с большими номерами) будут иметь больший вес в функции стоимости (если функции с более высокой величиной изменяются на 1%, то изменение довольно велико, но для меньших функций оно очень тривиально). Нормализация данных делает все функции одинаково взвешенными.
- Объясните, что такое уменьшение размерности, когда его использовать и в чем преимущества его использования?Уменьшение размерности — это процесс уменьшения количества учитываемых переменных признаков путем получения основных переменных, которые являются важными характеристиками набора данных. Важность признака зависит от того, насколько переменная признака способствует информативному представлению данных, и от того, какой метод вы решите использовать. Решение о том, какую технику использовать, сводится к пробам, ошибкам и предпочтениям. Обычно начинают с линейных методов и переходят к нелинейным, когда результаты показывают, что они не подходят. Преимущества уменьшения размерности: (1) уменьшить необходимое пространство для хранения (2) ускорить вычисления (например, в алгоритмах машинного обучения), меньшая размерность означает меньший объем вычислений, меньшая размерность позволяет использовать более высокие размерности. избыточные функции, такие как хранение размера местности в квадратных метрах и квадратных милях, не имеет смысла (возможно, сбор данных несовершенен) (4) уменьшение размеров данных до 2D или 3D может позволить нам рисовать изображения и визуализировать. изображение и сделать некоторые выводы (5) Слишком много признаков или слишком сложная модель могут привести к переоснащению.
- Что делать с отсутствующими или поврежденными данными в наборе данных?Вы можете найти отсутствующие/поврежденные данные в своем наборе данных и удалить эти строки или столбцы или решить заменить их другими значениями. В Pandas есть два очень полезных метода: isnull() и dropna(), которые могут помочь вам найти столбцы данных с отсутствующими или поврежденными данными и удалить эти значения. Если вы хотите заполнить недопустимые значения значениями-заполнителями (например: 0), вы можете использовать метод fillna().
- Объясните этот алгоритм кластеризации?Я написал статью о5 алгоритмов кластеризации, которые нужно знать ученымпопулярная статья , которая объясняет, что такое алгоритм кластеризации с некоторыми отличными визуализациями.
-
Как бы вы провели исследовательский анализ данных (EDA)?Цель EDA состоит в том, чтобы собрать некоторую информацию, т. е. получить некоторую информацию из данных, прежде чем применять прогностическую модель. По сути, вы хотите делать EDA в стиле «от грубого к точному». Сначала мы получаем некоторые глобальные идеи высокого уровня. Проверьте наличие несбалансированных классов. Просмотрите среднее значение и дисперсию для каждого класса. Прочтите первые несколько строк, чтобы понять, о чем идет речь. запустить команду панд
df.info()
чтобы увидеть, какие функции являются непрерывными, категориальными, их тип (int, float, string). Затем удалите столбцы, которые не нужны для анализа и прогнозирования. Это могут быть просто бесполезно выглядящие столбцы, в которых многие строки имеют одинаковое значение (т.е. это не дает нам много информации), или в нем отсутствует много значений. Мы также можем заполнить пропущенные значения, используя наиболее распространенное значение в столбце или медиану. Теперь мы можем начать делать некоторые базовые визуализации. Начните с высоких размеров. Для классификации небольшого количества групп можно сделать отдельные гистограммы. Закончите с несколькими гистограммами. Взгляните на «общие характеристики» этих гистограмм. Создайте несколько визуализаций этих общих характеристик, чтобы попытаться получить базовые сведения. Теперь мы можем начать конкретизировать. Создавайте визуализации между двумя или тремя объектами одновременно. Как характеристики связаны друг с другом? Вы также можете выполнить PCA (анализ основных компонентов), чтобы увидеть, какие функции содержат больше всего информации. Сгруппируйте некоторые функции вместе, чтобы увидеть, как они связаны друг с другом. Например, что происходит с классом, когда A = 0 и B = 0? А как насчет А = 1 и В = 0? Сравните разные характеристики. Например, если характеристика А может быть «женской» или «мужской», то мы можем построить характеристику А в зависимости от того, в какой хижине они останавливались, и посмотреть, останавливались ли мужчины и женщины в разных хижинах. В дополнение к гистограммам, точечным диаграммам и другим базовым графикам мы также можем рисовать PDF/CDF, наложения и т. д. Просмотрите некоторые статистические данные, такие как столбцы распределения, p-значения и т. д. Наконец пришло время построить модель машинного обучения. Начните с простых вещей, таких как Наивный Байес и Линейная регрессия. Если вы видите, что эти данные сильно нелинейны, используйте полиномиальную регрессию, деревья решений или SVM. Функции могут быть выбраны в зависимости от важности EDA. Если у вас много данных, вы можете использовать нейронные сети. Проверьте кривую ROC, точность и отзыв. - Как узнать, какую модель машинного обучения использовать?Хотя всегда следует помнить о «теореме о бесплатном обеде», существуют некоторые общие рекомендации. Я написал статью о том, как выбрать подходящую модель регрессииздесь. этостатьяТоже хорошо написано.
- Почему мы используем свертку для обработки изображений, а не только слои FC?Это очень интересно, потому что это не тот вопрос, который обычно задают компании. Как и следовало ожидать, этот вопрос я получил от компании, специализирующейся на компьютерном зрении. Этот ответ состоит из 2 частей. Во-первых, свертка сохраняет и кодирует фактическую используемую пространственную информацию изображения. Если мы будем использовать только слои FC, у нас не будет соответствующей пространственной информации. Во-вторых, сверточные нейронные сети (CNN) имеют частично встроенную дисперсию перевода, поскольку каждое ядро свертки действует как собственный детектор фильтра/функции.
- Что делает перевод CNN инвариантным?Как упоминалось выше, каждое ядро свертки действует как собственный детектор фильтра/функции. Итак, предполагая, что вы выполняете обнаружение объекта, не имеет значения, где находится объект на изображении, поскольку мы собираемся применить свертку ко всему изображению в виде скользящего окна.
- Почему у нас есть максимальный пул в классификационных CNN?Опять же, как и следовало ожидать, это роль в компьютерном зрении. Максимальное объединение в CNN позволяет сократить объем вычислений, поскольку карта объектов после объединения становится меньше. Поскольку вы выполняете максимальную активацию, вы не теряете слишком много семантической информации. Существует также теория, что максимальное объединение помогает обеспечить больше преобразований дисперсии для CNN. Проверьте этот пост от Эндрю Нг оПреимущества максимального объединенияотличное видео.
- Почему сегментированные CNN обычно имеют стиль/структуру кодер-декодер?Кодер CNN в основном можно рассматривать как сеть извлечения признаков, в то время как декодер использует эту информацию для прогнозирования сегментов изображения путем «декодирования» признаков и масштабирования до исходного размера изображения.
- В чем смысл остаточной сети?Главное, что делают остаточные соединения, — это разрешает прямой доступ к функциональности из предыдущих слоев. Это облегчает распространение информации по сети. очень интереснобумагаОписывает, как использовать локальные пропущенные соединения для создания сети с общей многопутевой структурой, которая обеспечивает возможность распространения нескольких путей по сети.
- Что такое нормализация партии? Почему это работает?Обучение глубоких нейронных сетей усложняется тем, что входное распределение каждого слоя изменяется во время обучения по мере изменения параметров предыдущего слоя. Затем идея состоит в том, чтобы нормализовать входные данные каждого слоя так, чтобы их средняя выходная функция активации была равна нулю, а стандартное отклонение равнялось 1. Это делается для каждой отдельной мини-партии на каждом слое, т. е. среднее значение и дисперсия этой мини-партии вычисляются отдельно, а затем нормализуются. Это похоже на нормализацию сетевого ввода. Какая от этого польза? Мы знаем, что нормализация входных данных сети помогает ей обучаться. Но сеть — это просто набор слоев, где выход одного слоя становится входом следующего слоя. Это означает, что мы можем рассматривать любой слой нейронной сети как первый слой меньшей последующей сети. Рассматривая ряд нейронных сетей, питающих друг друга, мы нормализуем выходные данные одного слоя перед применением функции активации, которая затем передается на следующий слой (подсеть).
- Как бы вы поступили с несбалансированным набором данных?у меня естьстатьяКстати говоря, посмотрите раздел №3 :)
- Почему вы должны использовать много маленьких ядер свертки, таких как 3x3, вместо нескольких больших?это вБумага VGGNetхорошо объясняется в . Есть две причины: во-первых, вы можете использовать несколько меньших ядер вместо нескольких больших, чтобы получить то же самое рецептивное поле и захватить больше пространственного контекста, но с меньшими ядрами вы используете меньше параметров и вычислений. Во-вторых, поскольку с меньшими ядрами вы будете использовать больше фильтров, вы сможете использовать больше функций активации, поэтому ваша CNN сможет изучить более различительную функцию отображения.
- **Есть ли у вас какие-либо другие проекты, связанные с этим? **Здесь вы по-настоящему поймете связь между вашими исследованиями и вашим бизнесом. Есть ли у вас какие-либо навыки, которым вы научились или которые могут иметь отношение к вашему бизнесу или должности, на которую вы претендуете? Это не обязательно должно быть на 100% точным, просто в каком-то смысле релевантным, чтобы вы могли продемонстрировать, что сможете внести значительный вклад напрямую.
- Объясните свое текущее магистерское исследование? Что полезно? что нет? Будущее направление?Аналогично предыдущему вопросу!
в заключении
Вы все уже должны знать! Все вопросы на собеседовании, которые у меня возникают при приеме на работу в области науки о данных и машинного обучения. Надеюсь, вам понравилась эта статья и вы узнали что-то новое и полезное! Если эта статья действительно полезна для вас, пожалуйста, поставьте мне лайк.
Если вы обнаружите ошибки в переводе или в других областях, требующих доработки, добро пожаловать наПрограмма перевода самородковВы также можете получить соответствующие бонусные баллы за доработку перевода и PR. начало статьиПостоянная ссылка на эту статьюЭто ссылка MarkDown этой статьи на GitHub.
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из ИнтернетаНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.