Você está na página 1de 9

15/04/2019 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.

 Tutorial – Compreensã…  

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 classi caçã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 classi caçã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/9
15/04/2019 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 classi cação baseado no teorema de Bayes com uma suposição de
independência entre os preditores. Em termos simples, um classi cador 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 classi cação
altamente so sticados.

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/9
15/04/2019 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 classi car 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/9
15/04/2019 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 a rmaçã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 classi caçã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 classi cador 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/9
15/04/2019 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 classi cador 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.

Classi cação de textos/Filtragem de spam/Análise de sentimento: classi cadores Naive


Bayes utilizados principalmente em classi caçã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
ltragem de spam (identi car spam) e Análise de Sentimento (em análise de mídia social,
para identi car sentimentos positivos e negativos dos clientes)

Sistema de Recomendação: o classi cador e a ltragem colaborativa Naive Bayes em


conjunto constroem um sistema de recomendação que utiliza técnicas de machine
learning e mineração de dados para ltrar 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 classi cação e assume uma distribuição normal.

Multinomial: É usado para contagem discrete. Por exemplo, digamos que temos um
problema de classi caçã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 classi caçã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.

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

#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
classi caçã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.
Classi cadores Naive Bayes têm opções limitadas para ajuste de parâmetros como
alfa = 1 para alisamento, t_prior = [Verdade | Falso] para saber a classe de

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

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 classi cador como
“ensembling”, “bagging” e “boosting”, mas na prática esses métodos não
ajudariam. Na verdade, não ajudariam pois sua nalidade é reduzir a variância.
Naive Bayes não tem variância para minimizar.

Notas nais
Neste artigo, nós olhamos um dos algoritmos de machine learning supervisionado
chamado “Naive Bayes”, usado principalmente para a classi caçã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 classi caçã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:

  4

Relacionado

Tutorial - Compreensão de Tutorial sobre Expressões Informações e dados que


listas Python, com exemplos Regulares para iniciantes em grandes empresas de
16 de março de 2019 Python tecnologia têm sobre você
In “Python” 31 de março de 2019 20 de novembro de 2018
In “Python” In “Data Science”

PUBLICADO EM Data Science Python

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

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

Pesquisa 

Posts recentes

Top 15 marcas globais


Tutorial sobre Expressões Regulares para iniciantes em Python
Tutorial – Compreensão de listas Python, com exemplos
Expressões regulares (regex)
BeautifulSoup

Arquivos

 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

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

 novembro 2016

 outubro 2016

 setembro 2016

 agosto 2016

 julho 2016

 maio 2016

 abril 2016

Copyright © 2019 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/ 9/9

Você também pode gostar