Uma forma de lidar com dados ruidosos e imprecisos é utilizando algoritmos baseados no Teorema de Bayes. O Teorema de Bayes assume que a probabilidade de um evento A ocorrer dado um outro evento B, depende da relação entre ambos, além da probabilidade de observar esses eventos de forma independentes. Nessa definição, a probabilidade de ocorrência do evento A e B podem ser estimada pela frequência com que esses eventos ocorrem de forma independente P(A) e P(B). De forma semelhante, é possível estimar a probabilidade de um evento ocorrer dado B para cada evento A por meio da probabilidade P(B|A). Com isso podemos estimar a probabilidade de A ocorrer dado B, ou seja, P(A|B). O Teorema de Bayes pode ser definido como:
De forma análoga podemos reescrever esse teorema para calcular a probabidade de ocorrência de cada uma das classes de uma base de dado para uma amostra
:
Aquela classe que maximizar a probabilidade a posteori deve ser a classe com maior probabilidade. Portanto, temos:
Como o denominador é constante para todas as classes
, podemos reescrever a expressão como:
Expandindo a segunda parte da equação temos:
Infelizmente é computacionalmente impraticável calcular todas essas probabilidades. Pensando nisso, simplificações são propostas. Uma delas, chamada de Naive Bayes (NB), assume que os valores dos atributos é independente portanto, a probabilidade pode ser decomposta em
. Assim, podemos definir a probabilidade de uma amostra pertencer a uma classe como:
As principais vantagens desse algoritmo são: sua eficiência, uma vez que todas as probabilidades podem ser calculadas na etapa de treinamento; a construção do modelo é eficiente além de ser de fácil implementação; o algoritmo também é robusto a ruídos e atributos irrelevantes. As principais desvantagens são: o algoritmo desconsidera a dependência entre os atributos o que pode ser danoso para uma gama de problemas reais; ele traça hiperplanos lineares (o que também pode não ser suficiente dependendo da complexidade do problema); e ele necessita de adaptações quando os atributos são numéricos.
O conjunto de dados Jogar Tênis é um problema de classificação binária em que pretende-se classificar se uma pessoa deve ou não, dado certas condições climáticas, jogar tênis. Os atributos de entrada são o Tempo, Temperatura, Umidade e Vento. O conjunto tem 14 amostras de treinamento e a última coluna denominada Joga representa os rótulos jogar ou não tênis. Os atributos Tempo e Vento são categóricos e os atributos Temperatura e Umidade são contínuos.
Base de dados Jogar Tênis. Adaptado de Katti Faceli et al., (2011)
Para construir um NB precisamos descobrir as probabilidades associadas dos atributos e das classes para o novo exemplo. Assumindo que o exemplo de teste é (Tempo=Ensolarado, Temperatura=70, Umidade=80 e Vento=Sim), calcule a probabilidade de jogar tênis.
1⁰ Passo:
Probabilidade associada de cada classe:
2⁰ Passo:
Estimar a probabilidades de observar os valores do exemplo de teste para cada classe:
Quando temos atributos numéricos como Temperatura e Unidade, o procedimento consiste em calcular a média geral do atributo e definir esse valor como ponto de corte para o cálculo das probabilidades. Caso a amostra a ser classificada tenha um valor menor do que o ponto de corte, basta calcular a frequência com que isso acontece.
3⁰ Passo:
4⁰ Passo:
Portanto devemos jogar tênis!
Outras versões desse mesmo algoritmo: