• Nenhum resultado encontrado

Decision Trees, Random Forests e Ensemble Vitor Pohlenz e prof. Edson Cilos Vargas Júnior (supervisão) Universidade Federal de Santa Catarina

N/A
N/A
Protected

Academic year: 2021

Share "Decision Trees, Random Forests e Ensemble Vitor Pohlenz e prof. Edson Cilos Vargas Júnior (supervisão) Universidade Federal de Santa Catarina"

Copied!
62
0
0

Texto

(1)

Decision Trees, Random Forests e

Ensemble

Vitor Pohlenz e prof. Edson Cilos Vargas Júnior (supervisão) Universidade Federal de Santa Catarina

(2)

Ensemble

Decision Trees

I Aplicações

I Entropia e Coeficiente de Gini I Limitações

Ensemble Learning

I Pasting and Bagging

I Random Patches and Random Subspaces Random Forests I Normal Trees I Extra-Trees Ensemble Boosting I AdaBoost I Gradient Boosting

(3)

Muitos dos exemplos foram adaptados dos arquivos disponibilizado no Github por Aurélien Géron.

Os arquivos originais estão disponíveis em: I https://github.com/ageron/handson-ml

(4)
(5)
(6)

Usos

I Podem ser utilizadas para regressão ou classificação

I Não requerem centralização ou escalonamento de atributos I As decisões são facilmente interpretáveis

Exemplo Data set Iris

I Usando apenas 2 features: ”petal length” e ”petal width”

(7)
(8)

"White box" I Decision Trees

I Regras intuitivas e fáceis de interpretar

I O conjunto de regras pode ser seguido "à mão"

"Black box"

I Randon Forests e Redes Neurais

I É possível checar os cálculos e os parâmetros das predições, porém é difícil explicar estas em termos simples.

(9)

I Scikit-Learn usa o algoritmo CART(Classifcation and Regression Tree)

I Produz apenas árvores binárias(2 ramos) de respostas "SIM|NAO" I Existem outros algoritmos, por exemplo o ID3 que produzem

(10)

Algoritmo CART

I É um "greedy algorithm"

I Checa apenas a melhor separação em cada level sequencialmente, sem considerar os leveis subjacentes. Explicitado na sua função custo (1).

I Não garante solução ótima mas sim uma solução "razoavelmente boa"

I Solução ótima é intratável devido à complexidade(NP-Complete problem).

(11)

Função Custo CART J(k,tk) = mmLGL+mmRGR;                 

GL/R mede a impureza do subset esquerdo/direito(left/right)

mR/L é o número de instâncias do subset esquerdo/direito(left/right)

k é a feature em questão tk é o limiar(threshold)

m é o número de instâncias (1)

(12)

Figura 4: Limiares de decisão do Exemplo. OBS: O último tracejado seria caso

(13)

Algoritmo CART

I As predições são feitas rapidamente, pois se checa apenas 1 feature por nó.

I Complexidade: O(log2(m))

I O treinamento se torna mais demorado para grandes data sets. Pois em cada nó é comparado n features para as m instâncias

I Complexidade: O(n × m ln(m))

I No Scikit-Learn, usar presort=True pode agilizar o treino caso o conjunto de treinamento seja de alguns milhares(ou menor). Porém irá atrasar consideravelmente se o conjunto de treinamento for muito grande.

(14)

Entropia e Coeficiente de Gini

I Ambos medem a "impureza"de um determinado nó

I Gini é o modo default, porém no Scikit-Learn pode ser mudado para Entropia com hiperparâmetro: criterion = "entropy"

(15)

Entropia

I Entropia é um conceito originado em termodinâmica como uma medida de "desordem"de um sistema.

I Quando a entropia de um sistema é zero, as moléculas estão paradas e bem ordenadas.

Figura 5: Ilustração de Entropia nos

estados físicos de uma substância pura por

Manual da Química Figura 6: Entropia para uma substância composta por Brasil Escola

(16)

Entropia e Coeficiente de Gini Gi = 1 − n X k=1 p2i ,k (2) Hi = − n X k=1 pi ,k6=0 pi ,k· ln(pi ,k) (3) Onde: pi ,k = no de instâncias da classe k no de instâncias no i-ésimo nó

(17)

Exemplo Gini e Entropia

Vamos Calcular um coeficiente de Gini e Entropia do último nó esquerdo da árvore na Figura 3

I Gini = 1 − (0/54)2− (49/54)2− (5/54)2 = 0.1680 I Entropia = −4954ln(4954) −545 ln(545) = 0.3085

(18)

Gini ou Entropia?

