Публикация Школы траблшутеров

Взращивание случайных лесов для предсказаний и классификаций

Время чтения: 5 мин 30 сек
18 августа 2026 г. Просмотров: 2

В попытках ускорить обучение машин и улучшить качество результатов учёные создавали новые методы и совершенствовали имеющиеся. Основатель «Школы траблшутеров» Олег Брагинский и ученик Владислав Иванов изучают случайный лес – алгоритм, запустивший очередной виток машинного обучения.

Взращивание случайных лесов для предсказаний и классификаций

Ранее рассмотрели алгоритм построения деревьев решений. В машинном обучении (machine learning) исследователи стремились ускориться: уйти от одиночных стволов, выращиваемых за единицу времени, ко множеству параллельных «посадок» с объединением результата.

На закате предыдущего тысячелетия американский математик Лео Брейман публикует искомый алгоритм – метод случайного леса (random forest). Идея проста: программа выращивает ансамбль решающих деревьев на основе различных критериев, а затем собирает воедино.

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

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

В случайном лесу переобучение – «фича», играющая на руку модели. Программа изучит все возможные зависимости, включая ошибочные. Но последние приемлемы, пока погрешности направлены в разные стороны, поскольку не усиливают конкретные гипотезы.

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

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

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

Деревья в лесу «проводят» голосование на основе полученных разделений. Так программа выбирает самые сильные варианты. Похожий эффект даёт подсказка «Помощь зала» в телеигре «Кто хочет стать миллионером?».

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

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

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

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

Разберём на примере. Есть таблица из 100 строк с данными телеком-компании, часть приведена на рисунке ниже. Задача: подготовить модель, способную предсказывать отток клиентов (churn) и ключевые причины ухода. Полный список характеристик:

  • Internet Speed – скорость предоставляемого соединения
  • Streaming TV – дополнительная услуга потокового ТВ
  • Churn – отток клиентов (1 – клиент ушёл, 0 – остался)
  • Support Tickets – количество обращений в поддержку
  • Tenure – количество месяцев клиента с компанией
  • Customer ID – уникальный идентификатор клиента
  • Tech Support – наличие технической поддержки
  • Monthly Charge – сумма ежемесячного платежа
  • Contract Length – длительность контракта
  • Age – возраст клиента.

На старте известно: из 100 клиентов 35 ушли, 65 продолжают пользование. У покинувших компанию контракты длились месяц, обращений в техническую поддержку больше трёх, платёж – от 70 у.е.

Обучающая выборка – 70 позиций из таблицы, тестовая – 30.

На языке программирования Python с библиотекой machine learning sklearn подготовим код, создающий и обучающий модель методом случайного леса. После обработки получаем дерево:

Ниже представлено полное дерево решений глубиной в 4 уровня, построенное библиотекой matplotlib.

Показатели модели после обучения:

  • точность – 93,33%
  • вероятность ошибки – 6,67%
  • построено деревьев – 100 единиц.

Для тестовой выборки (30 позиций) программа формирует матрицу ошибок. Модель промахнулась лишь дважды.

Также оценили значимость критериев оттока клиентов, результат – на графике ниже. Наиболее важный критерий – Internet Speed (скорость интернета), далее идёт Support Tickets (количество обращений в техническую поддержку) и замыкает тройку Tenure (продолжительность сотрудничества).

Наличие технической поддержки не критично, как и услуги стримингового ТВ (Streaming TV).