MO432 -capitulo 8

Jacques Wainer

8.0

Arvores de decisão: nested if-then-else

regras: conjunto de if-then

Arvores de decisão:

mas:

8.1 importante

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

https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html#sklearn.tree.DecisionTreeRegressor

8.2 -PULE

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

8.3 PULE

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.

8.4 Importante Bagging

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

8.5 Importante Random Forest

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.

8.6 Importante Boosting

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

8.7 Pule

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)

Stacking

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

uma pagina

Quais são os melhores regressores

Outros:

Uma comparação e outra

ou