A engenharia de recursos ainda é útil ao usar o XGBoost?

9

Eu estava lendo o material relacionado ao XGBoost. Parece que esse método não requer escala variável, pois é baseado em árvores e pode capturar interações complexas de padrões de não linearidade. E ele pode lidar com variáveis ​​numéricas e categóricas e também parece que variáveis ​​redundantes não afetam muito esse método.

Geralmente, na modelagem preditiva, você pode fazer uma seleção entre todos os recursos que possui e também pode criar alguns novos recursos a partir do conjunto de recursos que possui. Portanto, selecionar um subconjunto de recursos significa que você acha que há alguma redundância em seu conjunto de recursos; criar alguns novos recursos do conjunto de recursos atual significa que você faz algumas transformações funcionais nos recursos atuais. Então, esses dois pontos devem ser abordados no XGBoost. Então, isso significa que, para usar o XGBoost, você só precisa escolher esses parâmetros de sintonia sabiamente? Qual é o valor de fazer engenharia de recursos usando o XGBoost?

KevinKim
fonte
Se você olhar para a pequena melhora no desempenho, é melhor interações modelo entre os recursos explicitamente porque as árvores não são bons nisso: stats.stackexchange.com/questions/147594/...
Anton Tarasenko

Respostas:

12

Vamos definir a primeira engenharia de recursos:

  1. Seleção de recursos
  2. Extração de recursos
  3. Adicionando recursos por meio do conhecimento de domínio

O XGBoost faz (1) para você. O XGBoost não faz (2) / (3) por você.

Então você ainda precisa fazer a engenharia de recursos. Somente um modelo de aprendizado profundo pode substituir a extração de recursos para você.

FrancoSwiss
fonte
7
  1. Seleção de recursos: o XGBoost faz a seleção de recursos até um nível. Na minha experiência, eu sempre faço seleção de recursos por uma rodada de xgboost com parâmetros diferentes do que eu uso no modelo final. Normalmente, uso números baixos para amostragem de linhas e recursos e árvores que não são profundas e mantêm apenas os recursos que entram no modelo. Em seguida, ajuste com outro modelo. Isso evitou o ajuste excessivo para mim quando o número de recursos era muito alto.
  2. Geração de recursos: XGBoost (classificação, booster = gbtree) usa métodos baseados em árvore. Isto significa que o modelo teria dificuldade sobre as relações de separação tais como ab , a / b e a + b para recursos de um e b . Normalmente, adiciono a interação entre os recursos manualmente ou seleciono os certos com algumas heurísticas. Dependendo da aplicação, isso pode realmente aumentar o desempenho.
Mortezaaa
fonte
2

Qual é o valor de fazer engenharia de recursos usando o XGBoost?

Desempenho talvez?

(Observe que não usamos o XGBoost, mas outra biblioteca de aumento de gradiente - embora o desempenho do XGBoost provavelmente também dependa da dimensionalidade dos dados de alguma forma.)

Temos um conjunto de dados em que cada item consiste em 3 sinais, cada um com 6.000 amostras - ou seja, 18k de recursos. O uso desses recursos leva diretamente idades (dias), então fizemos uma engenharia manual de recursos para reduzir o número de recursos para cerca de 200. Agora, o treinamento (incluindo o ajuste de parâmetros) é uma questão de algumas horas.

Para comparação: há pouco tempo, também começamos a treinar ConvNets com os mesmos dados e os 18k recursos completos (sem engenharia de recursos). Eles atingem a mesma precisão que os modelos de aumento de gradiente após apenas 2 horas de treinamento.

stmax
fonte