Floresta aleatória vs regressão

21

Eu executei um modelo de regressão OLS no conjunto de dados com 5 variáveis ​​independentes. As variáveis ​​independentes e a variável dependente são contínuas e estão relacionadas linearmente. OR Square é de cerca de 99,3%. Mas quando eu executo o mesmo usando floresta aleatória em R, meu resultado é '% Var explicado: 88,42'. Por que o resultado aleatório da floresta seria tão inferior à regressão? Minha suposição era que a floresta aleatória seria pelo menos tão boa quanto a regressão OLS.

user28906
fonte
4
Se seu objetivo é prever, um R-quadrado mais alto pode ser devido a um ajuste excessivo. Tente comparar as previsões de RN com as previsões de regressão usando a validação cruzada.
Manoel Galdino

Respostas:

27

Como não sei exatamente o que você fez, seu código-fonte me ajudaria a adivinhar menos.

Muitas florestas aleatórias são essencialmente janelas nas quais se supõe que a média represente o sistema. É uma árvore CAR super glorificada.

Digamos que você tenha uma árvore CAR de duas folhas. Seus dados serão divididos em duas pilhas. A saída (constante) de cada pilha será sua média.

Agora vamos fazer isso 1000 vezes com subconjuntos aleatórios dos dados. Você ainda terá regiões descontínuas com resultados médios. O vencedor em um RF é o resultado mais frequente. Isso apenas "confusa" a fronteira entre as categorias.

Exemplo de saída linear por partes da árvore CART:

Digamos, por exemplo, que nossa função é y = 0,5 * x + 2. Um gráfico parecido com o seguinte: figura 1

Se modelássemos isso usando uma única árvore de classificação com apenas duas folhas, primeiro encontraríamos o ponto de melhor divisão, divisão nesse ponto e, em seguida, aproximaríamos a saída da função em cada folha como a saída média sobre a folha.

enredo com CART trivial

Se fizermos isso novamente com mais folhas na árvore CART, poderemos obter o seguinte: insira a descrição da imagem aqui

Por que florestas CAR?

Você pode ver que, no limite de folhas infinitas, a árvore CART seria um aproximador aceitável.

O problema é que o mundo real é barulhento. Gostamos de pensar em meios, mas o mundo gosta tanto da tendência central (média) quanto da tendência de variação (std dev). Há barulho.

O mesmo que confere à árvore CAR uma grande força, sua capacidade de lidar com a descontinuidade, a torna vulnerável à modelagem de ruído como se fosse um sinal.

Então Leo Breimann fez uma proposição simples, mas poderosa: use os métodos do Ensemble para tornar as árvores de Classificação e Regressão robustas. Ele pega subconjuntos aleatórios (um primo de reamostragem de bootstrap) e os usa para treinar uma floresta de árvores do CAR. Quando você faz uma pergunta sobre a floresta, a floresta inteira fala e a resposta mais comum é tomada como saída. Se você estiver lidando com dados numéricos, pode ser útil considerar a expectativa como a saída.

Portanto, para o segundo gráfico, pense em modelar usando uma floresta aleatória. Cada árvore terá um subconjunto aleatório dos dados. Isso significa que a localização do "melhor" ponto de divisão varia de árvore para árvore. Se você fizesse um gráfico da produção da floresta aleatória, à medida que se aproxima da descontinuidade, os primeiros ramos indicarão um salto, depois muitos. O valor médio nessa região percorrerá um caminho sigmóide suave. O bootstrapping convolve com um gaussiano, e o desfoque gaussiano nessa função de etapa se torna um sigmóide.

Linhas de fundo:

Você precisa de muitos galhos por árvore para obter uma boa aproximação a uma função muito linear.

Existem muitos "discadores" que você pode alterar para impactar a resposta e é improvável que você tenha definido todos eles com os valores adequados.

Referências:

EngrStudent - Restabelecer Monica
fonte
A regressão florestal RANDOM não é realizada com funções constantes por partes, o que obviamente é um ajuste inadequado aos dados relacionados linearmente?
precisa saber é o seguinte
Eu acho que estamos dizendo a mesma coisa. Qual constante é aquela usada? direita.
EngrStudent - Reintegrar Monica
Se eu pensasse que estávamos dizendo a mesma coisa, eu o colocaria como um comentário. Eu não entendo sua resposta. Minha resposta explica que os dados dos OPs são lineares e se encaixam tão mal por uma função constante por partes.
precisa saber é o seguinte
@ seanv507 O benefício do RF é que as múltiplas árvores, ajustadas a (subconjuntos aleatórios de) versões perturbadas dos dados, calculam a média das descontinuidades. O resultado é uma aproximação melhor à linha suave subjacente do que o que uma única árvore produziria.
Hong Ooi
É essencialmente a reamostragem de autoinicialização em uma árvore de regressão. Uma das coisas que eu não gosto no bootstrap é que a distribuição uniforme conta como um prévio informativo. O caso ideal não é um prévio não informativo?
EngrStudent - Reintegrar Monica
7

