Uma variação mais eficaz da estrutura de reforço de gradiente que inclui um solucionador de modelo linear e os métodos de aprendizado de árvores é chamado de reforço de gradiente extremo (XGBoost). É desenvolvido no algoritmo de reforço de gradiente, que produz um conjunto de modelos de previsão fracos, geralmente árvores de decisão, como um modelo de previsão. Competições para aprendizado de máquina geralmente apresentam XGBoost. É crucial compreender as causas e mecanismos por trás da operação bem -sucedida deste algoritmo. Aprenderemos sobre árvores de decisão, aumento de gradiente, xgboost e sua implementação neste artigo.
O que são árvores de decisão?
Um algoritmo de computador chamado algoritmo de árvore de decisão cria uma árvore de decisão a partir de um conjunto de dados fornecido. O conjunto de dados terá atributos, às vezes conhecido como recursos ou características, e um atributo de classe. Alvo e resultado são outras palavras para características de classe. Essa característica é o que esperamos antecipar. O algoritmo de árvore de decisão cria um modelo de árvore de decisão. Um nó raiz, nós foliares e bordas compõem o modelo de árvore de decisão. O algoritmo de árvore de decisão é recursivo, o que significa que se chama novamente e continua processando os dados até que uma condição de interrupção seja satisfeita.
Exemplo de árvore de decisão da Wikipedia
O que está aumentando o gradiente?
Para problemas de regressão e classificação, o aumento do gradiente é uma técnica de aprendizado de máquina que gera um modelo na forma de um grupo de modelos de previsão fracos, geralmente árvores de decisão. Semelhante a outras técnicas de reforço, ele constrói o modelo em estágios, mas as generaliza, permitindo a otimização de qualquer função de perda. Três processos essenciais estão envolvidos no aumento do gradiente:
- Otimizar uma função de perda é o primeiro passo que deve ser dado. Uma função de perda diferenciável é necessária. Quão bem um modelo de aprendizado de máquina se encaixa nos dados para um fenômeno específico é determinado por sua função de perda.
- Usar um aluno fraco é o segundo passo. Uma árvore de decisão serve como aprendiz fraco em boosters de gradiente. As árvores de regressão que produzem valores reais para divisões e cuja saída podem ser adicionadas são usadas especificamente, permitindo a adição de saída de modelos sucessivos para corrigir resíduos em previsões da iteração anterior.
- O terceiro passo envolve adicionar muitos alunos fracos. Um por um, as árvores de decisão são adicionadas. Ao adicionar árvores, uma abordagem de descida de gradiente é utilizada para reduzir a perda. O componente de gradiente dos boosters de gradiente é que. No aprendizado de máquina, a otimização de descida de gradiente é frequentemente empregada para identificar os parâmetros conectados a um único modelo que aprimora uma função de perda específica.
O que é xgboost?
Um módulo Python para executar o aumento do gradiente é chamado XGBoost (reforço de gradiente extremo). As árvores de decisão impulsionadas por gradiente servem como sua fundação. É um algoritmo de reforço que aumenta a robustez e a precisão do modelo em várias plataformas competitivas como Kaggle. Os melhores algoritmos para dados estruturados ou tabulares pequenos e médios são baseados em árvores de decisão. A construção do modelo usando XGBoost é rápida e eficaz.
Onde podemos usar xgboost?
- Em caso de grande número de observações nos dados de treinamento.
- Número de recursos são menos que o número de observações.
- Quando a métrica de desempenho do modelo está em consideração.
Implementação em Sklearn
# Importando bibliotecas necessárias
de Sklearn.Os conjuntos de dados importam make_classification
de Sklearn.Model_Selection Importar Train_test_split
importar xgboost
# Criando o conjunto de dados
X, y = make_classification (n_samples = 1000, n_features = 5, n_informative = 2, n_redundant = 0, random_state = 0, shuffle = false)
Print ('Recursos são', x [: 20])
Imprimir ('etiquetas são', y [: 20])
# dividindo os dados em trem e teste
X_train, x_test, y_train, y_test = trens_test_split (x, y, test_size = 0.2, random_state = 0)
# Criando a instância XGBOOST
xgb_classifier = xgboost.Xgbclassifier ()
# Ajustando o modelo nos dados do trem
xgb_classifier.ajuste (x_train, y_train)
# fazendo as previsões
previsões = xgb_classifier.prever (x_test)
# Impressão de 20 previsões
Impressão ('previsões são', previsões [: 20])
Saída
Os recursos são [-1.66853167 -1.29901346 0.2746472 -0.60362044 0.70885958]
[-2.9728827 -1.08878294 0.42281857 -3.11685659 0.64445203]
[-0.59614125 -1.37007001 -1.91374267 0.66356158 -0.1540724]
[-1.06894674 -1.17505738 1.19361168 -0.09816121 -0.88661426]
[-1.30526888 -0.96592566 -0.14735366 1.05980629 0.02624662]
[-2.18261832 -0.97011387 -0.11433516 0.74355352 0.21035937]
[-1.24797892 -1.13094525 -0.00592741 1.36606007 1.55511403]
[-1.35308792 -1.06633681 0.61332623 -0.28595915 1.49691099]
[-1.13449871 -1.27403448 1.18311956 0.71889717 -1.21607658]
[-0.38457445 -1.08840346 0.1406719 -0.74367217 -0.15901225]
[-1.0106506 -0.52017071 0.24005693 0.10015941 -0.47517511]
[-0.58310155 -1.18236446 1.27295375 -1.69613127 0.73018353]
[-0.29760388 -1.45995253 -1.85748327 0.38259814 -0.88690433]
[-0.86057581 -1.01530275 0.87830376 0.08645252 0.24770638]
[-2.47091771 -1.21696663 -1.01827933 -0.65457013 0.20721739]
[-1.33090082 -1.01316175 0.58356993 2.92909624 0.22285832]
[0.74840002 -0.91748674 0.97603753 -1.55693393 -1.32989186]
[-1.05483466 -0.9320408 -0.35549477 -1.1974277 1.48639925]
[-2.19888276 -1.17327072 -0.41021869 1.38218189 1.48678247]
[-0.68305478 -0.94253787 0.04277972 0.50179975 -0.05609947]]
Os rótulos são [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
As previsões são [1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0]
Conclusão
Discutimos o algoritmo XGBOOST no aprendizado de máquina. Esta é uma implementação da técnica de reforço de gradiente, que é amplamente utilizada nas competições hoje. Vimos por que esse algoritmo tem um bom desempenho e o que ele usa sob o capô. Por fim, também passamos pela implementação do XGBoost em Python.