Você está na página 1de 10

14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

 Vooo – Insights
Data Science. Python. Gestão.

 SafraPay  

6 passos fáceis para aprender o algoritmo


Naive Bayes (com o código em Python)
adminvooo 21 de abril de 2016

Traduzido de: 6 Easy Steps to Learn Naive Bayes Algorithm (with code in Python)

Autor:  SUNIL RAY

Introdução
Imagine uma situação como essa: você está trabalhando em um problema de classificação
e gerou o conjunto de hipóteses, criou os recursos e analisou a importância das variáveis.
E agora, em menos de uma hora, seu chefe quer ver o primeiro resultado do modelo.

O que você vai fazer? Você tem centenas de milhares de pontos de dados e muitas
variáveis no conjunto de dados de treinamento. Nessa situação, se estivesse em seu lugar,
eu teria usado ‘Naive Bayes’, que pode ser extremamente rápido em relação a outros
algoritmos de classificação. Ele usa o teorema de probabilidade de Bayes para prever a
classe de um conjunto de dados desconhecido.
https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 1/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Neste artigo, vamos explicar o básico deste algoritmo, para que da próxima vez que você
se deparar com grandes volumes de dados, você possa usar esse algoritmo. Além disso,
mesmo um novato em Python deveria se sentir bem com a quantidade de códigos
disponíveis neste artigo.

Índice
1. O que é o algoritmo Naive Bayes?
2. Como o algoritmo Naive Bayes funciona?
3. Quais são os prós e os contras do uso de Naive Bayes?
4. Aplicações de Algoritmo Naive Bayes
5. Passos para construir um modelo básico Naive Bayes em Python
6. Dicas para melhorar o poder do modelo Naive Bayes

O que é o algoritmo Naive Bayes?


É uma técnica de classificação baseado no teorema de Bayes com uma suposição de
independência entre os preditores. Em termos simples, um classificador Naive Bayes
assume que a presença de uma característica particular em uma classe não está
relacionada com a presença de qualquer outro recurso. Por exemplo, um fruto pode ser
considerado como uma maçã se é vermelho, redondo, e tiver cerca de 3 polegadas de
diâmetro. Mesmo que esses recursos dependam uns dos outros ou da existência de
outras características, todas estas propriedades contribuem de forma independente para
a probabilidade de que este fruto é uma maçã e é por isso que é conhecido como ‘Naive’
(ingênuo).

O modelo Naive Bayes é fácil de construir e particularmente útil para grandes volumes de
dados. Além de simples, Naive Bayes é conhecido por ganhar de métodos de classificação
altamente sofisticados.

Teorema de Bayes fornece uma forma de calcular a probabilidade posterior P (C | X) a


partir de P (C), P (x) e P (X | c). Veja a equação abaixo:

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 2/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Acima,

P (c | x) é a probabilidade posterior da classe (c, alvo) dada preditor (x, atributos).


P (c) é a probabilidade original da classe.
P (x | c) é a probabilidade que representa a probabilidade de preditor dada a
classe.
P (x) é a probabilidade original do preditor.

Como o algoritmo Naive Bayes funciona?


Vamos entender isso usando um exemplo. Abaixo eu tenho um conjunto de dados de
treinamento de clima e da correspondente variável-alvo ‘Play’ (sugerindo possibilidades de
jogar). Agora, precisamos classificar se os jogadores vão jogar ou não com base na
condição meteorológica. Vamos seguir os passos abaixo para realizar a operação.

Passo 1: Converter o conjunto de dados em uma tabela de frequência

Passo 2: Criar tabela de Probabilidade ao encontrar as probabilidades de tempo Nublado =


0,29 e probabilidade de jogar = 0,64.

Passo 3: Agora, use a equação Bayesiana Naive para calcular a probabilidade posterior
para cada classe. A classe com maior probabilidade posterior é o resultado da previsão.

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 3/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Problema: Os jogadores irão jogar se o tempo está ensolarado. Esta afirmação está
correta?

Podemos resolver isso usando o método discutido acima de probabilidade posterior.

P (Sim |Ensolarado) = P (Ensolarado | Sim) * P (Sim) / P (Ensolarado)

Aqui temos P (Ensolarado | Sim) = 3/9 = 0,33, P (Ensolarado) = 5/14 = 0,36, P (Sim) = 9/14 =
0,64

Agora, P (Sim | Ensolarado) = 0,33 * 0,64 / 0,36 = 0,60, que tem maior probabilidade.

