Classificador Naive Bayes
O classificador Naive Bayes é um tipo de modelo probabilístico que utiliza o Teorema de Bayes para realizar a classificação de dados. Ele é chamado de "naive" (ingênuo) porque assume independência condicional entre os recursos (ou atributos) dos dados, mesmo que essa independência possa não ser verdadeira na prática.
O Teorema de Bayes é uma fórmula que relaciona a probabilidade condicional de um evento A dado um evento B com a probabilidade condicional de B dado A. Na classificação, isso é utilizado da seguinte maneira:
onde:
- A é a classe que queremos prever.
- B é o vetor de atributos observados.
- P(A∣B) é a probabilidade da classe A dado o vetor de atributos B.
- P(B∣A) é a probabilidade dos atributos B dado A (a likelihood).
- P(A) é a probabilidade priori da classe A.
- P(B) é a probabilidade marginal de B, que é constante para todos os cálculos e pode ser ignorada na comparação entre classes.
O Naive Bayes assume que os atributos são independentes dado o valor da classe A, o que simplifica o cálculo da likelihood. Isso pode ser uma simplificação forte e nem sempre reflete a realidade, mas o classificador Naive Bayes é conhecido por sua eficácia em muitas tarefas de classificação, especialmente quando o conjunto de dados é grande e a independência condicional aproximada é razoável. Existem diferentes variantes do Naive Bayes, como o Naive Bayes Gaussiano, Binomial e Multinomial, que lidam com diferentes tipos de dados.
Exemplo na prática
Esse é um exemplo prático de implementação de classificadores Naive Bayes em R usando dois conjuntos de dados: "iris" (um conjunto de dados integrado ao R) e "HouseVotes84" (disponível no pacote mlbench).
Aqui está uma explicação passo a passo do código:
Instalação e Carregamento de Pacotes:
- e1071 e mlbench são pacotes necessários, então eles são instalados e carregados.
install.packages("e1071")
install.packages("mlbench")
library(datasets)
library(e1071)
library(mlbench)
Preparação dos Dados para Exemplo 1 - Iris:
- O conjunto de dados iris é usado.
- Os dados são divididos em conjuntos de treinamento (2/3) e teste (1/3).
head(iris) # Exibe as primeiras seis linhas do conjunto de dados
set.seed(16103)
iris.split <- sample(2, nrow(iris), replace = TRUE, prob = c(2/3, 1/3))
iris.train <- iris[iris.split == 1, ]
iris.test <- iris[iris.split == 2, ]
Construção e Teste do Classificador para o Exemplo 1 - Iris:
- Um classificador Naive Bayes é treinado usando a função naiveBayes.
- A precisão do classificador é avaliada nos dados de treinamento e teste.
nbc1 <- naiveBayes(Species ~ ., data = iris.train)
nbc1 # Exibe informações sobre o classificador
table(predict(nbc1, iris.train[, -5]), iris.train[, 5]) # Precisão nos dados de treinamento
table(predict(nbc1, iris.test[, -5]), iris.test[, 5]) # Precisão nos dados de teste
Preparação dos Dados para Exemplo 2 - HouseVotes84:
- O conjunto de dados HouseVotes84 do pacote mlbench é usado.
- Os dados são divididos em conjuntos de treinamento (2/3) e teste (1/3).
data(HouseVotes84, package = "mlbench")
vote <- HouseVotes84
head(vote) # Exibe as primeiras seis linhas do conjunto de dados
set.seed(1984)
vote.split <- sample(2, nrow(vote), replace = TRUE, prob = c(2/3, 1/3))
vote.train <- vote[vote.split == 1, ]
vote.test <- vote[vote.split == 2, ]
Construção e Teste do Classificador para o Exemplo 2 - HouseVotes84:
- Outro classificador Naive Bayes é treinado usando a função naiveBayes.
- A precisão do classificador é avaliada nos dados de treinamento e teste.
nbc2 <- naiveBayes(Class ~ ., data = vote.train)
nbc2 # Exibe informações sobre o classificador
table(predict(nbc2, vote.train[, -1]), vote.train[, 1]) # Precisão nos dados de treinamento
table(predict(nbc2, vote.test[, -1]), vote.test[, 1]) # Precisão nos dados de teste
Limpeza:
- O código finaliza limpando o ambiente de trabalho, removendo pacotes e redefinindo a área de trabalho.
rm(list = ls())
detach("package:datasets", unload = TRUE)
detach("package:e1071", unload = TRUE)
detach("package:mlbench", unload = TRUE)
dev.off() # Limpa plots
cat("\014") # Limpa console
Em resumo, este script R treina dois classificadores Naive Bayes em conjuntos de dados diferentes e avalia sua precisão nos conjuntos de treinamento e teste. O exemplo usa os conjuntos de dados iris e HouseVotes84.
Lembrando que, se você tem interesse em aprofundar seus conhecimentos neste assunto, recomendo explorar sites especializados, assistir vídeos explicativos, ler artigos detalhados e participar de cursos específicos. Não é possível abordar todos os conceitos, pois a ciência e análise de dados é um campo vasto, mas estou compartilhando minhas anotações como ponto de partida.