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?