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

Техника, используемая в случайных лесах, представляет собой метод ансамбля, называемый мешковиной. Методы ансамбля обучают многих слабых учеников и объединяют их в одного сильного ученика; при упаковке слабые учащиеся генерируются путем использования усиленной выборки данных для обучения одного «базового учащегося». Затем результат этих базовых учащихся объединяется со (взвешенным) средним, чтобы получить прогноз.

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

Как лучше сочетать деревья?

Возникает один вопрос - почему мы просто усредняем все деревья? Нельзя ли сделать что-то более «умное»? Ответ конечно - да, немного.

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

Опасность этой идеи состоит в том, что вы усложняете свою модель, что может привести к переобучению. Я настоятельно рекомендую тщательно проверять эти деревья.

Случайные леса как метод кодирования

Другой способ взглянуть на этот метод - перенести все достоверности случайных деревьев в новый столбец, аналогично тому, как это делают PCA или t-SNE. Мы вводим данные и получаем новое представление данных, которое лучше коррелирует с целевой переменной. Это то, что я называю «кодировщиком». Прелесть этого кодировщика заключается в том, что вы можете вводить номинальные данные и получать числовые. Это позволяет нам передавать результат этого кодирования обучающимся, таким как нейронные сети и SVM.

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

Реализация в RapidMiner

Недавно я добавил новый оператор, чтобы упростить его использование в RapidMiner. RapidMiner - это платформа для анализа данных с открытым исходным кодом, которая позволяет анализировать данные без использования кода. Оператор написан на Java, его можно скачать с торговой площадки. Оператор берет набор данных и модель случайного леса и выполняет преобразование.

Конечно, также можно быстро реализовать это в Python или R путем итерации по поддеревьям в ансамбле.