Короткая версия: я ищу R-пакет, который может строить деревья решений, тогда как каждый лист в дереве решений является полной моделью линейной регрессии. AFAIK, библиотека rpart
создает деревья решений, в которых зависимая переменная является постоянной в каждом листе. Есть ли другая библиотека (или rpart
настройка, о которой я не знаю), которая может создавать такие деревья?
Длинная версия: я ищу алгоритм, который строит дерево решений на основе набора обучающих данных. Каждое решение в дереве разделяет набор обучающих данных на две части в соответствии с условием одной из независимых переменных. Корень дерева содержит полный набор данных, и каждый элемент в наборе данных содержится ровно в одном листовом узле.
Алгоритм выглядит так:
- Начните с полного набора данных, который является корневым узлом дерева. Выберите этот узел и назовем его .
- Создание модели линейной регрессии , по данным в .
- Если из N линейной модели «ы выше , чем некоторый порог & thetas ; R 2 , то мы сделали с N , поэтому отметьте N , как лист , и перейти к шагу 5.
- Попробуйте случайных решений и выберите тот, который дает лучший R 2 в подузлах:
- Выберите случайную независимую переменную , а также случайный порог θ i .
- Решение разбивает набор данных N в двух новых узлов, N и ~ N .
- Создание модели линейной регрессии на обоих N и ~ N , и вычислить их R 2 (назовем их R и ~ г ).
- Из всех этих кортежей ( v я , θ я , г , ~ г ) , выберите один с максимальным м я п ( г , ~ г ) . Это дает новое решение в дереве, и N имеет два новых подузлы N и ~ N .
- Мы закончили обработку . Выберите новый узел N, который еще не был обработан, и вернитесь к шагу 2. Если все узлы были обработаны, алгоритм завершается.
Это рекурсивно построит дерево решений, которое разбивает данные на более мелкие части и вычисляет линейную модель для каждой из этих частей.
Шаг 3 - это условие выхода, которое предотвращает переопределение алгоритма. Конечно, есть и другие возможные условия выхода:
- Выход, если глубина в дереве выше θ d e p t h
- Выход, если набор данных в меньше, чем θ d a t a s e t
Есть ли такой алгоритм в пакете R?
источник
Ответы:
Хотя они работают не так, как ваш алгоритм, я считаю, что вам нравятся mob () и FTtree. Для толпы Zeileis' см http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Для FTtree, функциональные деревья Гама реализация доступна в Weka и , таким образом , RWeka. См. Http://cran.r-project.org/web/packages/RWeka/index.html для получения подробной информации.
источник
Пакет RWeka предлагает множество методов регрессии. Среди них вы можете найти M5P (M5 Prime), которая представляет собой модель регрессии на основе дерева с линейными уравнениями в листах. Для получения дополнительной информации о методе M5 см. Публикацию .
Пример кода будет:
Если вы хотите использовать пакетный ансамбль с методом M5, попробуйте что-то вроде:
Чтобы увидеть параметры управления для модели M5P, попробуйте:
Если вы хотите оптимизировать метод M5, для этого есть решение в
caret
пакете:источник
Я думаю, что это отвечает на короткую версию вашего вопроса:
С точки зрения задачи Крана: Машинное обучение
источник