Wersja skrócona: szukam pakietu R, który może budować drzewa decyzyjne, podczas gdy każdy liść w drzewie decyzyjnym jest pełnym modelem regresji liniowej. AFAIK, biblioteka rpart
tworzy drzewa decyzyjne, w których zmienna zależna jest stała w każdym liściu. Czy istnieje inna biblioteka (lub rpart
ustawienie, którego nie znam), która może budować takie drzewa?
Długa wersja: szukam algorytmu, który buduje drzewo decyzyjne na podstawie zestawu danych treningowych. Każda decyzja w drzewie dzieli zestaw danych treningowych na dwie części, zgodnie z warunkiem jednej z niezależnych zmiennych. Katalog główny drzewa zawiera pełny zestaw danych, a każdy element w zestawie danych jest zawarty w dokładnie jednym węźle liścia.
Algorytm wygląda następująco:
- Rozpocznij od pełnego zestawu danych, który jest węzłem głównym drzewa. Wybrać ten węzeł i nazywają to .
- Stworzenie modelu regresji liniowej na podstawie danych w .
- Jeśli z modelu liniowego „s jest wyższa niż pewien próg , potem skończymy z , więc oznaczyćN jak liść i przejść do kroku 5.
- Spróbuj losowych decyzji i wybierz tę, która daje najlepszą w podwęzłach:
R 2
- Wybierz losową zmienną niezależną , a także losowy próg θ i .
- Decyzja dzieli zbiór danych N na dwa nowe węzły, N i ~ N .
- Utwórz modele regresji liniowej zarówno na i i oblicz ich (nazwij je i ). ~ N R2
- Spośród wszystkich krotek wybierz ten o maksymalnej wartości . Daje to nową decyzję w drzewie, a ma dwa nowe podwęzły i .( V I , θ I , r , ~ R ) m iN
- Mamy przetwarzania gotowego . Wybierz nowy węzeł który nie został jeszcze przetworzony i wróć do kroku 2. Jeśli wszystkie węzły zostały przetworzone, algorytm się kończy.
Spowoduje to rekurencyjną budowę drzewa decyzyjnego, które dzieli dane na mniejsze części i oblicza model liniowy dla każdej z tych części.
Krok 3 to warunek wyjścia, który zapobiega nadmiernemu dopasowaniu algorytmu. Oczywiście istnieją inne możliwe warunki wyjścia:
- Wyjdź, jeśli głębokość w drzewie jest wyższa niż
- Wyjdź, jeśli zestaw danych w jest mniejszy niżθ d a t a s e t
Czy w pakiecie R jest taki algorytm?
źródło
Odpowiedzi:
Chociaż działają one inaczej niż algorytm, uważam, że mob () i FTtree będą interesujące. Dla mobów Zeileisa patrz http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf W przypadku FTtree, drzew funkcjonalnych Gamy, implementacja jest dostępna w Weka, a tym samym w RWeka. Szczegółowe informacje można znaleźć na stronie http://cran.r-project.org/web/packages/RWeka/index.html .
źródło
Pakiet RWeka oferuje wiele metod regresji. Wśród nich można znaleźć M5P (M5 Prime), który jest dokładnie opartym na drzewie modelem regresji z liniowymi równaniami w liściach. Więcej informacji na temat metody M5 można znaleźć w publikacji .
Przykładowy kod to:
Jeśli chcesz użyć zestawu do pakowania metodą M5, spróbuj czegoś takiego:
Aby zobaczyć opcje sterowania dla modelu M5P, spróbuj:
Jeśli chcesz zoptymalizować metodę M5, jest na to rozwiązanie w
caret
pakiecie:źródło
Myślę, że to odpowiada na krótką wersję twojego pytania:
Z widoków zadań Cran: Uczenie maszynowe
źródło