I Muitas vezes não faz diferença. Porém quando diferem: I Gini tende a isolar em um ramo a classe mais frequente I Enquanto a Entropia leva à árvores mais balanceadas I Gini geralmente é um pouco mais rápida de se calcular

(19)

Limitações(Instabilidade)

I Utiliza apenas limiares ortogonais, logo é sensível à rotação dos dados

I Uma forma de resolver isso é usar(por exemplo) PCA no treinamento I São sensíveis à pequenas variações no treinamento

I Random Forests limitam a instabilidade usando a média das predições sobre várias árvores

I O algoritmo de otimização usado no treinamento pelo Scikit-Learn é estocástico, logo é importante usar um random state!

(20)

Instabilidade: Variação de uma instância no treino

Figura 7: Alteração dos limiares pela retirada da instância de maior valor do

(21)

Instabilidade: Sensibilidade à rotação

(22)

Regressão J (k, tk) = mL m · MSEL+ mR m · MSER; (4) Onde: ( MSENó =Pi ∈NóyNó− yi)2 ˆ yNó= m1 Pi ∈Nóyi

(23)

Exemplo Regressão

(24)

Regressão

(25)

Regressão

(26)

Aprendizado em Conjunto

I A ideia é treinar vários preditores e então agregar as várias predições em apenas uma predição

I Quanto mais diversificados e diferentes os preditores forem melhor! I O melhor cenário são preditores independentes e erros não

correlacionados

I Difícil na prática pois todos os preditores são treinados com o mesmo(ou partes do mesmo) training set

(27)

Exemplo introdutório

I Vamos supor que temos a nossa disposição vários modelos ruins, que acertam apenas 51% das vezes num problema de classificação simples, com apenas 2 classes.

I Esses modelos, individualmente são apenas 1% melhor que uma moeda honesta...

I Mas e se usarmos 1000 desses modelos e utilizarmos como resposta a votação da maioria?

(28)

Atenção: Isso não é uma prova rigorosa é um exemplo para ilustrar a ideia

Pelo teorema central do limite temos:

B(n, p) para n>30 ∼ N(µ = np, σ2 = np(1 − p)) B(n = 1000, p = 0.51) → N(µ = 510, σ2= 249.9) P(x > 500) = Pz > 500 − 510√ 249.9  = P(z > −0.6326)

(29)
(30)
(31)

Exemplo Introdutório

Dada a tabela anterior temos que:

P(z > −0.6326) = 73.6% Ou seja:

I Se usarmos a votação por maioria dos nossos modelos em vez de suas predições individuais podemos esperar por algo entorno de 74% de acurácia!!

(32)

Exemplo Introdutório

I Infelizmente na prática o aumento da acurácia não seria tão alto quanto nesse exemplo

I Isso porque no exemplo nos consideramos os modelos como se fossem completamente independentes e com erros não

correlacionados

I Porém numa situação real os modelos não seriam completamente independentes visto que são treinados a partir do mesmo conjunto de treinamento...

I Porém ainda podemos esperar que o desempenho do grupo seja melhor geralmente que os desempenhos individuais

(33)

Figura 14: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(34)

Modos de divisão do conjunto de treinamento(Amostragem)

I Pasting: Amostragem sem reposição

I Bagging(Bootstrap Aggregating): Amostragem com reposição I As predições geralmente são agregadas com a moda para

classificação ou com a média para regressão I Moda = "hard voting"

(35)

Bagging

I Apresenta um bias individual "levemente maior"mas a variância do ensemble é menor

I Geralmente se utiliza bagging por resultar em modelos melhores, porém é sempre válido testar

Out-of-bag(oob)

I Devido à amostragem algumas instâncias não são "vistas"pelos preditores(instâncias diferentes para cada preditor)

I Essas instâncias que ficam fora do treinamento do preditor mas pertencem ao conjunto de treinamento podem ser usadas como um "pré-teste"

(36)

Figura 15: Exemplo bagging(com reposição) ou pasting(sem reposição) por Hacker

(37)

Random Patches

I Amostra tanto as intâncias quanto as features Random Subspaces

(38)

I É um método Ensemble de Decision Trees I Algoritmo muito utilizado em Machine Learning

I Utiliza um subset aleatório de features em cada árvore para aumentar a diversidade enquanto divide os nós.

(39)

Figura 16: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn

andTensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems.Sebastopol: O’Reilly Media, Inc, 2017

(40)

Extra-Trees(Extremely Randomized Trees)

I São florestas aleatórias em que os limiares de decisão são escolhidos aleatoriamente, em vez da procura pelo melhor(como Decision Trees regulares fazem)

I São muito rápidas para se treinar(já que não precisa escolher o melhor limiar)

