Алгоритм случайного леса оказался одним из самых востребованных алгоритмов в области машинного обучения. Это произошло в первую очередь из-за того, что он всесторонне решает проблему, вызванную его родительским алгоритмом Decision Tree, переобучением. Деревья решений обвиняются в низком смещении и высокой дисперсии, поскольку они оценивают каждый узел в дереве и часто в конечном итоге следуют одному и тому же шаблону, а не обобщают полученные знания.

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

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

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

Я загрузил вышеуказанный набор данных из Kaggle и импортировал все необходимые библиотеки и набор данных. Чтобы получить представление о наборе данных, используется команда df.head ().

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

Модель случайного леса была создана со всеми значениями гиперпараметров по умолчанию, которые доступны в классе RandomForest библиотеки sckitlearn. Первое дерево решений случайного леса было построено с помощью команды model.estimators_ [0].

Точность базовой модели составляет 90,54%, что является хорошим показателем для начала, но с точностью обучения 98,5% мы можем сделать вывод, что модель переобучена. Но если мы точно настроим модель с разными значениями гиперпараметров, мы сможем дополнительно оптимизировать модель с большей точностью, а также в большей степени исключить переоснащение.

Сначала давайте разберемся с различными гиперпараметрами, которые sckitlearn предлагает нам для случайного леса.

(i). n_estimators: Это обозначает количество деревьев решений, которые должны быть созданы в модели случайного леса. Обычно чем больше количество деревьев, тем лучше работает модель. Но большое количество деревьев может замедлить вычисления, поэтому необходимо найти оптимальное значение.

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

(iii). min_samples_split: указывает минимальное количество выборок, которые должны присутствовать в узлах после того, как они отделились от родительского узла. Если это условие не выполняется, то разделение на родительском узле не произойдет.

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

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

(vi). bootstrap = Верно или Неверно. Значение по умолчанию для начальной загрузки - Истина, но для отключения начальной загрузки мы можем присвоить ему значение Ложь, и весь набор данных будет учитываться при формировании Деревьев решений.

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

После создания модели с оптимальными значениями гиперпараметров было замечено, что точность модели увеличилась на 0,9%. Даже точность обучения снизилась до 95,7%, что указывает на то, что переобучение также было учтено.

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