Naive Bayes usa um método similar para prever a probabilidade de classe diferente com
base em vários atributos. Este algoritmo é usado principalmente em classificação de texto
e com os problemas que têm múltiplas classes.

Quais são os prós e contras de Naive Bayes?


Prós:

É fácil e rápido para prever o conjunto de dados da classe de teste. Também tem
um bom desempenho na previsão de classes múltiplas.
Quando a suposição de independência prevalece, um classificador Naive Bayes
tem melhor desempenho em comparação com outros modelos como regressão
logística, e você precisa de menos dados de treinamento.
O desempenho é bom em caso de variáveis categóricas de entrada comparada
com a variáveis numéricas. Para variáveis numéricas, assume-se a distribuição
normal (curva de sino, que é uma suposição forte).

Contras:

Se a variável categórica tem uma categoria (no conjunto de dados de teste) que
não foi observada no conjunto de dados de treinamento, então o modelo irá
atribuir uma probabilidade de 0 (zero) e não será capaz de fazer uma previsão.
Isso é muitas vezes conhecido como “Zero Frequency”. Para resolver isso,
podemos usar a técnica de alisamento. Uma das técnicas mais simples de
alisamento é a chamada estimativa de Laplace.
Por outro lado naive Bayes é também conhecido como um mau estimador, por
isso, as probabilidades calculadas não devem ser levadas muito a sério.
Outra limitação do Naive Bayes é a suposição de preditores independentes. Na
vida real, é quase impossível que ter um conjunto de indicadores que sejam
completamente independentes.

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 4/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

4 Aplicações do Algoritmo Naive Bayes


Previsões em tempo real: Naive Bayes é um classificador de aprendizagem voraz e com
certeza rápido. Assim, pode ser usado para fazer previsões em tempo real.

Previsões multi-classes: Este algoritmo também é conhecido pela funcionalidade de


previsão multi-classes. Aqui podemos prever a probabilidade de múltiplas classes das
variáveis-alvo.

Classificação de textos/Filtragem de spam/Análise de sentimento: classificadores Naive


Bayes utilizados principalmente em classificação de textos (devido a um melhor resultado
em problemas de classes múltiplas e regra de independência) têm maior taxa de sucesso
em comparação com outros algoritmos. Como resultado, é amplamente utilizado na
filtragem de spam (identificar spam) e Análise de Sentimento (em análise de mídia social,
para identificar sentimentos positivos e negativos dos clientes)

Sistema de Recomendação: o classificador e a filtragem colaborativa Naive Bayes em


conjunto constroem um sistema de recomendação que utiliza técnicas de machine
learning e mineração de dados para filtrar a informação invisível e prever se um usuário
gostaria de um determinado recurso ou não

Passos para construir um modelo básico Naive Bayes em


Python
Mais uma vez, o scikit learn (biblioteca python) vai ajudar a construir um modelo Naive
Bayes em Python. Existem três tipos de modelo Naive Bayes sob a biblioteca do scikit
learn:

Gaussian: É usado na classificação e assume uma distribuição normal.

Multinomial: É usado para contagem discrete. Por exemplo, digamos que temos um
problema de classificação de texto. Aqui podemos considerar tentativas de Bernoulli, que
é um passo além e, em vez de “palavra que ocorre no documento”, temos “contar quantas
vezes a palavra ocorre no documento”, você pode pensar nisso como “número de vezes
que o número desfecho x_i é observado durante as n tentativas “.

Bernoulli: O modelo binomial é útil se os vetores são binários (ou seja zeros e uns). Uma
aplicação seria de classificação de texto com um modelo de ‘saco de palavras’ onde os 1s e
0s são “palavra ocorre no documento” e “palavra não ocorre no documento”,
respectivamente.

Com base no seu conjunto de dados, você pode escolher qualquer um modelo acima
discutidos. Abaixo está o exemplo de modelo de Gauss.

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 5/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Código Python

#Importa a biblioteca do modelo Naive Bayes Gaussiano

from sklearn.naive_bayes import GaussianNB

import numpy as np

#Designa as variáveis previsor e alvo

