Saiba tudo sobre Naive Bayes, um dos principais algoritmos de classificação
A classificação de dados é um processo crucial em Data Science, sendo bastante usado por analistas e cientistas de dados em análises estatísticas e ao calcular probabilidades.
A classificação de dados é um processo crucial em Data Science, sendo bastante usado por analistas e cientistas de dados em análises estatísticas e ao calcular probabilidades. Nesse contexto, algoritmos como o Naive Bayes são um ótimo exemplo de como soluções simples tendem a ser também as mais poderosas.
Apesar dos últimos avanços em Machine Learning, esse classificador provou ser não apenas fácil de usar, mas também rápido, preciso e confiável. Por esse e outro motivos, ele tem sido usado com sucesso para muitos propósitos, além de funcionar particularmente bem quando o objetivo é solucionar problemas de Processamento de Linguagem Natural (NLP).
Neste artigo, você irá saber tudo sobre como o algoritmo Naive Bayes, como ele funciona, além de quando e como implementá-lo.
Glossário
O que é Naive Bayes?
Naive Bayes é um algoritmo probabilístico de Machine Learning baseado no Teorema de Bayes — uma fórmula matemática usada para calcular probabilidades condicionais. Trata-se de uma ferramenta muito usada em uma ampla variedade de tarefas de classificação no campo da estatística.
Altamente escalável e relativamente simples de implementar, o classificador Naive Bayes funciona muito bem para resolver os mais diversos problemas do mundo real, sendo capaz de ajudar na construção de modelos de aprendizado de máquina mais rápidos e de acelerar previsões.
Além disso, eles têm a vantagem de escalonar linearmente na complexidade do tempo com o número de recursos. Isso o torna uma ferramenta útil para dados de alta dimensão.

Utilizado principalmente na classificação de texto, as funções desse algoritmo geralmente incluem classificar um conjunto de dados de treinamento de alta dimensão.
Basicamente, a partir da conversão desses dados, fornecidos em tabelas de frequência, gerar uma tabela de verossimilhança e, por fim, é possível encontrar probabilidades em relação a determinados recursos.
Afinal, o que é um algoritmo de classificação?
Algoritmo de Classificação é um ferramenta de Aprendizagem Supervisionada usada para identificar a categoria de novas observações com base nos dados de treinamento.
Na classificação, um programa aprende com o conjunto de dados ou observações fornecidas e, em seguida, classifica a nova observação em várias classes ou grupos. Tais classes podem ser chamadas de rótulos ou categorias.
Ao contrário da regressão, a variável de saída da classificação é uma categoria, não um valor, como “verde ou azul”, “fruta ou animal” etc. significa que contém entrada com a saída correspondente.
No algoritmo de classificação, uma função de saída discreta (y) é mapeada para a variável de entrada (x). De acordo com o princípio da Árvore de Decisão, o modelo é treinado com base nos dados e o modelo preditivo é construído para mapear a decisão baseada na árvore.
Considerando os recursos do conjunto de dados de treinamento e as classes especificadas, o algoritmo definirá regras para classificação.



Qual é a sua função?
O principal objetivo do algoritmo de classificação é identificar a categoria de um determinado conjunto de dados e, principalmente, para prever a saída dos dados categóricos.
O algoritmo que implementa a classificação em um conjunto de dados é conhecido como classificador. Nesse caso, existem diferentes tipos:
- Classificador Binário: se o problema de classificação tiver apenas dois resultados possíveis, então é chamado de Classificador Binário. Por exemplo, “sim ou não”, “masculino ou feminino”, “spam ou não spam”, “cachorro ou gato”, etc.;
- Classificador Multiclasse: se um problema de classificação tiver mais de dois resultados, ele será chamado de classificador multiclasse Por exemplo, classificações de tipos de culturas, tipos de música etc.
- Classificação desbalanceada (Imbalanced Classification): o termo descreve tarefas de classificação em que a distribuição de exemplos dentro de cada classe não é igual. A maioria das instâncias do conjunto de dados de treinamento pertence à classe normal, enquanto uma minoria pertence à classe anormal. Diagnósticos clínicos, detecção de outliers e investigação de fraudes são alguns exemplos.
Como funciona esse algoritmo?
A classificação é um processo de categorização de um determinado conjunto de dados em classes, podendo ser realizada em dados estruturados ou não estruturados.
Esse processo começa com a previsão da classe de determinados pontos de dados, em que as classes são muitas vezes referidas como alvo, rótulo ou categorias.
A modelagem preditiva de classificação é a tarefa de aproximar a função de mapeamento de variáveis de entrada para variáveis de saída discretas. Nesse caso, o objetivo central é identificar em qual classe/categoria os novos dados se enquadrarão.
Os problemas de classificação mais comuns são reconhecimento de fala, detecção de face, reconhecimento de manuscrito, classificação de documentos, etc.
Nesse sentido, o funcionamento dos algoritmos de classificação abrange dois tipos:
- Lazy learners: leva menos tempo aprendendo e mais classificando dados;
- Eager learners: leve mais tempo aprendendo e menos classificando dados (prevendo).
As tarefas mais comuns das classificações são:
- Classificação binária
- Classificação multiclasse
- Classificação de vários rótulos
- Classificação Desequilibrada
- Metodologia de Classificação
Quando usar o Naive Bayes?
Naive Bayes é um dos algoritmos de classificação mais simples e rápidos que existem, sendo um dos mais indicado ao lidar com grandes volumes de dados. É usado com sucesso em várias aplicações, tais como:
- Filtragem de spam: funcionam correlacionando o uso de tokens (normalmente palavras, ou às vezes outras coisas), com e-mails de spam e não spam e, em seguida, usa o teorema de Bayes para calcular a probabilidade de um e-mail ser ou não spam;
- Classificação de texto: pode ser aceito como a abordagem probabilística para classificar documentos no caso de reconhecer a frequência de uma palavra específica em um documento de texto;
- Análise de sentimentos: atribui uma probabilidade de que uma determinada palavra ou frase seja considerada positiva ou negativa ao comparar palavras umas contra as outras;
- Sistemas de recomendação: usa técnicas de aprendizado de máquina e mineração de dados para filtrar informações não vistas e prever se um usuário gostaria de um determinado recurso ou não.
Como implementar o algoritmo Naive Bayes?
Confira a seguir as principais etapas para a implementação do algoritmo Naive Bayes:
Passo 1: separação por Classe
Significa calcular a probabilidade dos dados pela classe a que pertencem, a chamada taxa base. Sendo assim, primeiro é necessário separar dados de treinamento por classe.
Para isso, você pode criar um objeto de dicionário onde cada chave é o valor da classe e então adicionar uma lista de todos os registros como o valor no dicionário.
A função chamada separate_by_class() que implementa essa abordagem. Ele assume que a última coluna em cada linha é o valor da classe.
Passo 2: resumir o conjunto de dados
Precisamos de duas estatísticas de um determinado conjunto de dados. Elas são a média e o desvio padrão (desvio médio da média).
A média é o valor médio e pode ser calculada como:
média = soma(x)/n * contagem(x)
Onde x é a lista de valores ou uma coluna que estamos procurando.
Passo 3: resumir os dados por classe
Exigimos estatísticas de nosso conjunto de dados de treinamento organizado por classe.
Depois de desenvolver a função separate_by_class() para separar um conjunto de dados em linhas por classe e summary_dataset() para calcular estatísticas resumidas para cada coluna, agora é preciso juntar tudo isso e resumir as colunas no conjunto de dados organizadas por valores de classe.



