DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING UNIVERSITY OF CALIFORNIA, SAN DIEGO La Jolla, California 92093-0114 Techinical Report No. CS97-557, September 1997 (First version May 1997) Boosting and Naive Bayesian Learning Charles Elkan APRESENTAÇÃO: Andréia Santos ([email protected]) Gabrielle Francês ([email protected]) Belém/PA - 03/12/2004 INTRODUÇÃO - Naive Bayesian: O Classificador Naive Bayesian considera a hipótese de que os valores dos atributos de um exemplo sejam independentes dado a classe de exemplo. - Boosting: É um método geral que combina múltiplos classificadores. Ele melhora o desempenho quando associado a qualquer método de aprendizagem, neste caso o Naive Bayesian. ETAPAS DO PROCESSO - Naive Bayesian: TREINAR UMA SEQUÊNCIA QUALQUER CALCULAR PROBABILIDADES PRIORI CALCULAR PROBABILIDADES LIKELIHOODS GANHA A CLASSE COM MAIOR PROBABILIDADE EM UM DADO EXEMPLO CALCULAR PROBABILIDADES CADA CLASSE EXEMPLOS PRÁTICOS (Naive Bayesian) - Naive Bayesian (assumindo que os atributos são independentes) TEOREMA DE BAYES: P(A|B) = P(B|A) * P(A) P(B) P(B) é desconsiderado Dado um exemplo para classificar (dataset com 14 exemplos) Tempo: sol / Temperatura: fria / Umidade: alta / Vento: forte / JOGAR = ? Cálculo para atributos nominais (discretos): 1. Calcular as probabilidades a priori: P(jogar = sim) = 9/14 P(jogar = não) = 5/14 2. Calcular as probabilidades likelihoods: P(jogar = sim|tempo = sol) = 2/9 P(jogar = sim|temperatura = frial) = 3/9 P(jogar = sim|umidade = altal) = 3/9 P(jogar = sim|vento = forte) = 3/9 P(jogar = não|tempo = sol) = 3/5 P(jogar = não|temperatura = fria) = 1/5 P(jogar = não|umidade = alta) = 4/5 P(jogar = não| vento = forte) = 3/5 TEMPO UMIDADE SIM NÃO Sol 2 3 Nublado 4 0 Chuva 3 2 TEMPERATURA SIM NÃO Alta 3 4 Normal 6 1 VENTO SIM NÃO Quente 2 2 Média 4 2 Fria 3 1 SIM NÃO Fraco 6 2 Forte 3 3 EXEMPLOS PRÁTICOS (continuação) 3. Calcular a probabilidade de cada classe ocorrer: P(jogar = sim | tempo = sol, temperatura = fria, umidade = alta, vento = forte) = P(jogar = sim|tempo = sol) * P(jogar = sim|temperatura = fria) * P(jogar = sim|umidade = alta) * P(jogar = sim|vento = forte) * P(jogar = sim) = 2/9 * 3/9 * 3/9 * 3/9 * 9/14 0,0053 P(jogar = não | tempo = sol, temperatura = fria, umidade = alta, vento = forte) = P(jogar = não|tempo = sol) * P(jogar = não|temperatura = fria) * P(jogar = não|umidade = alta) * P(jogar = não|vento = forte) * P(jogar = não) = 3/5 * 1/5 * 4/5 * 3/5 * 5/14 0,0206 A classe escolhida será (JOGAR = NÃO), pois obteve uma probabilidade maior em comparação a classe jogar = sim. EXEMPLOS PRÁTICOS (continuação) Cálculo para atributos contínuos (densidade de probabilidade normal): Dado um exemplo para classificar (dataset com 14 exemplos) Tempo: sol / Temperatura: 66 / Vento: forte / JOGAR = ? 1. Calcular as probabilidades a priori da mesma forma do nominal: P(jogar = sim) = 9/14 P(jogar = não) = 5/14 2. Calcular as probabilidades likelihoods (média e desvio padrão) n n 1 m = x k m = 74 n k =1 1 f ( x) = e 2ps s 2 1 ( xk - m ) 2 n ( x- m ) 2 2s 2 k =1 s 2 = 40.24 s @6 f ( x = 66) = 0,0273 TEMPERATURA 85 80 83 70 68 65 64 62 69 75 75 72 81 71 EXEMPLOS PRÁTICOS (continuação) 3. Calcular a probabilidade de cada classe ocorrer: P(jogar = sim | tempo = sol, temperatura = 66, vento = forte) = P(jogar = sim|tempo = sol) * P(jogar = sim|temperatura = 66) * * P(jogar = sim|vento = forte) * P(jogar = sim) = 2/9 * 0,0273 * 3/9 * 9/14 0,0013 P(jogar = não | tempo = sol, temperatura = 66, vento = forte) = P(jogar = não|tempo = sol) * P(jogar = não|temperatura = 66) * * P(jogar = não|vento = forte) * P(jogar = não) = 3/5 * 0,0273 * 3/5 * 5/14 0,00351 A classe escolhida será (JOGAR = NÃO), pois obteve uma probabilidade maior em comparação a classe jogar = sim. ETAPAS DO PROCESSO - Boosting e Naive Bayesian (K=2): CALCULAR PROBABILIDADES PRIORI 1ª iteração ATRIBUIR PESOS UNIFORMES 2ª iteração TREINAR UMA SEQUÊNCIA QUALQUER CALCULAR PROBABILIDADES LIKELIHOOD CALCULAR PROBABILIDADES CADA CLASSE SAÍDA NAIVE BAYESIAN NORMALIZAR NOVOS PESOS CALCULAR NOVOS PESOS CALCULAR TAXA DE ERRO TOTAL EXEMPLOS ATUALIZAR NOVOS PESOS SAÍDA DO CLASSIFICADOR Boosting e Naive Bayesian EXEMPLOS PRÁTICOS (Boosting) - Boosting (Robert E. Schapire and Yoram Singer [1999]) Dado um exemplo para classificar (dataset com 5 exemplos) ::: 1ª Iteração ::: 1. Atribuindo pesos uniformes para cada exemplo: valor uniforme = 0,2 2. Aplicando o algoritmo Naive Bayesian 2.1. Calculando as probabilidades a priori: P(class = +) = 3/5 P(class = -) = 2/5 treino 2.2. Calculando as probabilidades likelihoods: P(a1 = T | class = +) = 2/3 P(a2 = F | class = +) P(a1 = T | class = -) = 1/3 P(a2 = F | class = -) P(a1 = F | class = +) = 1/2 P(a2 = T | class = +) P(a1 = F | class = -) = 1/2 P(a2 = T | class = -) a1 a2 Class T T + T T + T F - F F + F T - = 1/2 = 1/2 = 2/3 = 1/3 2.3. Calculando as probabilidades para cada classe ocorrer: P(class = + | a1 = T, a2 = T) P(class = - | a1 = T, a2 = T) = P(a1 = T | class = +) * P(a2 = T | class = +) = P(a1 = T | class = -) * P(a2 = T | class = -) * P(class = +) = 2/3 * 2/3 * 3/5 * P(class = -) = 1/2 * 1/2 * 2/5 0,26 0,1 EXEMPLOS PRÁTICOS (continuação) 3. Calculando a saída do 1º classificador Naive Bayesian: hi ( x ) = p( + ) - p( - ) treino a1 a2 Class h1 ( x) = 0.522- 0.4 0,122 T T + T T + 4. Calculando o erro total dos exemplos: T F - F F + F T - wE = w = 0 .2 + 0 . 2 T 1 b= 1- 0,4 b = 0.4 = 0.4 0,66 1- 0.4 0.6 OBS: Considerando a classe + = 1 e a classe - = 0. 5. Calculando os novos pesos: a) classificado corretamente wi + 1 = wi b b) classificado incorretamente 1- hi ( xi ) - yi w2 = 0.2 (0.66)1- 1-1 wi + 1 = wi b 0,132 1- hi ( xi ) - yi w2 = 0.2 (0.66)1- 0-1 0,2 EXEMPLOS PRÁTICOS (continuação) 6. Fator de normalização dos novos pesos: 0,132 + 0,132 + 0,2 + 0,2 + 0,132 = 0,796 7. Atualizando o peso dos exemplos: a) classificado corretamente: 0,132 / 0,796 = 0,165 b) classificado incorretamente: 0,2 / 0,796 = 0,251 treino w1 w2 a1 a2 Class T T + 0,2 0,132 0,165 T T + 0,2 0,132 0,165 T F - 0,2 0,2 0,251 F F + 0,2 0,2 0,251 F T - 0,2 0,132 0,165 ::: 2ª Iteração ::: 1. Aplicando o algoritmo Naive Bayesian 1.1. Calculando as probabilidades a priori: P(class = +) = (0,165 + 0,165 + 0,251) / 1 0,581 P(class = -) = (0,251 + 0,165) / 1 0,416 1.2. Calculando as probabilidades likelihoods: P(a1 = T | class = +) = 0,567 P(a2 = F | class = +) P(a1 = T | class = -) = 0,603 P(a2 = F | class = -) P(a1 = F | class = +) = 0,432 P(a2 = T | class = +) P(a1 = F | class = -) = 0,396 P(a2 = T | class = -) = 0,432 = 0,603 = 0,567 = 0,396 PN EXEMPLOS PRÁTICOS (Boosting) 1.3. Calculando as probabilidades para cada classe ocorrer: P(class = + | a1 = T, a2 = T) P(class = - | a1 = T, a2 = T) = P(a1 = T | class = +) * P(a2 = T | class = +) = P(a1 = T | class = -) * P(a2 = T | class = -) * P(class = +) = 0,567 * 0,567 * 0,581 * P(class = -) = 0,603 * 0,396 * 0,416 0,186 2. Calculando a saída do 2º classificador Naive Bayesian: hi ( x ) = p( + ) - p( - ) h1 ( x) = 0.578- 0.4140,164 3. Calculando o erro total dos exemplos: wE =w T b= 1- 0.165 = 0,165 1 0,165 b= 0,197 1 - 0,165 0,099 EXEMPLOS PRÁTICOS (Boosting) 4. Calculando os novos pesos: wi + 1 = wi b 1- hi ( xi ) - yi 4.1. Para os exemplos 1 e 2: 1- 1-0 0,032 1- 1-1 0,049 1- 0-1 0,165 w3 = 0,165 (0,197) 4.2. Para os exemplos 3 e 4: w3 = 0,251 (0,197) 4.3. Para o exemplo 5: w3 = 0,165 (0,197) 5. Fator de normalização dos novos pesos: 0,032 + 0,032 + 0,049 + 0,049 + 0,165 = 0,327 EXEMPLOS PRÁTICOS (Boosting) 6. Atualizando o peso dos exemplos: 7. Calculando a saída do classificador Boosting: H ( x) = ln( 1 b1 ) h1 + ln( 1 b2 ) h2 w3 PN 0,2 0,165 0,032 0,097 + 0,2 0,165 0,032 0,097 F - 0,2 0,251 0,049 0,149 F F + 0,2 0,251 0,049 0,149 F T - 0,2 0,165 0,165 0,504 a1 a2 class T T + T T T w1 w2 T 1 1 1 T 1 H ( x) = \ se (ln ) hi ( x) (ln ) bi bi 2 i =1 0 i =1 = ln( 1 1 ) 0,122+ ln( ) 0,164 0,316 0,66 0,197 1 1 1 = ln( ) + ln( ) 1,019 2 0,66 0,197 VANTAGENS DOS CLASSIFICADORES - Naive Bayesian: É notavelmente bem sucedido e nenhum método melhor de aprendizado uniforme é conhecido; Com ou sem Boosting, é altamente aceitável computacionalmente como modelo de aprendizado humano; - Boosting: Em cima de qualquer outro método tentado por Ripley [1996], o Boosting mostra-se apto para treinar exemplos com valores de atributos preditos; VANTAGENS DA COMBINAÇÃO O desempenho de generalização é tão bom quanto, ou melhor, que o melhor resultado publicado usando qualquer outro método de aprendizado; Nenhum algoritmo de aprendizado que examina todos seus dados de treino pode ser mais rápido, tempo linear - O(ef); (treinando classificador) 40.000 (25 dim) 1 minuto São bem compatíveis para a descoberta de conhecimento em bases de dados muito grandes; Leva vantagem no fato de igualar os valores dos atributos de alguns deles que são desconhecidos para um exemplo de treino; PROJETO - Objetivos: Possibilidade de melhorar a confiança da capacidade de generalização do Classificador Naive Bayesian; Discutir o Naive Bayesian com o sem Boosting que computacionalmente é um modelo aceitável de aprendizado humano; Mostrar como o aprendizado de Naive Bayesian, com ou sem Boosting, é o melhor modelo de aprendizagem humana. Esta discursão mostrará que o Naive reproduz melhor todos os fenômenos de aprendizado da categoria humana. EXPERIMENTOS REALIZADOS - Dados Utilizados (datasets): 1. “German Credit” - 1000 exemplos, rounds error (%) sendo que 700 exemplos são da classe “good” e 300 da classe “bad”. 17 características são discretas, enquanto 3 são contínuas. http://www.ryerson.ca/~dgrimsha/ 1 25.1 2 24.3 3 24.0 4 24.4 courses/cps820/Resources/credit-g_arf.txt 5 24.7 6 24.9 7 25.2 8 25.1 9 25.3 10 25.4 Resultados Obtidos: - Naive Bayesian - 25.3% taxa de erro (com 5 partes/cross-validation); - Boosting e Naive Bayesian – melhorou a taxa de erro para 24.0% (combinando 3 classificadoores Naive Bayesian completamente); ... 100 - Boosting e C4.5 – aumentou a taxa de erro de 28.44% para 29.14%. 25.7 SIMULAÇÃO NO WEKA - Classificador Naive Bayesian (usando validação cruzada com 5 folhas) 24.9% SIMULAÇÃO NO WEKA - Classificador C4.5 (Weka – J48) 26.7% SIMULAÇÃO NO WEKA - Classificador C4.5 (Weka – J48) combinado com Boosting 27.7% SIMULAÇÃO NO WEKA - Classificador Naive Bayesian (3 classificadores) combinado com Boosting 22.8% EXPERIMENTOS REALIZADOS (continuação) 2. “Diabets in Pima Indians” – Usando 200 exemplos de treinos completos, o melhor método de aprendizado reportado por Ripley [1996] é a discriminação linear padrão. Este dataset consiste de 8 atributos numéricos: http://laps.ufpa.br/aldebaro/classes/asr2sem03/datasets/weka-arff 1. 2. 3. 4. 5. 6. 7. 8. Número de gravidez (quantidade) Concentração de glicose em um teste de tolerância Pressão do sangue (mm Hg) Soro insulina (micro U/ml) Massa corporal inicial (Kg/m2) Função genealógica de diabestes Espessura da dobra da pele/do trícepes da pele (mm) Idade em anos Resultados Obtidos: - Discriminação Linear Padrão - 20.3% de taxa de erro; - Boosting e Naive Bayesian - 22.0% de taxa de erro (com 10 voltas); - Backpropagation - 22.6% de erro (com unidade escondida). uma Usando 200 rounds exemplos completos erro (%) 1 24.7 2 23.8 3 22.9 4 22.6 5 22.9 6 22.9 7 22.9 8 22.9 9 22.6 10 22.0 EXPERIMENTOS REALIZADOS (continuação) * Usando o mesmo dataset, agora adicionando 100 exemplos de treinos com dados desconhecidos (incompletos): Usando 200 rounds exemplos completos erro (%) Resultados Obtidos: - C4.5 - 22.3% de erro; Boosting com Naive Bayesian - 18.7% de erro (com 10 voltas) Incluindo 100 exemplos incompletos erro (%) 1 24.7 20.2 2 23.8 20.5 3 22.9 19.9 4 22.6 19.6 5 22.9 19.6 6 22.9 19.3 7 22.9 19.0 8 22.9 19.0 9 22.6 19.0 10 22.0 18.7 COMPARAÇÕES IMPORTANTES Naive Bayesian, resulta numa combinação matematicamente equivalente a uma rede neural feedforward com entradas, uma única camada intermediária de nós e função de ativação sigmóide; Esquema sistemático de um neurônio Naive Bayesian, dá ao teste melhor exatidão do que os outros métodos conhecidos, incluindo backpropagation e árvore de decisão C4.5. CONCLUSÕES FINAIS Segundo o autor, o método apresentado aqui neste trabalho (Boosting and Naive Bayesian Learning), mostrou ser o melhor método de aprendizado uniforme conhecido. Vimos que estes métodos são aceitáveis (possíveis) computacionalmente. altamente No conjunto de dados do mundo real, nos quais o método foi testado, o desempenho de generalização é realmente excelente em comparação a qualquer outro método de aprendizado. MENSAGEM FINAL Não diga que a vitória está perdida, Se é de batalhas que se vive a vida, Tenha fé em Deus, tenha fé na vida, Tente outra vez... TENTE! (Raul Seixas) Dúvidas ou sugestões envie-nos um e-mail: Andréia Santos [email protected] Gabrielle Francês [email protected] REFERÊNCIAS BIBLIOGRÁFICAS 1. ELKAN, Charles. Boosting and Naive Bayesian Learning. San Diego, 1997. 2. LANGLEY, Pat; SAGE, Stephanie. Induction of Selection Bayesian Classifiers. Palo Alto, 1994.