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

Что такое случайный лес?

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

Как вызвать случайность в случайном лесу?

  1. Бэггингиспользуется для внесения случайности в процесс роста дерева путем построения множества ветвей на загруженных выборках обучающих данных. Затем с помощью бэггинга прогнозы, сделанные по всему дереву, объединяются, эта совокупность снижает дисперсию и в целом повышает эффективность прогнозирования.
  2. Случайный лес выполняет рандомизацию с разделением переменных, где каждый раз, когда необходимо выполнить разделение, поиск разделения ограничивается подмножеством всех доступных функций (p). . Он случайным образом выбирает F входных объектов для разделения в каждом узле дерева решений. Значения по умолчанию для подмножества признаков для регрессии — p/3, а для классификации sqrt(p).

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

Как использовать случайный лес?

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(max_depth=2, random_state=0,min_sample_split=5,max_terminal_nodes=10,min_samples_leaf=5)
clf.fit(X, y)
print(clf.predict([[0, 0, 0, 0]]))

Гиперпараметры

Есть несколько настраиваемых гиперпараметров, которые следует учитывать при обучении модели.

Основные гиперпараметры, которые следует учитывать

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

Количество деревьев (n_estimators)

Количество деревьев должно быть достаточно большим, чтобы стабилизировать частоту ошибок. Хорошее эмпирическое правило — начинать с 10-кратного количества функций. Большее количество деревьев обеспечивает надежную и стабильную оценку ошибки, однако время вычисления будет увеличиваться линейно с увеличением количества деревьев.

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

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

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

  1. max_depth: с помощью этого параметра мы можем ограничить глубину роста каждого дерева в случайном лесу. По мере увеличения max_depth производительность набора тестов также увеличивается до определенного момента, а после этого она начинает снижаться, потому что дерево начинает переобучать данные, что означает, что оно не может обобщать невидимые точки данных.
  2. min_sample_split: это означает минимальное количество выборок, необходимое для разделения узла дерева решений. Значение по умолчанию — 2, что означает, что дерево решений в случайном лесу будет продолжать разбивать узел, пока у него есть 2 выборки наблюдения, что означает, что дерево будет продолжать расти и соответствовать данным. Увеличивая min_sample_split, мы можем уменьшить количество разбиений и, следовательно, предотвратить переобучение данных в дереве решений в случайном лесу.
  3. max_terminal_nodes: определяет общее количество конечных узлов в дереве решений. например: если для max_terminal_nodes установлено значение 10 , то дерево решений будет разделяться только до тех пор, пока в конечном узле не будет меньше или равно 10 узлов, после чего оно прекратит разделение, что позволит избежать переобучения данных. Но если значение установлено очень низким, как, например, для: 2, оно не соответствует данным.
  4. min_samples_leaf: указывает минимальное количество образцов, которые должны присутствовать в конечном узле после разделения узла. например: если min_samples_leaf = 5 означает, что минимум 5 образцов должны присутствовать в узле, который будет рассматриваться как конечный узел, если он меньше 5, то мы считали его родительский узел конечным узлом. Таким образом, мы контролируем рост дерева, тем самым предотвращая переоснащение. Когда этот параметр низкий, мы переоснащаем модель, когда значение слишком велико, мы недообучаем модель.