Passo 4: Função de densidade de probabilidade Gaussiana
Uma maneira de calcular a probabilidade ou probabilidade de observar um determinado valor real é presumir que os valores de X1 são extraídos de uma distribuição, como uma curva em forma de sino ou uma distribuição gaussiana.
A probabilidade Gaussiana pode ser resumida usando apenas dois números: a média e o desvio padrão. Portanto, com um pouco de matemática, é possível estimar a probabilidade de um determinado valor.
Esta parte da matemática é chamada de Função de Distribuição de Probabilidade Gaussiana (ou PDF Gaussiana) e pode ser calculada como:
f(x) = (1 / sqrt(2 * PI) * sigma) * exp(-((x-mean)^2 / (2 * sigma^2)))
Passo 5: Probabilidades de classe
Agora é hora de usar as estatísticas calculadas a partir dos dados de treinamento para calcular as probabilidades de novos dados.
Isso é calculado separadamente para cada classe, o que significa que primeiro calculamos a probabilidade de um novo dado pertencer à primeira classe, depois calculamos as probabilidades de ele pertencer à segunda classe e assim por diante para todas as classes.
A probabilidade de um dado pertencer a uma classe é calculada da seguinte forma:
P(classe|dados) = P(X|classe) * P(classe)
Naive Bayes e Python
É possível classificar dados no Scikit-Learn usando Python. Com isso, você pode processar os dados, treinar algoritmos de classificação e avaliar cada modelo para encontrar a melhor opção de preditor para seus dados.
Confira a seguir alguns passos:
Etapa 1. Carregar dados
Você pode carregar qualquer conjunto de dados rotulados que deseja prever. Por exemplo, é possível usar fetch_openml (‘titanic’) o conjunto de dados do Titanic para praticar.
Etapa 2. Explorar o conjunto de dados
Use as funções do python pandas , como df.describe() e df.isnull().sum() para descobrir como seus dados precisam ser processados antes do treinamento
Etapa 3. Pré-processar dados
Solte, preencha ou atribua valores ausentes ou indesejados de seu conjunto de dados para garantir que você não introduza erros ou vieses em seus dados. Use funções pandas get_dummies(), drop()e fillna() junto com algumas bibliotecas do sklearn.
Etapa 4. Dividir dados em conjunto de dados de treinamento e teste
Para poder avaliar a precisão de seus modelos, divida seus dados em conjuntos de treinamento e teste usando o train_test_split. Isso permitirá treinar seus dados no conjunto de treinamento e prever e avaliar no conjunto de teste.
Etapa 5. Crie um pipeline para treinar vários algoritmos de classificação e hiperparâmetros
Execute vários algoritmos e, para cada algoritmo, tente vários hiperparâmetros. Isso permitirá encontrar o modelo de melhor desempenho e os melhores parâmetros para esse modelo.
Etapa 6. Avalie o modelo de aprendizado de máquina
Avalie o modelo em sua precisão e recupere com métodos como a accuracy() ou accuracy_score() e avalie elementos como a confusion_matrix()
Aprenda Ciência de Dados na Awari. Conheça nossos cursos!
Nossa Trilha de Data Science ensina desde como coletar, manipular e tratar grandes quantidades de dados até criar modelos, desenvolver algoritmos, analisar tendências e identificar insights. A plataforma de ensino da Awari também conta com mentorias individuais, aulas ao vivo e suporte de carreira para você dar um próximo passo na sua vida profissional.