Percebo que essa é uma pergunta antiga, mas acho que mais deve ser acrescentado. Como @Manoel Galdino disse nos comentários, geralmente você está interessado em previsões de dados invisíveis. Mas essa pergunta é sobre desempenho nos dados de treinamento e a pergunta é por que a floresta aleatória tem um desempenho ruim nos dados de treinamento ? A resposta destaca um problema interessante com classificadores ensacados, que muitas vezes me causou problemas: regressão à média.

O problema é que classificadores agrupados, como floresta aleatória, feitos com amostras de autoinicialização do conjunto de dados, tendem a apresentar um desempenho ruim nos extremos. Como não há muitos dados extremos, eles tendem a ser suavizados.

Mais detalhadamente, lembre-se de que uma floresta aleatória para regressão calcula a média das previsões de um grande número de classificadores. Se você tem um único ponto que está longe dos outros, muitos dos classificadores não o veem e, essencialmente, eles fazem uma previsão fora da amostra, o que pode não ser muito bom. De fato, essas previsões fora da amostra tenderão a puxar a previsão para o ponto de dados em direção à média geral.

Se você usar uma única árvore de decisão, não terá o mesmo problema com valores extremos, mas a regressão ajustada também não será muito linear.

Aqui está uma ilustração em R. Alguns dados são gerados em que yé uma combinação perfeita de liner de cinco xvariáveis. Em seguida, são feitas previsões com um modelo linear e uma floresta aleatória. Em seguida, os valores dos ydados de treinamento são plotados em relação às previsões. Você pode ver claramente que a floresta aleatória está se saindo mal nos extremos porque pontos de dados com valores muito grandes ou muito pequenos ysão raros.

Você verá o mesmo padrão para previsões em dados invisíveis quando florestas aleatórias forem usadas para regressão. Não sei como evitá-lo. A randomForestfunção em R tem uma opção de correção de viés bruto corr.biasque usa regressão linear no viés, mas na verdade não funciona.

Sugestões são bem-vindas!

beta <- runif(5)
x <- matrix(rnorm(500), nc=5)
y <- drop(x %*% beta)
dat <- data.frame(y=y, x1=x[,1], x2=x[,2], x3=x[,3], x4=x[,4], x5=x[,5])
model1 <- lm(y~., data=dat)
model2 <- randomForest(y ~., data=dat)
pred1 <- predict(model1 ,dat)
pred2 <- predict(model2 ,dat)
plot(y, pred1)
points(y, pred2, col="blue")

insira a descrição da imagem aqui

Solha
fonte
Concordo com sua observação, mas me tornei um fã da regressão de RF em relação à média em áreas com poucos pontos de dados. Bem, se alguém tiver certeza de encontrar uma boa estrutura linear geral até o limite do conjunto de treinamento suportado apenas por alguns pontos de dados, faça uma correção linear e faça com que a RF cuide dos resíduos.
Soren Havelund Welling
2
Obrigado pelo comentário! Tive uma experiência desagradável em que estava dando previsões muito ruins e que estavam me deixando mal. Mas talvez não haja maneira de obter previsões mais precisas para pontos limítrofes sem aumentar a variação.
quer
Um comentário adicional anos depois, notei que a RF tende a ter um desempenho ruim em qualquer lugar onde haja uma ligeira lacuna nos dados. Obviamente, geralmente há menos dados nos extremos de um conjunto de dados, mas de vez em quando você pode acabar com uma lacuna bem no centro. O RF pode causar uma bagunça correta em um conjunto de dados com quaisquer lacunas.
SeldomSeenSlim
2

A floresta aleatória tenta encontrar localidades entre muitos recursos e muitos pontos de dados. Ele divide os recursos e os entrega a diferentes árvores, como você tem um número baixo de recursos, o resultado geral não é tão bom quanto a regressão logística. A floresta aleatória pode manipular variáveis ​​numéricas e categóricas, mas não é boa em lidar com valores ausentes.

Abbas Shojaee
fonte
0

Penso que a Random Forest (RF) é uma boa ferramenta quando a forma funcional da relação entre Xs e y é complicada (por causa de relações não lineares e efeito de interação). O RF categoriza Xs com base no melhor ponto de corte (em termos de SSE mínimo) e não aplica as informações do pesquisador sobre a forma funcional do relacionamento. Por outro lado, a regressão OLS usa essas informações. No seu exemplo, você sabe qual é exatamente o tipo de relacionamento entre Xs e y e usa todas essas informações no seu modelo de regressão, mas a RF não usa essas informações.

J Faradmal
fonte
-2

Para o básico, a regressão tem bom desempenho sobre variáveis ​​contínuas e floresta aleatória sobre variáveis ​​discretas.

Você precisa fornecer mais detalhes sobre o problema e sobre a natureza das variáveis ​​para ser mais específico ...

Subspaciano
fonte
Todas as variáveis retornos diários de stocks (séries financeiras) ...
user28906
3
"A regressão tem bom desempenho sobre variáveis ​​contínuas e Random Forest sobre variáveis ​​discretas.": Isso não é verdade em geral. Existem distinções em inferência e predição, e mesmo com predição há casos em que a regressão seria preferível à RF.
Adamo