MO432 -capitulo 14

Jacques Wainer

14.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 torna os 2 conjuntos resultantes mais puros

Um conjunto de dados de uma so classe é o mais puro possível. Um conjunto com a mesma quantidade de dados para cada classe é o mais impuro possivel

Varias medidas de pureza:

ganho pureza = pureza depois - pureza antes

pureza depois = media ponderada pelo tamanho dos conjuntos da pureza de cada conjunto

Ha duas familias principais de arvores:

A principal diferença é que CART são decisões binarias (if-else) e C4.5 sao multiway para dados categóricos (switch ou case)

Construção da árvore é a mesma que para a regressão

o pruning da arvore é o mesmo que para a regressão

bom: arvores são interpretáveis

bom: arvores são super rápidas para rodar (if-then-elses)

bom podem tratar de valores faltantes tanto no treino como no teste

bom podem tratar de variáveis numéricas sem padronização (nao ha noção de distancia)

bom podem tratar de variavies categóricas diretamente. Veja discussão no capitulo pg 373 - grouped categories (independent categories é com dummy variables) O SKlearn NAO implementa o grouped categories.

ruim: arvores pode podem ter alto erro - não são classificadores muito elaborados

ruim: Instáveis. Pequenas mudanças nos dados gera uma arvore possivelmente muito diferente - pense no 1o split - uma pequena diferença nos ganhos de pureza pode gerar outra decisão do split, que gera arvores totalmente diferentes

Hiperparametros: max-depth ou min-samples-split

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

14.2 pouco interessante

regras sao ainda mais simples que arvores

regras são ainda mais faceis de entender que arvores

regras são arvores de profundidade 1

14.3 PULE

14.4 Importante

Random forest, como na regressão é um bagged de arvores de decisão, onde há um truque para que as arvores sejam bem diferentes entre si

Bagging: use boostrap para selecionar um “novo” conjunto de treino (do original) e treine uma arvore nova nele.

Nem todas os atributos são testados em cada split. Apenas max_features aleatórios são testado (default \sqrt{d}) Na regressão era d.

Igual a regressão:

Skleanr : https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

14.5 Importante

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 classificador.

(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 duas implementações de gbm que nao estão no SKlearn e que são muito famosas

Comparação das implementações

Blog sobre gbms

14.6 Pule

14,7 Pule

Outros classificadores

Eu esqueci de falar sobre o nearest shrunken centroid junto como o KNN (12.6)

Gaussian process Classifier

Rotation forest

Quais são os melhores Classificadores

Em 2016 SVM era mais rápido. Talvez nao mais verdade hoje usando as implementações de GBM

Uma comparação e outra