Por que a regressão de aumento de gradiente prevê valores negativos quando não há valores y negativos no meu conjunto de treinamento?


8

Como eu aumentar o número de árvores em scikit aprender 's GradientBoostingRegressor, eu recebo previsões mais negativas, mesmo que não existem valores negativos em meu treinamento ou testar set. Eu tenho cerca de 10 recursos, a maioria dos quais são binários.

Alguns dos parâmetros que eu estava ajustando foram:

  • o número de árvores / iterações;
  • profundidade de aprendizagem;
  • e taxa de aprendizado.

A porcentagem de valores negativos parecia máxima em ~ 2%. A profundidade de aprendizado de 1 (tocos) parecia ter o maior% de valores negativos. Esse percentual também parecia aumentar com mais árvores e uma menor taxa de aprendizado. O conjunto de dados é de uma das competições do playground kaggle.

Meu código é algo como:

from sklearn.ensemble import GradientBoostingRegressor

X_train, X_test, y_train, y_test = train_test_split(X, y)

reg = GradientBoostingRegressor(n_estimators=8000, max_depth=1, loss = 'ls', learning_rate = .01)

reg.fit(X_train, y_train)

ypred = reg.predict(X_test)

11
Alguma chance de um exemplo reproduzível com código e dados?
Spacedman

2
qual competição de playground é?
TheAxeR

Respostas:


8

Em geral, os modelos de regressão (qualquer) podem se comportar de maneira arbitrária além do domínio abrangido pelas amostras de treinamento. Em particular, eles são livres para assumir a linearidade da função modelada; portanto, se você, por exemplo, treina um modelo de regressão com pontos:

X     Y
10    0
20    1
30    2

é razoável construir um modelo f(x) = x/10-1que x<10retorne valores negativos.

O mesmo se aplica "entre" seus pontos de dados, é sempre possível que, devido à suposta familiaridade de funções (que podem ser modeladas por um método específico), você obtenha valores "de suas amostras de treinamento".

Você pode pensar sobre isso de outra maneira - "o que há de tão especial nos valores negativos?", Por que você acha estranha a existência de valores negativos (se não fornecidos no conjunto de treinamento) enquanto você não fica alarmado com a existência de digamos. .. valor 2131,23? A menos que seja desenvolvido dessa maneira, nenhum modelo tratará valores negativos "diferentes" dos positivos. Este é apenas um elemento natural dos valores reais que podem ser atingidos como qualquer outro valor.


Com relação ao seu conjunto de perguntas, acho que os valores negativos são mais fáceis de identificar como anomalias, porque eles têm esse "-" na frente deles ou claramente ficam abaixo de zero nos gráficos. A questão poderia ser tão facilmente "Por que a regressão do Gradient Boosting prevê valores anteriormente não vistos?". Talvez você possa tentar expandir isso? Certamente você receberia um voto positivo de mim.
josh

@lejlot - De um modo geral, isso não é verdade. Modelos de regressão com ativações logísticas ou tanh geralmente garantem resultados dentro de alguns limites.
user48956

@ user48956 estados de resposta "podem se comportar de maneira arbitrária", não estou afirmando que você não pode forçar algumas restrições, é claro que pode - responder apenas afirma que não há restrição "dependente de dados" (a menos que você tenha um modelo muito específico construído em construção) - se você adicionar manualmente como especialista - depende de você.
lejlot

5

Lembre-se de que a GradientBoostingRegressor(assumindo uma função de perda de erro ao quadrado) ajusta sucessivamente as árvores de regressão aos resíduos do estágio anterior. Agora, se a árvore no estágio i predizer um valor maior que a variável de destino para um exemplo de treinamento específico, o resíduo do estágio i desse exemplo será negativo e, portanto, a árvore de regressão no estágio i + 1 enfrentará valores de destino negativos (quais são os resíduos do estágio i). Como o algoritmo de reforço adiciona todas essas árvores para fazer a previsão final, acredito que isso possa explicar por que você pode ter previsões negativas, mesmo que todos os valores-alvo no conjunto de treinamento tenham sido positivos, especialmente porque você mencionou que isso acontece mais frequentemente quando você aumenta o número de árvores.


Essa é a resposta correta.
hahdawg
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.