image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Article image
Eduardo Silva
Eduardo Silva24/04/2024 10:31
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

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:

    image

    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).

    image

    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.

    Compartilhe
    Recomendados para você
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentários (0)
    Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes