Перейти к содержимому
На этой странице

Деревья решений и случайный лес

Все темы Data Scientist

Подтемы:

Как строится дерево решений?

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

  1. Выбор признака для разбиения: На каждом узле дерева выбирается признак, по которому данные будут разделены на две или более подгруппы. Этот выбор основывается на критерии разделения, таком как информационная энтропия или критерий Джини.

  2. Выполнение разбиения: Данные разбиваются на подгруппы на основе выбранного признака. Каждая подгруппа соответствует разным значениям выбранного признака.

  3. Рекурсивное построение: разбиения повторяются, пока не достигнута максимальная глубина, дальнейшее разбиение недопустимо или улучшение критерия слишком мало.

  4. Определение класса (для задач классификации) или значения (для задач регрессии)

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


Может ли дерево решений показывать вероятность?

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

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

Стандартные реализации, например DecisionTreeClassifier в scikit-learn, предоставляют predict_proba. Вероятности вычисляются по долям классов в листе с учётом весов объектов. Калибровка может улучшить эти оценки, но не нужна для самого их получения.


Как получается ответ целевой переменной в дереве решений?

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

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

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


Что измеряет энтропия в дереве решений и как она используется при разбиении?

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

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


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

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

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

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

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


За что отвечает L2 регуляризация в дереве?

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

Сложность дерева регулируют max_depth, min_samples_leaf, max_leaf_nodes и обрезкой. В бустингах, например XGBoost, L2-регуляризация может дополнительно штрафовать значения листьев.


На каком условии останавливается построение дерева решений, другими словами, как определяется критерий завершения построения дерева?

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

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

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

  3. Минимальное уменьшение неопределенности: Построение дерева может остановиться, если дальнейшее разделение узла не приводит к достаточному уменьшению неопределенности (например, энтропии или критерия Джини). Это помогает предотвратить лишние разбиения, которые не улучшают качество модели.

  4. Количество узлов/листьев: Можно также задать максимальное количество узлов или листьев в дереве. Это также может быть критерием останова для построения дерева.


Что будет с метрикой качества если убрать одно случайное дерево из случайного леса и бустинга?

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


Что лежит в листьях дерева?

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


Чем pre-pruning отличается от post-pruning дерева?

Pre-pruning ограничивает дерево во время роста через max_depth, min_samples_leaf, минимальный gain и похожие параметры. Это дешевле, но раннее локальное решение может не дать построить полезную ветвь. Post-pruning сначала растит большое дерево, затем удаляет ветви по критерию сложности, например cost-complexity pruning. Силу pruning выбирают на validation или кросс-валидации. Более сильное ограничение повышает bias и обычно снижает variance; оптимум зависит от шума и объема данных.


Почему жадное построение дерева не гарантирует глобально лучшую структуру?

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


Что такое случайный лес, как строится?

Случайный лес - это ансамблевый метод машинного обучения, основанный на комбинации нескольких деревьев решений. Он использует метод бэггинга (bootstrap aggregating), чтобы построить ансамбль деревьев решений.

Вот основные шаги построения случайного леса:

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

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

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

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


Каковы плюсы и минусы использования метода случайного леса?

🟢 Плюсы использования метода случайного леса:

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

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

  3. Способность к обработке больших объемов данных: Случайный лес способен обрабатывать большие объемы данных эффективно и параллельно благодаря своей схеме построения.

🔴 Минусы использования метода случайного леса:

  1. Затраты при большом числе деревьев: растут память и время вычислений. Добавление деревьев обычно стабилизирует усреднение; переобучение леса больше связано с данными и сложностью отдельных деревьев.

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

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


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

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


Как добавление дерева влияет на переобучение случайного леса и градиентного бустинга?

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

Случайный лес (Random Forest) : Поскольку случайный лес строится на основе ансамбля деревьев решений, добавление нового дерева улучшает стабильность модели и снижает ее склонность к переобучению. Каждое новое дерево вносит свой уникальный вклад в ансамбль, усиливая обобщающую способность модели.

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


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

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

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

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

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

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

  5. Ошибка в коде или реализации модели: Возможно, есть ошибка в коде или реализации модели, которая приводит к неправильным выводам.


Какие изменения происходят при добавлении дерева в случайный лес?

При добавлении дерева в случайный лес происходят следующие изменения:

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

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

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

  4. Рост затрат: хранение нового дерева и вычисление его прогноза требуют дополнительной памяти и времени.


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

При увеличении глубины деревьев в случайном лесе происходят следующие изменения:

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

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

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

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


Как происходит подбор подмножества признаков для дерева случайного леса - один раз перед построением дерева или на каждом разбиении?

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

Собеседования: Data Science

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

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

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

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Scientist, ML-инженер. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

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