x= np.array([[-3,7],[1,5], [1,2], [-2,0], [2,3], [-4,0], [-1,1], [1,1], [-2,2], [2,7


Y = np.array([3, 3, 3, 3, 4, 3, 3, 4, 3, 4, 4, 4])

#Cria um classificador Gaussiano

model = GaussianNB()

#Treina o modelo usando os dados de treino

model.fit(x, y)

#Resultado de previsão

predicted= model.predict([[1,2],[3,4]])

print(predicted)

Output: ([3,4])

Acima, nós vemos o modelo Naive Bayes básico. Você pode melhorar o poder deste
modelo básico ajustando parâmetros de lidando com premissas de forma inteligente.
Vejamos os métodos para melhorar o desempenho do Naive Bayes Modelo. Eu
recomendo que você passar por este documento para obter mais detalhes sobre a
classificação de texto usando Naive Bayes.

Dicas para melhorar o poder do modelo Naive Bayes


Aqui vão algumas dicas para melhorar o poder de Naive Bayes Modelo:

Se os funções contínuas não têm distribuição normal, devemos usar a


transformação ou métodos diferentes para convertê-las na distribuição normal.
Se o conjunto de dados de teste tem problema frequência zero, aplique a técnica
de suavização “Laplace Correction” para prever a classe de conjunto de dados de
teste.
Remova características correlacionadas, como as características altamente
correlacionadas são votadas duas vezes no modelo e podem levar a um excesso
de importância.

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 6/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Classificadores Naive Bayes têm opções limitadas para ajuste de parâmetros como
alfa = 1 para alisamento, fit_prior = [Verdade | Falso] para saber a classe de
probabilidades anteriores ou não e algumas outras opções. Eu recomendaria focar
no pré-processamento de dados e seleção de recursos.
Você poderia pensar que aplicar alguma técnica combinação classificador como
“ensembling”, “bagging” e “boosting”, mas na prática esses métodos não
ajudariam. Na verdade, não ajudariam pois sua finalidade é reduzir a variância.
Naive Bayes não tem variância para minimizar.

Notas finais
Neste artigo, nós olhamos um dos algoritmos de machine learning supervisionado
chamado “Naive Bayes”, usado principalmente para a classificação. Parabéns, se você tiver
entendido completamente este artigo, você já deu o primeiro passo para dominar este
algoritmo. A partir daqui, tudo que você precisa é de prática.

Além disso, eu sugiro que você se concentre mais em pré-processamento de dados e


seleção de recursos antes de aplicar o algoritmo Naive Bayes. Num post futuro, vou
discutir sobre classificação de texto e de documentos usando Naive Bayes em mais
detalhes.

Veja também:
Guia de acesso rápido Python – Matplotlib
Breve introdução ao Python
Participantes do mercado de pagamentos

Compartilhe isso:

 

Relacionado

Um tutorial completo para Guia de aprendizado para Lista de estudo: A melhor


aprender Data Science com iniciantes em técnicas de maneira de aprender Machine
Python do zero redução de dimensões Learning em 6 etapas
16 de agosto de 2016 (Dimension reduction) 4 de maio de 2016
Em "Python" 4 de maio de 2016 Em "Machine Learning"
Em "Data Science"

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 7/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

PUBLICADO EM Data Science Python

MARCADO análise de dados analytics bayes Data Science Estatistica naive bayes Python; naive bayes

Pesquisa 

Posts recentes

BIN
SumUp
Alelo
SafraPay
Tudo que você ainda não sabe sobre os serviços iFood

Arquivos

 fevereiro 2022

 janeiro 2022

 outubro 2021

 setembro 2021

 agosto 2021

 julho 2021

 abril 2021

 março 2021

 fevereiro 2021

 janeiro 2021

 dezembro 2020

 julho 2020

 maio 2020

 janeiro 2020

 junho 2019
https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 8/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

 maio 2019

 abril 2019

 março 2019

 janeiro 2019

 novembro 2018

 setembro 2018

 junho 2018

 maio 2018

 abril 2018

 janeiro 2018

 dezembro 2017

 setembro 2017

 agosto 2017

 junho 2017

 maio 2017

 abril 2017

 março 2017

 dezembro 2016

 novembro 2016

 outubro 2016

 setembro 2016

 agosto 2016

 julho 2016

 maio 2016

 abril 2016

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 9/10
14/04/2022 20:47 6 passos fáceis para aprender o algoritmo Naive Bayes (com o código em Python) – Vooo – Insights

Copyright © 2022 Vooo - Insights – Tema Glob por FameThemes

https://www.vooo.pro/insights/6-passos-faceis-para-aprender-o-algoritmo-naive-bayes-com-o-codigo-em-python/ 10/10

Você também pode gostar