Статья взята из источника Daily Dose of Data Science. Оговорюсь сразу: Я новичок в Data Scince и в оформлении статей. Пишу лишь сюда для своих заметок ну и может быть будет кому-то полезно. Прошу сильно не судить!) Случайный лес - это довольно мощная и надежная модель, представляющая собой комбинацию множества различных деревьев принятия решений. Но самая большая проблема заключается в том, что всякий раз, когда мы используем случайный лес, мы всегда создаем гораздо больше базовых деревьев решений, чем требуется. Конечно, это можно настроить с помощью гиперпараметров, но для этого требуется обучение множеству различных моделей случайных лесов, что занимает много . И в этой статье делюсь одним из самых невероятных приемов, которые я недавно нашел для себя: Повышаем точность модели случайного леса. Уменьшаем размер модели RandomForestClassifier. Коренным образом сокращаем время на предсказание. И все это без необходимости повторного обучения модели. Мы знаем, что модель случайного леса представляет собой совокупность множества различных деревьев принятия решений: Финальное предсказание генерируется путем объединения предсказаний от каждого отдельного и независимого дерева решений. Поскольку каждое дерево решений в случайном лесу является независимым, это означает, что каждое дерево решений будет иметь свою собственную точность на тестовых данных, верно? Но это также означает, некоторая часть деревьев решений показывают худшие результаты и часть лучшие результаты. Верно?  Итак, что если мы сделаем следующее:  Мы найдем точность на тестовых данных для каждого дерева решений.  Мы отсортируем точности в порядке убывания.  Мы оставим только «k» наилучших деревьев решений и удалим остальные.  После этого в нашем случайном лесу останутся только деревья решений с лучшими результатами, оцененными на тестовом наборе данных. Круто, не так ли? Это просто. Мы можем построить график кумулятивной точности.  Это будет линейный график, отображающий точность случайного леса: Рассматривая только первые два дерева решений. Рассматривая только первые три дерева принятия решений. Рассматривая только первые четыре дерева принятия решений. И так далее. Ожидается, что точность сначала будет увеличиваться с увеличением числа деревьев решений, а затем уменьшаться. Глядя на этот график, мы можем найти наиболее оптимальное “k” деревьев решений. Давайте посмотрим на его реализацию. Сначала мы тренируем наш случайный лес, как обычно: Далее мы должны вычислить точность каждой модели дерева решений. В sklearn доступ к отдельным деревьям можно получить с помощью атрибута model.estimators_. Таким образом, мы перебираем все деревья и вычисляем их точность тестирования: model_accs - это массив NumPy, который хранит идентификатор дерева и его точность тестирования: Теперь мы должны переставить модели дерева решений в списке model.estimators_ в порядке убывания точности тестирования: Этот список сообщает нам, что 65-я индексированная модель является самой производительной, за ней следует 97-я индексированная и так далее .... Теперь давайте переставим модели деревьев в списке model.estimators_ в порядке model_ids: Сделано! Наконец, мы создаем сюжет, о котором говорилось ранее. Это будет линейный график, отображающий точность случайного леса: Рассматривая только первые два дерева принятия решений. Рассматривая только первые три дерева принятия решений. Рассматривая только первые четыре дерева принятия решений. и так далее. Ниже показан код для вычисления совокупной точности: В приведенном выше коде: Мы создаем копию базовой модели с именем small_model. На каждой итерации мы устанавливаем деревья small_model на первые “k” деревьев базовой модели. Наконец, мы оцениваем small_model только с помощью “k” деревьев. Построив график совокупного результата точности, мы получим следующий график: На графике видно, что максимальная точность теста достигается при рассмотрении только 10 деревьев, что означает десятикратное сокращение количества деревьев. Сравнивая их точность и время выполнения, мы получаем: Мы получаем повышение точности на 3%. время выполнения на предсказание в 6,5 раза быстрее. Обратите внимание что: Мы не проводили повторное обучение и подбор гиперпараметров Отобрав наилучшие деревья мы сократили время на обучение И это круто! Вы можете скачать этот блокнот здесь: Jupyter Notebook. На этом все! Спасибо за прочтение!  Статья взята из источника Daily Dose of Data Science. А какие есть еще решения? Пишите комментарии! Data Scince