MO432 -capitulo 8
Arvores de decisão: nested if-then-else
regras: conjunto de if-then
Arvores de decisão:
mas:
a escolha do split é a combinação de atributo e valor que minimiza o SSE (equação 8.1)
passo 1: tree growing step: recursivamente split um conjunto de pontos (que minimize o SSE) ate que o conjunto seja pequeno (um hiperparametro)
folhas são a média dos valores dos dados (na folha)
passo 2: pruning - diminuir a arvore para evitar overfitting
NAO precisa entender em detalhes o prunning! Ha varias alternativas. Em geral o objetivo maior de pruning é reduzir a profundidade da arvore - profundidade da arvore indica overfitting (em particular o tamanho das folhas).
Importância de cada atributo: em geral quanto mais acima na arvore mais importante!
arvores são interpretáveis
arvores são super rápidas para rodar (if-then-elses) mas podem ter alto erro
Instáveis: pequenas mudanças nos dados gera uma arvore possivelmente muito diferente - pense no 1o split - uma pequena diferença nos SSE pode gerar outra decisão do split, que gera arvores totalmente diferentes
outras regras diferentes para a seleção do split: GUIDE, conditional inference trees
Hiperparametros: ou max-depth ou min-samples-split
Ideia é que as folhas são regressões lineares e não a media dos dados.
é preciso mudar o critério a ser maximizado nos splits
Cada caminho na arvore é uma regra
Ha técnicas para reduzir o numero de condições de uma regra - numero de condições é indicativo de overfitting.
Ensemble é um conjunto de regressores. O valor final é a media ou uma media ponderada da saída de vários regressores. A ideia geral é que a média de regressores (com diferentes características) é melhor que um classificador por si só. Isso parece ser quase 100% das vezes verdade!!
Bagging é um conjunto de regressores da mesma família que são treinados com dados levemente/um pouco diferentes. Mas so funciona com regressores que tem uma alta variância (mudam muito com mudanças pequenas nos dados).
Bagging usam bootstrap - N dados no conjunto de treino. Amostre N vezes com repetição (pode e provavelmente vai selecionar o mesmo dado mais de uma vez) o conjunto de treino. Use cada uma desses bootstraps para cada regressor.
Hiperparametro : numero de bootstraps.
Quase certamente algum dado do conjunto de treino original nao sera escolhido no bootstrap (bag) . Podemos usar aqueles dados na avaliação do erro do regressor treinado com aquele bag. Tire a média dessas medidas out-of-bag para cada regressor.
fonte boa sobre bagging e outros ensembles
Random forest é um bagging de arvores de decisão com uma modificaçao no split. Nem todas os atributos são testados em cada split. Apenas max_features aleatórios são testados.
Tambem nao ha pruning.
RF permite computar a importância de atributos - parecido como arvores mas para varias arvores.
Hiperparametros:
https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble Ensebles.
Boosting é uma processo sequencial. Use os dados do conjunto de treino que nao foram aprendidos bem (erro alto), aumente a importancia deles no conjunto, e aprenda um novo regressor.
Boosting é mais fácil de entender em classificação (cap 14)
(Em classificação) há duas formulas importantes.
É importante que os regressores do boosting sejam “ruins” (que tenham muitos erros - para ter dados para o próximo conjunto de treino. (weak learner) Arvores de decisão com profundidade curta !
Ha duas versões famosas de boosting
A diferença (ate onde eu sei) é na formula que calcula o peso dos regressores na media ponderada.
sklearn https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble
Adaboost e gradient boost (usar o histgradientboost - mais rápido)
Ha tres implementações de gbm que nao estão no SKlearn e que são famosas
Cubist é um algoritmo complicado que envolve arvores de modelos (ou regras de modelos) e bagging (acho) e prunning.
Na pratica é um algoritmo muito bom para regressão mas ainda não muito usado (não há implementação em sklearn)
Ensemble que vários tipos de regressores mas na saída em vez de tirar a média, use um regressor (de segundo nivel - metalearning) para computar o valor final
Usualmente usa-se 2 conjuntos de treino - um para os regressores de base (1o nivel) e outro para o regressor de 2o nivel
Outros:
ou