Versão curta: Estou procurando um pacote R que pode construir árvores de decisão, enquanto cada folha na árvore de decisão é um modelo completo de regressão linear. AFAIK, a biblioteca rpart
cria árvores de decisão em que a variável dependente é constante em cada folha. Existe outra biblioteca (ou uma rpart
configuração que eu não conheço) que possa construir essas árvores?
Versão longa: estou procurando um algoritmo que construa uma árvore de decisão com base em um conjunto de dados de treinamento. Cada decisão na árvore divide o conjunto de dados de treinamento em duas partes, de acordo com uma condição em uma das variáveis independentes. A raiz da árvore contém o conjunto de dados completo e cada item no conjunto de dados está contido em exatamente um nó folha.
O algoritmo é assim:
- Comece com o conjunto de dados completo, que é o nó raiz da árvore. Escolha este nó e chamá-lo .
- Criar um modelo de regressão linear nos dados .
- Se do modelo linear de for maior que algum limite , então terminamos com , então marque como uma folha e pule para a etapa 5.
- Tente decisões aleatórias e escolha a que produz o melhor nos subnós:
- Escolha uma variável independente aleatória , bem como um limite aleatório .
- A decisão divide o conjunto de dados de em dois novos nós, e .
- Crie modelos de regressão linear em e e calcule o R ^ 2 (chame-os de \ hat {r} e \ tilde {r} ).
- De todas essas tuplas , selecione aquela com o mínimo máximo (\ hat {r}, \ til {r}) . Isso gera uma nova decisão na árvore e possui dois novos subnós e .
- Temos processamento acabado . Escolha um novo nó que ainda não foi processado e volte para a etapa 2. Se todos os nós tiverem sido processados, o algoritmo será encerrado.
Isso criará recursivamente uma árvore de decisão que divide os dados em partes menores e calcula um Modelo Linear em cada uma dessas partes.
A etapa 3 é a condição de saída, que impede que o algoritmo se ajuste demais. Obviamente, existem outras condições de saída possíveis:
- Saia se a profundidade de na árvore estiver acima de
- Sair se o conjunto de dados em for menor que
Existe um algoritmo desse tipo em um pacote R?
fonte
Respostas:
Enquanto eles funcionam de maneira diferente do seu algoritmo, acredito que você achará mob () e FTtree interessantes. Para o mob da Zeileis, consulte http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Para o FTtree, as árvores funcionais do Gama estão disponíveis uma implementação em Weka e, portanto, em RWeka. Veja http://cran.r-project.org/web/packages/RWeka/index.html para obter detalhes.
fonte
O pacote RWeka oferece muitos métodos de regressão. Entre eles, você encontra o M5P (M5 Prime), que é exatamente o modelo de regressão baseado em árvore com equações lineares nas folhas. Para mais detalhes sobre o método M5, consulte a publicação .
Um exemplo de código seria:
Se você deseja usar o ensacamento ensacado com o método M5, tente algo como:
Para ver as opções de controle para o modelo M5P, tente:
Se você deseja otimizar o método M5, existe uma solução para isso no
caret
pacote:fonte
Acho que isso responde à versão curta da sua pergunta:
Nas visualizações de tarefas do Cran: Machine Learning
fonte