Algoritmo Naive Bayes em aprendizado de máquina
Algoritmo Classificador Naive Bayes
Classificador é um algoritmo de aprendizado de máquina que categoriza dados em um ou mais conjuntos de “classes”. O classificador de email é um exemplo de classificador que verifica emails para filtrá-los por rótulo de classe: Spam ou Não Spam.
O classificador Naive Bayes em aprendizado de máquina é um aprendizado de máquina supervisionado para tarefas de classificação.
Naive Bayes é usado para resolver problemas de classificação. Ele prevê com base na probabilidade de um objeto. Naive Bayes é baseado no Teorema de Bayes e é usado principalmente para classificação de texto. Naive Bayes é um algoritmo de classificação probabilística fácil de implementar e rápido de treinar.
Como o classificador Naive Bayes é baseado no teorema de Bayes, é conhecido como classificador de probabilidade. Ele prevê com base na probabilidade de um item.
Razão para ser chamado de Naïve Bayes?
O classificador Naive Bayes tem duas palavras: Naive e Bayes. Por que Marinha? Este algoritmo trata todas as sentenças de palavras da mesma forma. Por exemplo “Você é” e “Você é” são iguais para este algoritmo. Não depende de recursos ou da ocorrência de recursos. Se você deseja identificar a fruta Maçã, então você precisa de cor vermelha, formato esférico e sabor doce para reconhecê-la como uma Maçã. Isso significa que esses recursos são independentes um do outro.
- O classificador Naive Bayes assume que os recursos são independentes uns dos outros. Como isso raramente é possível em dados da vida real, o classificador é chamado de ingênuo.
- Este algoritmo de classificação é baseado no teorema de Bayes, conhecido como Classificador Naive Bayes.
Teorema de Naïf Bayes
O teorema de Bayes é usado para encontrar a probabilidade de uma hipótese com probabilidades condicionais dependentes do conhecimento prévio. Este teorema tem o nome de Thomas Bayes. O classificador Naive Bayes funciona com base no princípio da probabilidade condicional, conforme dado pelo teorema de Bayes.
Para entender o teorema de Bayes, vejamos um exemplo simples e ingênuo do classificador bayes de lançamento de duas moedas. Podemos obter esses espaços amostrais lançando duas moedas: {HH, HT, TH, TT}. Então, as probabilidades desses eventos serão:
- Obtendo duas caras = 1/4
- Pelo menos uma cauda = 3/4
- Segunda moeda sendo cara, dado que a primeira moeda é coroa = 1/2
- Obter duas caras dada a primeira moeda é uma cara = 1/2
O teorema de Bayes calcula a probabilidade de um evento acontecer com base na probabilidade de um evento diferente que já ocorreu. A fórmula do teorema de Bayes é dada como:
P(A|B) = (P(B|A) * P(A)) / P(B)
P(A|B) Probabilidade de A par quando B par já ocorreu. A probabilidade P(B) não deve ser zero.
- Você precisa encontrar a probabilidade do evento A, que é dada quando o evento B (evidência) é verdadeiro.
- P(A) é a priori (a priori, ou seja, a probabilidade de um evento observado antes da prova) de A. Aqui, o evento B é o valor de uma instância desconhecida.
- P(A|B) é a probabilidade posterior do evento B, ou seja, a probabilidade do evento após observar as evidências.
Exemplo prático do Classificador Naïve Bayes
Tomemos um exemplo de compras para entender o funcionamento do Classificador Bayes Naive. Neste conjunto de dados, há um pequeno conjunto de dados de amostra de 30 linhas para este exemplo.
Conjunto de dados
O problema é prever se uma pessoa comprará um produto em uma combinação específica de Dia, Desconto e Entrega Grátis usando o Teorema Naive Bayes.
Passo 1) Criaremos tabelas de frequência para cada atributo usando os tipos de entrada mencionados no conjunto de dados, como dias, desconto e entrega gratuita.
Deixe o evento 'Comprar' denotado como 'A', e variáveis independentes, nomeadamente 'Desconto', 'Entrega gratuita' e 'Dia', denotadas como 'B'. Usaremos esses eventos e variáveis para aplicar o teorema de Bayes.
Passo 2) Agora vamos calcular as tabelas de probabilidade uma por uma.
1 exemplo:
Com base nesta tabela de probabilidade, calcularemos as probabilidades condicionais conforme abaixo.
P(A) = P(No Buy) = 6/30 = 0.2 P(B) = P(Weekday) = 11/30 = 0.37 P(B/A) = P(Weekday / No Buy) = 2/6 = 0.33
E encontre P(A/B) usando o teorema de Bayes,
P(A/B) = P(No Buy / Weekday) = P(Weekday / No Buy) * P(No Buy) / P(Weekday) = (2/6 * 6/30) / (11/30) = 0.1818
Da mesma forma, se A for Compra, então
= P(Buy / Weekday) = P(Weekday / Buy) * P(Buy) / P(Weekday) = (9/24 * 24/30) / (11/30) = 0.8181
Nota: Como o P(Compra | Dia da semana) é maior que P(Não compra | Dia da semana), podemos concluir que o cliente provavelmente comprará o produto em um dia da semana.
Passo 3) Da mesma forma, podemos calcular a probabilidade de ocorrência de um evento com base em todas as três variáveis. Agora calcularemos tabelas de probabilidade para todas as três variáveis usando as tabelas de frequência acima.
2 exemplo:
Agora, usando essas três tabelas de probabilidade, calcularemos se um cliente tem probabilidade de fazer uma compra com base em uma combinação específica de ‘Dia’, ‘Desconto’ e ‘Entrega gratuita’.
Aqui, vamos pegar uma combinação desses fatores:
- Dia = Feriado
- Desconto = Sim
- Entrega gratuita = Sim
Quando, A = Comprar
Calcule a probabilidade condicional de compra na seguinte combinação de dia, desconto e entrega gratuita.
Onde B está:
- Dia = Feriado
- Desconto = Sim
- Entrega gratuita = Sim
E A = Comprar
Portanto,
= P(A/B) = P(Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/Buy)) * P(Free Delivery=(Yes/Buy)) * P(Day=(Holiday/Buy)) * P(Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (19/24 * 21/24 * 8/24 * 24/30) / (20/30 * 23/30 * 11/30) = 0.986
Quando, A = Sem compra
Da mesma forma, calcule a probabilidade condicional de compra na seguinte combinação de dia, desconto e entrega gratuita.
Onde B está:
- Dia = Feriado
- Desconto = Sim
- Entrega gratuita = Sim
E A = Sem compra
Portanto,
= P(A/B) = P(No Buy / Discount=Yes, Day=Holiday, Free Delivery=Yes) = ( P(Discount=(Yes/No Buy)) * P(Free Delivery=(Yes/No Buy)) * P(Day=(Holiday/No Buy)) * P(No Buy) ) / ( P(Discount=Yes) * P(Free Delivery=Yes) * P(Day=Holiday) ) = (1/6 * 2/6 * 3/6 * 6/30) / (20/30 * 23/30 * 11/30) = 0.027
Passo 4) Conseqüentemente,
Probabilidade de compra = 0.986
Probabilidade de não compra = 0.027
Finalmente, temos probabilidades condicionais de comprar neste dia. Vamos agora generalizar essas probabilidades para obter a probabilidade dos eventos.
- Soma das probabilidades = 0.986 + 0.027 = 1.013
- Probabilidade de compra = 0.986 / 1.013 = 97.33%
- Probabilidade de não comprar = 0.027 / 1.013 = 2.67%
Observe que, como 97.33% é maior que 2.67%. Podemos concluir que o cliente médio comprará no feriado com desconto e entrega grátis.
Tipos de modelo Naïve Bayes
Existem muitos tipos de classificadores Naive Bayes. Aqui discutimos os classificadores Multinomial, Bernoulli e Gaussian Naive Bayes.
1. Bayes Ingênuo Multinomial
Este tipo de modelo Naive Bayes é usado para problemas de classificação de documentos. Funciona com recursos que representam a frequência das palavras em um documento. O classificador considera a ocorrência e a contagem de palavras para determinar a probabilidade de um documento pertencer a uma categoria específica, como esportes, política ou tecnologia.
2. Bernoulli Ingênuo Bayes
Isso é semelhante ao multinomial Naive Bayes. O classificador Bernoulli Naive Bayes é usado para tarefas de classificação de documentos. No entanto, ele usa preditores booleanos. Representa se uma palavra está presente ou não e assume apenas valores Sim ou Não. O classificador calcula as probabilidades com base na ocorrência ou não de uma palavra no texto.
3. Gaussiano Naive Bayes
Este classificador é usado no caso de valor contínuo, mas não de valor discreto. Este classificador calcula probabilidades usando os parâmetros do Gaussian distribuição, ou seja, média e variância.
A fórmula para probabilidade condicional muda para,
Benefícios e limitações do classificador Naive Bayes
Existem várias vantagens e desvantagens do algoritmo Naive Bayes no aprendizado de máquina.
Benefícios do classificador Naive Bayes
- Simplicidade e Eficiência: Naive Bayes é simples e fácil de treinar e implementar. É eficiente devido ao baixo custo computacional. Ele pode lidar com grandes conjuntos de dados com eficiência.
- Treinamento rápido e previsão: O Naive Bayes não requer tantos dados de treinamento devido à independência entre os recursos. Ele pode prever rapidamente assim que o modelo for treinado.
- Escalabilidade: Naive Bayes pode lidar com conjuntos de dados de alta dimensão com um grande número de recursos. Ele funciona bem mesmo quando o número de recursos é maior que o número de exemplos de treinamento. Ele é dimensionado com o número de pontos de dados e preditores. Ele lida com dados contínuos e discretos.
- Robustez para recursos irrelevantes: Não é sensível a recursos irrelevantes.
- Funciona bem com pequenos conjuntos de treinamento: Naive Bayes pode fornecer resultados razoáveis mesmo com dados de treinamento limitados. Ele pode lidar com situações onde o número de instâncias de treinamento é pequeno. Não requer tantos dados de treinamento.
Limitação do classificador Naive Bayes
Ingênuo Bayes em aprendizado de máquina assume que todos os recursos são independentes uns dos outros. Portanto, ele não pode aprender relações entre diferentes recursos nos dados. Ele trata cada recurso como se não tivesse relação com os outros.
Para superar esse problema, você pode usar Árvores de decisão, Florestas Aleatórias, Máquinas de Vetores de Suporte (SVM), Redes Neurais etc. Esses algoritmos têm a capacidade de aprender relacionamentos complexos e dependências entre recursos nos dados. Portanto, eles podem prever resultados mais precisos.
Aplicações do Classificador Naive Bayes
Como esse algoritmo é rápido e eficiente, você pode usá-lo para fazer previsões em tempo real.
Detecção de spam
Serviços de e-mail (como o Gmail) usam esse algoritmo para determinar se um e-mail é spam. Este algoritmo é excelente para filtragem de spam.
Análise de Sentimentos
Ele pode classificar o texto como positivo, negativo ou neutro com base em recursos como escolha de palavras, estrutura de frase e contexto. Ele encontra aplicações em monitoramento de mídia social, avaliações de clientes e pesquisas de mercado.
Classificação do Documento
Ele pode classificar documentos em categorias como esportes, política, tecnologia ou finanças com base na frequência ou presença de palavras ou recursos específicos no documento.
Sistemas de Recomendação
Ele pode analisar as preferências do usuário, dados históricos e recursos de itens para prever os interesses ou preferências do usuário para recomendar produtos, filmes ou artigos.
Este algoritmo classificador também é usado em reconhecimento facial, previsão do tempo, diagnóstico médico, compras, classificação de notícias, etc. Você pode implementar Naive Bayes em Python. Existe o classificador Naive Bayes sklearn, ou seja, sklearn.naive_bayes. É o módulo que implementa este algoritmo.
Conclusão
Os algoritmos Naive Bayes em aprendizado de máquina são classificadores usados principalmente na detecção de spam, classificação de notícias, análise de sentimento, previsão do tempo, compras, etc. Os algoritmos Naive Bayes são baseados no Teorema de Bayes. Esse algoritmo é simples e fácil de implementar. Por ser rápido, podemos usá-lo em aplicações em tempo real. Sua maior desvantagem é que ele assume recursos independentes (uma vez que recursos independentes raramente são possíveis na vida real, é conhecido como Ingênuo). Ele trata cada recurso como igual. Para superar essa desvantagem você pode usar outros classificadores como Decision Tree, Random Forest, Support Vector Machine (SVM) etc.