MO432 -capitulo 14
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 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
regras sao ainda mais simples que arvores
regras são ainda mais faceis de entender que arvores
regras são arvores de profundidade 1
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:
Nao ha pruning.
RF permite computar a importância de atributos - parecido como arvores mas para varias arvores.
Hiperparametros:
Skleanr : https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html
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
Eu esqueci de falar sobre o nearest shrunken centroid junto como o KNN (12.6)
Gaussian process Classifier
Em 2016 SVM era mais rápido. Talvez nao mais verdade hoje usando as implementações de GBM