Qual a melhor? Regular ou Extra? I Precisa ser checado em cada caso

(41)

Feature Importance

I No Scikit-Learn é possível estimar a ”importância” de cada feature I Ele faz isso computando a média da profundidade dos nós onde as

features estão em cada árvore

(42)

Importância dos pixels na classicação do dataset MNIST

(43)

Boosting

I Qualquer método Ensemble que combine weak learners em um strong learner

I A ideia geral é treinar os preditores sequencialmente de tal forma que os sucessores tentem corrigir os erros dos predecessores.

(44)
(45)

AdaBoost(Adaptive Boosting)

I A ideia básica é fazer com que os sucessores deem mais atenção às instâncias que os predecessores sofreram underfitting

I Usa uma ponderação dos pesos das instâncias classificadas erradas no treinamento para atualizar o peso dos próximos preditores. I Não pode ser paralelizada, pois o treinamento dos preditores tem

(46)

Figura 19: Extraído de Géron, A. Hands-On Machine Learning with

Scikit-LearnandTensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(47)

Algoritmo: Inicialmente w(i )= m1 rj = Pm i =1 ˆ yj(i )6=y(i ) w(i ) Pm i =1w(i ) (5)

Onde ˆyj(i ) é a predição do preditor para a i-ésima instância I rj pode ser entendida como uma taxa de erro

(48)

Algoritmo

O peso de cada preditor é atualizado com: αj = η ln(

1 − rj

rj

) (6)

I Onde η é a taxa de aprendizagem(default: η = 1) Seguindo a regra: for i = 1, 2, · · · , m w(i ) ← ( w(i ); ˆy(i ) = y(i ) w(i )· eαj; ˆy(i ) 6= y(i ) (7) E por fim: (i ) w(i )

(49)

I Enfim para predizer a classe(no caso de classificação) é utilizado a maioria dos votos ponderados

ˆ y (x) = argmax k N X j=1 ˆ yj(x)=k αj (8)

Onde N é o número total de preditores I Video de 1m53s a 4m56s do Youtube

(50)

Gradient Boosting

I Em vez de atualizar os pesos como o AdaBoost, o Gradient Boosting treina os sucessores com os resíduos(erros residuais) dos predecessores.

(51)

Figura 20: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems.Sebastopol: O’Reilly Media, Inc, 2017

(52)

Figura 21: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems.Sebastopol: O’Reilly Media, Inc, 2017

(53)

Learning Rate

Figura 22: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(54)

Shrinkage: warm_start = True

Figura 23: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(55)

Stochastic Gradient Boosting

I Utiliza uma amostra aleatória do conjunto de treinamento para treinar cada árvore(subsample=True)

(56)

Stacking

I A ideia é criar um ”modelo agregador”

I Em vez de usar métodos de agregação como o hard voting, um novo modelo é treinado para realizar a agregação

(57)

Blender

Figura 24: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 201757/62

(58)

Figura 25: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(59)

Figura 26: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(60)

E se quiser mais de uma camada?

I Dividir o conjunto de treinamento no número de camadas que se deseja no modelo

(61)

Figura 27: Extraído de Géron, A. Hands-On Machine Learning with Scikit-Learn and

TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O’Reilly Media, Inc, 2017

(62)

Obrigado!

Contato:

Referências

Documentos relacionados

Maria José Baldessar (Universidade Federal de Santa Catarina - UFSC) Prof. Milton Roberto Monteiro Ribeiro

For that, salt marsh plants (Phragmites australis) were exposed to elutriate solution doped with a metal (Cu or Cd) or with a metal plus microplastics of polyethylene (PE)

O estudo possibilitou desenvolver um aplicativo com um conjunto de funcionalidades que têm como principais objetivos: informar a provável data do parto; informar

Inicializada no âmbito legal com o encaminhamento ao Congresso Nacional do Projeto de Lei 1.603/96 29 e concretizada com o Decreto 2.208/97 30 , essa reforma explicitava

Se o utilizador selecionar a edição de uma das duas definições inferiores, as definições das predefinições carregam automaticamente as definições visíveis na predefinição

ao setor de Fisiologia Vegetal do Departamento de Biologia da Universidade Federal de Lavras (UFLA), Minas Gerais, com clones pertencentes ao Instituto Agronômico de Campinas

In the end the chosen methodologies to work with where using an ensemble of random forests and the Relief algorithm for feature selection, SMOTE and random under-sampling

Quino (figura 115): exsudado fenólico vermelho escuro comumente encontrado na casca ou nas madeiras de eucalipto. A forma mais encontrada é a anelar, com cerca de 2-3mm de