Будет ли возможен / практичен случайный лес с несколькими выходами?

17
  1. Случайные леса (RF) - это конкурентный метод моделирования / добычи данных.

  2. Модель RF имеет один выход - переменную выход / прогноз.

  3. Наивный подход к моделированию нескольких выходов с RFs должен был бы построить RF для каждой выходной переменной. Таким образом, у нас есть N независимых моделей, и там, где есть корреляция между выходными переменными, у нас будет избыточная / дублирующаяся структура модели. Это может быть очень расточительно. Также, как правило, большее количество переменных модели подразумевает более подходящую модель (меньшее обобщение). Не уверен, что это применимо здесь, но, вероятно, это так.

В принципе, мы могли бы иметь RF с несколькими выходами. Переменная предсказания теперь является вектором (n-кортеж). Узлы решений в каждом дереве решений теперь разделяют набор векторов цели / прогнозирования на основе порогового вектора, я полагаю, что этот порог принят за плоскость в n-мерном пространстве, и поэтому мы можем определить, какая сторона порога вектор каждый из целевых векторов включен.

Оптимальным значением прогноза для каждой стороны разделения решения является среднее значение (центр тяжести), рассчитанное для векторов на каждой стороне.

Нахождение оптимальной точки разделения при работе с отдельными переменными тривиально и вычислительно быстро / эффективно. Для n-кортежа мы не можем найти оптимальное разбиение (или, по крайней мере, оно становится вычислительно неосуществимым при увеличении N), но мы можем найти почти оптимальное разбиение, используя метод типа Монте-Карло (или некоторый гибрид Монте-Карло и локального обход градиента).

Будет ли это на самом деле работать? То есть будет ли он просто отображать тренировочные пары без обобщения? Эта техника уже существует под другим именем?

Возможно, вы также захотите рассмотреть, как это относится к нейронным сетям, таким как машины с ограниченным доступом Больцмана (RBM) и сети Deep Belief.

redcalx
источник
Погуглив «случайный лес с несколькими метками», вы увидите, что это было сделано несколькими различными способами; во всяком случае, я играл с этим подходом много-двоичный-RFS в поиске музыкальной информации, и это было довольно хорошо.
1
Я бы предложил вам эту статью . Они делают что-то очень похожее на то, что вы описали.
Дмитрий Лаптев
2
Это уже существует в пакете party и некоторых других пакетах (язык R).
Джейс

Ответы:

8

Множество выходных деревьев решений (и, следовательно, случайных лесов) были разработаны и опубликованы. Pierre Guertz распространяет пакет для этого ( скачать). См. Также Segal & Xiao, Многомерные случайные леса, WIREs Data Mining Knowl Discov 2011 1 80–87, DOI: 10.1002 / widm.12 Я полагаю, что последняя версия Scikit-learn также поддерживает это. Хороший обзор современного уровня техники можно найти в диссертации Хенрика Линуссона, озаглавленной «СЛУЧАЙНЫЕ СЛУЧАЙНЫЕ ЛЕСА». Самый простой способ сделать выбор разделения в каждом узле состоит в том, чтобы случайным образом выбрать ОДНУ из выходных переменных, а затем следовать обычному подходу случайного леса для выбора разделения. Были разработаны другие методы, основанные на взвешенной сумме оценки взаимной информации по каждому входному признаку и выходной переменной, но они довольно дороги по сравнению с рандомизированным подходом.

Том Диттерих
источник
-1

Как указано здесь :

Все классификаторы в Scikit-Learn делают мультиклассовую классификацию из коробки.

И это включает в себя случайный лес.

Также на странице: http://scikit-learn.org/stable/modules/tree.html#tree-multioutput есть много ссылок на эту тему.

0asa
источник
8
Быть понятным; вопрос касается регрессии с несколькими выходами .
Redcalx
Извините за задержку в моем ответе, но похоже, что scikit-learn предлагает также многократную регрессию, например: scikit-learn.org/stable/auto_examples/tree/… И в любом случае, есть стратегия, которая состоит из подгонки одного регрессор на цель. Это простая стратегия для расширения регрессоров, которые изначально не поддерживают многоцелевую регрессию: scikit-learn.org/stable/modules/generated/… HTH
0asa