A aprendizagem Bayesiana dá uma visão probabilística à inferência. Ela é baseada na idéia de que instâncias de interesse são governadas por distribuições de probabilidade e que decisões extras podem ser feitas medindo estas probabilidades junto ao conjunto de treinamento. Esta aprendizagem é interessante para machine learning dado que ela provê uma base para algoritmos de aprendizagem que manipulam probabilidades diretamente e cria um framework para a análise da operação de outros algoritmos que não manipulam probabilidades diretamente.
Uma dificuldade prática em aplicar métodos bayesianos é que eles tipicamente requerem conhecimento inicial de muitas probabilidades. Quando estas probabilidades não são conhecidas à priori elas devem ser estimadas baseadas em alguma experiência anterior, dados disponíveis anteriormente, ou ainda, em alguma suposição dada na forma de distribuições estatísticas. Uma segunda dificuldade prática é o significante custo computacional para uma hipótese bayesiana ótima no caso geral. Em algumas situações específicas este custo computacional pode ser significantemente reduzido.
O classificador Naive Bayes
O algoritmo naive bayes é baseado no Teorema de Bayes e é ótimo para probabilidades múltiplas quando os eventos são independentes. Assumir que os atributos de uma classe são independentes no conjunto de treinamento é muito simplista, pois o que os torna interessante é que os atributos apresentam diferentes relacionamentos levando a um esquema simples que trabalhe bem na prática.
Embora exista esta desvantagem o classificador naive bayes funciona muito bem na prática, principalmente quando combinado com outros algoritmos.
Uma diferença interessante entre o naive bayes e os outros métodos de aprendizagem considerados é que não há uma procura explícita pelo espaço de hipóteses possíveis. A hipótese é formada sem procura, simplesmente obtêm-se a hipótese contando a freqüência de várias combinações de dados em um conjunto de treinamento.
- Exemplo do uso de Naive Bayes
Age |
Spectacle
prescription
|
Astigmatism |
Tear production rate |
Recommended lences |
Young |
Myope |
No |
Reduced |
None |
Young |
Myope |
No |
Normal |
Soft |
Young |
Myope |
Yes |
Reduced |
None |
Young |
Myope |
Yes |
Normal |
Hard |
Young |
Hypermetrope |
No |
Reduced |
None |
Young |
Hypermetrope |
No |
Normal |
Soft |
Young |
Hypermetrope |
Yes |
Reduced |
None |
Young |
Hypermetrope |
Yes |
Normal |
Hard |
Pre-presbyopic |
Myope |
No |
Reduced |
None |
Pre-presbyopic |
Myope |
No |
Normal |
Soft |
Pre-presbyopic |
Myope |
Yes |
Reduced |
None |
Pre-presbyopic |
Myope |
Yes |
Normal |
Hard |
Pre-presbyopic |
Hypermetrope |
No |
Reduced |
None |
Pre-presbyopic |
Hypermetrope |
No |
Normal |
Soft |
Pre-presbyopic |
Hypermetrope |
Yes |
Reduced |
None |
Pre-presbyopic |
Hypermetrope |
Yes |
Normal |
None |
Presbyopic |
Myope |
No |
Reduced |
None |
Presbyopic |
Myope |
No |
Normal |
None |
Presbyopic |
Myope |
Yes |
Reduced |
None |
Presbyopic |
Myope |
Yes |
Normal |
Hard |
Presbyopic |
Hypermetrope |
No |
Reduced |
None |
Presbyopic |
Hypermetrope |
No |
Normal |
Soft |
Presbyopic |
Hypermetrope |
Yes |
Reduced |
None |
Presbyopic |
Hypermetrope |
Yes |
Normal |
None |
Problema1.
A tabela abaixo mostra as probabilidades associadas de cada valor de um atributo com os valores da classe do problema1:
Age |
Young |
Pre-presbyopic |
Presbyopic |
None |
4 |
5 |
6 |
Soft |
2 |
2 |
1 |
Hard |
2 |
1 |
1 |
Pr(None) |
4 / 15 |
5 / 15 |
6 / 15 |
Pr(Soft) |
2 / 5 |
2 / 5 |
1 / 5 |
Pr(Hard) |
2 / 4 |
1 / 4 |
1 / 4 |
Spetacle prescription |
Myope |
Hypermetrope |
|
None |
7 |
8 |
|
Soft |
2 |
3 |
|
Hard |
3 |
1 |
|
Pr(None) |
7 / 15 |
8 / 15 |
|
Pr(Soft) |
2 / 5 |
3 / 5 |
|
Pr(Hard) |
3 / 4 |
1 / 4 |
|
Astigmatism |
No |
Yes |
|
None |
7 |
8 |
|
Soft |
5 |
0 |
|
Hard |
0 |
4 |
|
Pr(None) |
7 / 15 |
8 / 15 |
|
Pr(Soft) |
5 / 5 |
0 / 5 |
|
Pr(Hard) |
0 / 4 |
4 / 4 |
|
Tear production rate |
Reduced |
Normal |
|
None |
12 |
3 |
|
Soft |
0 |
5 |
|
Hard |
0 |
4 |
|
Pr(None) |
12 / 15 |
3 / 15 |
|
Pr(Soft) |
0 / 5 |
5 / 5 |
|
Pr(Hard) |
0 / 4 |
4 / 4 |
|
Recommended lences |
None |
Soft |
Hard |
None |
15 |
|
|
Soft |
|
5 |
|
Hard |
|
|
4 |
Pr(None) |
15 / 24 |
|
|
Pr(Soft) |
|
5 / 24 |
|
Pr(Hard) |
|
|
4 / 24 |
Por exemplo, na tabela acima o valor Normal do atributo Tear production rate ocorre 3 vezes para None, 5 para Soft e 4 para Hard. Logo abaixo as informações são escritas na forma de frações, ou probabilidades observadas. Por exemplo, das 15 vezes em que o valor da classe None ocorre, em 12 delas o valor de Tear production rate é Reduced, dando a fração 12 / 15.
Agora suponhamos que se queira determinar a probabilidade do valor None da classe quando os valores dos atributos são E1(Age = Young), E2(Spetacle presciption = Myope), E3(Astigmatism = Yes), E4(Tear production rate = Normal). Utillizando o teorema de Bayes, chamaremos de evidência E a combinação dos valores acima. Assumindo que estes valores são independentes (dada a classe), sua probabilidade combinada é obtida pela multiplicação das probabilidades da evidência, então
,
após este cálculo a probabilidade deve ser normalizada para que a soma dos valores da classe dê 1, fazendo assim que o denominador da fórmula acima desapareça.
Um problema com este método é que se um valor particular de um atributo não ocorre no conjunto de treinamento em conjunção com cada valor da classe, ocorrem discrepâncias no método. Suponha que estivéssemos calculando a probabilidade no exemplo acima do valor Soft no atributo Astigmatism quando o valor da classe é Yes. Esta probabilidade seria zero fazendo com que a multiplicação da fórmula acima dê zero não importando o quão grande fossem os outros termos acima.
Uma estratégia para se resolver este problema é utilizar uma técnica chamada estimador de Laplace. Cada numerador das probabilidades acima tem seu valor adicionado em 1 enquanto que o denominador é adicionado ao número de valores da classe. Por exemplo, quando a classe = none, Age é Young para 4 instâncias, Pre-presbyopic para 5 instâncias e Presbyopic para 6 instâncias. Suas respectivas probabilidades são 4 / 15, 5 / 15, 6 / 15. Então usando o estimador de Laplace teríamos 5 / 18, 6 / 18, 7 / 18. Este método assegura que um valor de atributo que ocorra zero vezes receba uma probabilidade diferente de zero, ainda pequena.
Usando o estimador de Laplace e normalizando estes números temos então:
Age |
Young |
Pre-presbyopic |
Presbyopic |
Pr(None) |
0.27777778 |
0.33333333 |
0.38888889 |
Pr(Soft) |
0.375 |
0.375 |
0.25 |
Pr(Hard) |
0.42857143 |
0.28571429 |
0.28571429 |
Spetacle prescription |
Myope |
Hypermetrope |
|
Pr(None) |
0.47058824 |
0.52941176 |
|
Pr(Soft) |
0.42857143 |
0.57142857 |
|
Pr(Hard) |
0.66666667 |
0.33333333 |
|
Astigmatism |
No |
Yes |
|
Pr(None) |
0.47058824 |
0.52941176 |
|
Pr(Soft) |
0.85714286 |
0.14285714 |
|
Pr(Hard) |
0.16666667 |
0.83333333 |
|
Tear production rate |
Reduced |
Normal |
|
Pr(None) |
0.76470588 |
0.23529412 |
|
Pr(Soft) |
0.14285714 |
0.85714286 |
|
Pr(Hard) |
0.16666667 |
0.83333333 |
|
Recommended lences |
None |
Soft |
Hard |
Pr(None) |
0.59259259 |
|
|
Pr(Soft) |
|
0.22222222 |
|
Pr(Hard) |
|
|
0.18518519 |
Estes probabilidades estão então prontas para serem usadas na fórmula dada acima derivada do teorema de Bayes. Continuando o problema acima, temos:
Pr[ None | E ] = 0.27778 x 0.47059 x 0.52941 x 0.23529 x 0.59259 = 0.009649251
Pr[ Soft | E ] = 0.375 x 0.42857 x 0.14286 x 0.85741 x 0.22222 = 0.00437457
Pr[ Hard | E ] = 0.42857 x 0.66667 x 0.83333 x 0.83333 x 0.18519 = 0.03674386
Normalizando os valores, temos:
Probabilidade de None: 0.009649251 = 19%
0.050767681
Probabilidade de Soft: 0.00437457 = 8.62%
0.050767681
Probabilidade de Hard: 0.03674386 = 72.38%
0.050767681
- Missing values
Missing values não é um problema grave para o Naive Bayes. Se o atributo Age estivesse faltando no problema1, o cálculo das probabilidades simplesmente omitiria este atributo, resultando em
Pr[ None | E ] = 0.47059 x 0.52941 x 0.23529 x 0.59259 = 0.03473703
Pr[ Soft | E ] = 0.42857 x 0.14286 x 0.85741 x 0.22222 = 0.01166552
Pr[ Hard | E ] = 0.66667 x 0.83333 x 0.83333 x 0.18519 = 0.08573585
Os números acima são individualmente um pouco maiores que antes porque um dos atributos está faltando. Normalizando os valores, temos:
Probabilidade de None: 0.03473703 = 26.29%
0.1321384
Probabilidade de Soft: 0.01166552 = 8.83%
0.1321384
Probabilidade de Hard: 0.08573585 = 64.88%
0.1321384
Se estivesse faltando um valor no conjunto de treinamento, ele simplesmente não seria incluído na contagem das freqüências. As taxas de probabilidade são baseadas no número de valores que realmente ocorrem do que no número total de instâncias.
- Atributos numéricos
Valores numéricos são geralmente manipulados assumindo-se que eles têm uma distribuição de probabilidade normal ou Gaussiana. Para os atributos nominais o cálculo é feito como antes, enquanto que para os atributos numéricos é calculada a média e o desvio padrão para cada classe e para cada atributo numérico. Então para o problema2 teríamos:
Outlook |
Temperature |
Humidity |
Windy |
Play |
||||||||||
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
|
Yes |
No |
Yes |
No |
|
S |
2 |
3 |
|
83 |
85 |
|
86 |
85 |
F |
6 |
2 |
9 |
5 |
|
O |
4 |
0 |
70 |
80 |
96 |
90 |
T |
3 |
3 |
|
||||
R |
3 |
2 |
68 |
65 |
80 |
70 |
|
|||||||
|
|
64 |
72 |
65 |
95 |
|||||||||
69 |
71 |
70 |
91 |
|||||||||||
75 |
|
80 |
|
|||||||||||
75 |
70 |
|||||||||||||
72 |
90 |
|||||||||||||
81 |
75 |
|||||||||||||
S |
2/9 |
3/5 |
M |
73 |
74.6 |
M |
79.1 |
86.2 |
F |
6/9 |
2/5 |
9/14 |
5/14 |
|
O |
4/9 |
0/5 |
DP |
6.2 |
7.9 |
DP |
10.2 |
9.7 |
T |
3/9 |
3/5 |
|
||
R |
3/9 |
2/5 |
|
|||||||||||
Onde S = Sunny, O = Overcast, R = Rainy, F = False, T = True, M = Média, DP = Desvio Padrão. A Média é simplemente a soma dos valores dividido pelo número de valores do atributo. O desvio padrão é a raiz quadrada da variância.
A função de densidade de probabilidade para uma distribuição normal com média M e desvio padrão D é a expressão
Considerando a classe Yes quando Temperature = 66, então o valor da função de densidade de probabilidade é
Da mesma forma, considerando a classe Yes quando Humidity tem valor = 90, temos
Caso tenhamos uma nova instância no problema2 onde os valores dos atributos são E1(Outlook = Sunny), E2(Temperature = 66), E3(Humidity = 90), E4(Windy = True). O cálculo das probabilidades dos valores da classe é
Pr[ Yes | E ] = 2/9 x 0.0340 x 0.0221 x 3/9 x 9/14 = 0.000036
Pr[ No | E] = 3/5 x 0.0291 x 0.0380 x 3/5 x 5/14 = 0.000136
Normalizando os valores temos:
Probabilidade de Yes = 0.000036 = 20.9%
0.000172
Probabilidade de No = 0.000136 = 79.1%
0.000172