Алгоритм регресійного дерева з лінійними моделями регресії в кожному аркуші


14

Коротка версія: Я шукаю пакет R, який може будувати дерева рішень, тоді як кожен лист у дереві рішень - це повна модель лінійної регресії. AFAIK, бібліотека rpartстворює дерева рішень, де залежна змінна є постійною у кожному аркуші. Чи є інша бібліотека (або rpartустановка, про яку я не знаю), яка може будувати такі дерева?

Довга версія: Я шукаю алгоритм, який будує дерево рішень на основі набору даних про навчання. Кожне рішення у дереві розбиває набір навчальних даних на дві частини відповідно до умови однієї з незалежних змінних. Корінь дерева містить повний набір даних, і кожен елемент у наборі даних міститься рівно в одному вузлі аркуша.

Алгоритм виходить так:

  1. Почніть з повного набору даних, який є кореневим вузлом дерева. Виберіть цей вузол і назвемо його .N
  2. Створення моделі лінійної регресії , за даними в .N
  3. Якщо з лінійної моделі «s вище деякого порога , то ми зробили з , тому знак , як лист і перейти до кроку 5.R2NθR2NN
  4. Спробуйте випадкових рішень і виберіть одне, що дає найкраще у підвузлах: nR2
    • Виберіть випадкову незалежну змінну , а також випадковий поріг .viθi
    • Рішення розбиває набір даних на два нові вузли, і . Н Н ~ НviθiNN^N~
    • Створення моделі лінійної регресії на обох N і ~ N , і обчислити їх R 2 (назвемо їх R і ~ г ).N^N~R2r^r~
    • З усіх цих кортежів ( v я , θ я , г , ~ г ) , виберіть один з максимальним м я п ( г , ~ г ) . Це дає нове рішення в дереві, і N має два нових підвузли N і ~ N .n(vi,θi,r^,r~)min(r^,r~)NN^N~
  5. Ми закінчили обробку . Виберіть новий вузол N, який ще не був оброблений, і поверніться до кроку 2. Якщо всі вузли були оброблені, алгоритм закінчується.NN

Це буде рекурсивно будувати дерево рішень, яке розбиває дані на більш дрібні частини та обчислює лінійну модель на кожну з цих частин.

Крок 3 - умова виходу, яка заважає алгоритму перевиконати. Звичайно, є й інші можливі умови виходу:

  • Вийдіть, якщо глибина у дереві вище θ d e p t hNθdepth
  • Вийдіть, якщо набір даних у менший за θ d a t a s e tNθdataset

Чи є такий алгоритм у пакеті R?


4
Погляньте на партійний пакет і побачите, чи відповідає це вашим потребам. Він може обробляти ряд типів моделей у вузлах дерев IIRC.
Відновіть Моніку - Г. Сімпсон

Відповіді:


11

Хоча вони працюють інакше, ніж ваш алгоритм, я вважаю, що вам буде цікавим mob () та FTtree. Для мофії Zeileis див. Http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Для FTtree, функціональних дерев Gama реалізація доступна у Weka та, таким чином, у RWeka. Докладні відомості див. У розділі http://cran.r-project.org/web/packages/RWeka/index.html .


1
+1 для mob, що дозволяє підключати практично будь-яку модель до рекурсивної системи розділення
etov

8

Пакет RWeka пропонує безліч методів регресії. Серед них можна знайти M5P (M5 Prime), яка є саме деревною моделлю регресії з лінійними рівняннями в листках. Детальніше про метод M5 див. У публікації .

Приклад коду може бути:

library(RWeka)
M5_model = M5P (Dep_var ~ ., data = train, control = Weka_control(N=F, M=10))
train_predicted = predict(M5_model, train)
test_predicted = predict(M5_model, test)

Якщо ви хочете скористатись ансамблем з мішковиною методом M5, спробуйте щось на кшталт:

M5_bag = Bagging(Dep_var ~ ., data = train, control = Weka_control(P=100, I = 100, W = list("weka.classifiers.trees.M5P", M = 4)))

Щоб побачити параметри керування для моделі M5P, спробуйте:

WOW(M5P)

Якщо ви хочете оптимізувати метод M5, у caretпакеті є рішення для цього :

library(caret)
Optimization = train (Dep_var ~ .,data = train, method = 'M5')

7

Я думаю, що це відповідає на коротку версію вашого питання:

Пакет Cubist підходить для моделей, заснованих на правилах (подібних до дерев) з лінійними моделями регресії в термінальних листах, виправленнями на основі екземпляра та прискоренням.

З погляду завдань на Cran: Машинне навчання


Чи знаєте ви, чи це (схоже на) Quinlan's M5?
Момо

Я знаю, що це схоже на M5 Quinlan, наскільки кубіст Quinlan схожий на M5 Quinlan .
Джек Райан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.