Bem-vindos à nossa comunidade!

Junte-se a nós e faça parte hoje mesmo!

Algoritmo de Naive Bayes (Aprendizagem Supervisionada)

over147

Membro
Cadastro
1/2/21
Postagens
26
Curtidas
33
Pontuação
39
Cidade
Fortaleza
Sejam bem vindos a mais um post de data science e machine learning, na primeira parte dessa postagem vamos tentar entender um pouco mais sobre aprendizagem supervisionada e o algoritmo de Naive Bayes. E no final do post vai ter uma suspres, para quem gosta de ver como funciona o processo de fazer uma modelagem de dados e treinamento de um modelo.

giphy_(2).gif
Ressaltando um pouco o assunto da primeira postagem do tópico de data science, a aprendizagem supervisionada é feita com base nos conjuntos de dados rotulados, ou seja, a máquina vai tentar encontrar uma função capaz de predizer rótulos desconhecidos com base nas características que os dados vão possuir. Podendo assumir dois tipos de abordagens, classificação e regressão.
Classificação: quando queremos fazer o mapeamento das caracteŕistcas da entrada dos dados para rótulos de saídas. Esse conjunto pode ser utilizado para classificar uma espécie de planta e etc.
Regressão: quando queremos fazer o mapeamento das caracteŕistcas da entrada dos dados para uma saída contínua, ou seja, retorna uma valor real e não uma etiqueta. Estes valores reais podem ser o valor de um apartamento com base em suas caracteŕisticas e etc.
Primeiramente vamos falar sobre o classificador probabilístico Naive Bayes, um classificador Naive Bayes é um modelo de aprendizagem de máquina baseado no teorema de Bayes que é usado para calcular a probabilidade de um evento dado que outro evento já ocorreu. Em suma pode se dizer, que é um modelo que cria tabelas probabilísticas. Sem mais delongas, vamos atendrar nesse mundo da matemática para entendermos melhor esse algoritmo.
Seja Z um espaço amostral e consideramos dois eventos, A e B. E tendo o seguinte formato P(A | B). Isso indica a probabilidade condicional do evento A, uma vez que B tenha ocorrido. O teorema de Bayes pode ser escrita matematicamente dessa forma:

Captura de tela de 2021-02-15 14-50-59.png
Onde temos que :
  • P(A | B) é a probabilidade posterior da classe (etiqueta) dado preditor (atributo).
  • P(A) é a probabilidade anterior da classe.
  • P(B|A) é a verossimilhança a qual é a probabilidade do preditor dada a classe.
  • P(B) é a probabilidade anterior do preditor.
Isso que dizer que podemos encontrar a probabilidade de A acontecer, dado que B ocorreu. Isso implica que a presença de um determinado recurso ou característica não irá afetar o outro. Assumindo que A = label ou etiqueta e B = features ou recursos.

Suponha os seguintes dados da tabela:

Captura de tela de 2021-02-15 14-59-15.png

Qual será a minha etiqueta de acordo com as probabilidades que podem ocorrer de SIM e NÃO. Com base nas 3 entradas que vou possuir (CHUVOSO, AMENO, ALTA ) ?
Para acharmos essa solução iremos aplicar o teorema de Bayes.

Primeiramente vamos criar uma tabela de frequência para a coluna de TEMPO:
Aqui vamos pontuar dentro da nossa tabela de frequência, a frequência de sim e não para cada um dos atributos da coluna tempo.
Captura de tela de 2021-02-15 15-06-12.png
O próximo passo é a criação de uma tabela de verossimilhança ou probabilística, de acordo com o que foi montado com a tabela de frequência.
Captura de tela de 2021-02-15 15-11-56.png
Com base nisso iremos montar as demais tableas.
Captura de tela de 2021-02-15 15-15-55.png

Captura de tela de 2021-02-15 15-17-17.png

Com base nessas tabelas de probabilidade montada, agora podemos resolver o problema de achar a etiqueta de acordo com as 3 entradas que vou possuir (CHUVOSO, AMENO, ALTA ).
Captura de tela de 2021-02-15 15-32-36.png
Captura de tela de 2021-02-15 15-32-58.png
Com isso temos:

P(SIM| X ) = 0.09375 / 0.03703 + 0.09375 = 0.71
P(NÃO|X) = 1 - 0.71 = 0.29


Logo descobrimos que o label a ser predito com base nas suas features é SIM.

Com base nessas informações sobre o algoritmo de Bayes, espero que você tenha compreendido um pouco mais sobre o mundo de data science. No link a seguir o repo-naive-bayes é um repositório sobre uma aplicação de data science. Com os seguintes tópicos abordados EDA (Análise Exploratória de Dados), Pré-processamento dos dados e o treinamento de um modelo de aprendizagem de máquina. Espero que tenham gostado e até a próxima galera.​
 

Attachments

  • Captura de tela de 2021-02-15 18-09-17.png
    Captura de tela de 2021-02-15 18-09-17.png
    7,3 KB · Visualizações: 0

Arthur Bandeira

Arthur Oliveira
Moderador
Cadastro
24/9/20
Postagens
81
Curtidas
124
Pontuação
90
Cidade
Fortaleza
Achei massa o conceito! Tentei acompanhar um pouco os calculos e as tabelas mas acabei me perdendo um pouco 😅 @over147 , como isso é aplicado no nosso dia a dia? Tipo aquelas sugestões de lojas? Tipo: "Pessoas que compraram isso, se interessaram também nesses itens". Seria isso?
 

over147

Membro
Cadastro
1/2/21
Postagens
26
Curtidas
33
Pontuação
39
Cidade
Fortaleza
Achei massa o conceito! Tentei acompanhar um pouco os calculos e as tabelas mas acabei me perdendo um pouco 😅 @over147 , como isso é aplicado no nosso dia a dia? Tipo aquelas sugestões de lojas? Tipo: "Pessoas que compraram isso, se interessaram também nesses itens". Seria isso?
Isso mesmo, tem vários tipos de aplicabilidade vai depender do problema e o crucial se vai ter uma boa quantidade de dados para se trabalhar em cima disso. Um exemplo muito bacana é o filtro de spam, onde a inteligência do google consegue diferenciar o que é um spam e o que não é spam. Esse algoritmo de Naive Bayes, é muito bom para problemas de análise de sentimento, filtragem de spam e em geral o que envolve dados desestruturados dos tipos textuais. Esse modelo é rápido e fácil de implementar, o que deixa mais "precário" esse modelo é porque ele assume que nossas features devem ser independentes. Mas no mundo real, a maioria dos problemas a gente vai possuir features dependentes, ou seja, tenho uma correlação entre minhas features de entrada para prever um label. Dessa forma, diminuindo a peformance do classificador Naive Bayes. E o nome de Naive vem justamente por conta disso, ser naive ou ingênuo em português.
 
Top