Como Utilizar o Naive Bayes para Prever Salários com o Dataset adult.csv
Resumo
Neste artigo, vamos explorar o modelo de Machine Learning Naive Bayes, aplicando-o para prever se uma pessoa ganha mais ou menos de 50 mil dólares por ano, utilizando a base de dados adult.csv. O artigo começa com uma explicação teórica detalhada sobre o Naive Bayes e a correção Laplaciana, passa pela implementação do modelo em Python, com avaliação de acurácia e matriz de confusão, e conclui com uma análise das vantagens e desvantagens do modelo. Essa leitura é essencial para entender os pontos fortes e limitações do Naive Bayes em bases de dados grandes.
Principais Tópicos Abordados
Introdução ao Naive Bayes
Teoria e Funcionamento do Naive Bayes
Correção Laplaciana no Naive Bayes
Probabilidades Apriori e Posteriori
Vantagens e Desvantagens do Naive Bayes
Implementação em Python com Código Explicado
Acurácia e Matriz de Confusão
Conclusão e Próximos Passos
Importante: Para seguir este artigo, leia primeiro os artigos abaixo na sequência sugerida. Cada artigo fornece a base necessária para compreender o próximo, garantindo que você entenda todo o fluxo de trabalho até este ponto.
Artigo 1: Aplicação de Machine Learning: Um Guia para Iniciar como Modelos em Classificação
Artigo 2: Explorando a Classificação em Machine Learning: Tipos de Variáveis
Artigo 3: Explorando o Google Colab: Seu Aliado para Codificar Modelos de Machine Learning
Artigo 4: Explorando Dados com Python no Google Colab: Um Guia Prático Utilizando o Dataset adult.csv
Artigo 5: Desmistificando a Divisão de Previsores e Classe e o Tratamento de Atributos Categóricos com LabelEncoder e OneHotEncoder
Artigo 6: Escalonamento de Dados: A Base para Modelos Eficientes
Artigo 7: Aprenda a Dividir em Treinamento e Teste os Dados de um Dataset Utilizando Python
Iniciando o processo no Google Colab
Antes de qualquer coisa, acesse este link do notebook e selecione Arquivo > Salvar uma cópia no Drive. Lembre-se de que o dataset (adult.csv) precisa ser carregado novamente a cada novo post (mais informações no Artigo 4 acima), pois cada tutorial cria um notebook novo, adicionando apenas o código necessário apresentado neste artigo, porém o notebook está com todo o código gerado até o momento. Uma cópia do notebook será salva no Google Drive, dentro da pasta Colab Notebooks, mantendo o processo organizado e contínuo.
Introdução
Neste artigo, você aprenderá a utilizar o modelo Naive Bayes para prever se uma pessoa ganha mais ou menos de 50 mil dólares por ano. Utilizaremos a base de dados adult.csv e exploraremos o funcionamento do Naive Bayes, seu potencial e suas limitações. Com uma abordagem prática, vamos implementar o modelo em Python e avaliar o desempenho. Esta leitura lhe dará uma visão ampla sobre como o Naive Bayes trabalha e quando ele é uma boa opção para suas aplicações de Machine Learning.
Explicação Teórica sobre o Modelo Naive Bayes
O Naive Bayes é um modelo de Machine Learning probabilístico, baseado no Teorema de Bayes, que calcula a probabilidade de uma amostra pertencer a uma determinada classe. Sua abordagem se destaca por transformar dados em uma tabela de probabilidades, conhecida como tabela de frequência ou de probabilidade condicional. No Naive Bayes, os atributos são considerados independentes uns dos outros (daí o “naive” ou ingênuo), o que torna o modelo simples e rápido.
Nessa tabela, o modelo calcula probabilidades para cada combinação de atributos, multiplicando as probabilidades de cada variável, considerando-as independentes. Assim, ele estima a probabilidade de uma amostra pertencer a uma classe específica.
Correção Laplaciana: Evitando Zeros nas Probabilidades
A correção Laplaciana é aplicada para evitar que, durante a multiplicação das probabilidades, algum valor zerado no conjunto de dados leve o modelo a um resultado incorreto. Em vez de usar um valor zero, adicionamos um pequeno valor, geralmente “1”, a cada contagem, ajustando a probabilidade para um valor mínimo e evitando que a multiplicação resulte em zero.
Neste exemplo, aplicamos a correção para aumentar as probabilidades sem alterar muito o resultado final.
Raio (Temor Radius), Probabilidade Apriori e Posteriori
Raio (Temor Radius): Refere-se ao intervalo dentro do qual o modelo “Naive” assume independência condicional entre variáveis.
Probabilidade Apriori: Representa a probabilidade inicial de cada classe antes de observar os dados. No exemplo da renda, seria a probabilidade de uma pessoa ganhar mais de 50 mil dólares sem observar os demais fatores.
Probabilidade Posteriori: Esta é a probabilidade final após considerar os dados observados (idade, gênero, etc.). Ela indica a probabilidade de uma pessoa ganhar mais de 50 mil dólares dado seu perfil.
Esses conceitos são fundamentais para entender como o Naive Bayes calcula as probabilidades das classes.
Vantagens e Desvantagens do Modelo Naive Bayes
Vantagens:
Rapidez e Simplicidade: O Naive Bayes é rápido e fácil de interpretar.
Alta Dimensionalidade: Lida bem com datasets de alta dimensionalidade.
Eficácia em Datasets Pequenos: Performances elevadas em datasets de 200 a 2000 linhas.
Desvantagens:
Assunção de Independência: A independência entre atributos nem sempre é válida na prática.
Bases de Dados Grandes: Em bases grandes, como “adult.csv”, seu desempenho pode diminuir.
Implementação em Python: Treinamento, Acurácia e Matriz de Confusão
Nesta seção, vamos treinar o modelo Naive Bayes com Python e avaliar sua performance em termos de acurácia e matriz de confusão.import pickle from sklearn.naive_bayes import GaussianNB from sklearn.metrics import accuracy_score, confusion_matrix, ConfusionMatrixDisplay, classification_report
with open('adult.pkl', 'rb') as fl: X_adult_treinamento, y_adult_treinamento, X_adult_teste, y_adult_teste = pickle.load(fl)
# Verificando as dimensões dos dados print(X_adult_treinamento.shape, y_adult_treinamento.shape) print(X_adult_teste.shape, y_adult_teste.shape)
# Instanciando e treinando o modelo Naive Bayes naive_adult = GaussianNB() naive_adult.fit(X_adult_treinamento, y_adult_treinamento)
# Realizando previsões prev = naive_adult.predict(X_adult_teste) print(y_adult_teste) # Valores reais
# Acurácia e Matriz de Confusão print("Acurácia:", accuracy_score(y_adult_teste, prev)) cm = confusion_matrix(y_adult_teste, prev) print("Matriz de Confusão:\n", cm)
cm_display = ConfusionMatrixDisplay(cm, display_labels=['<=50K', '>50K']).plot() print("Relatório de Classificação:\n", classification_report(y_adult_teste, prev))
No código, carregamos as variáveis, treinamos o modelo e fazemos previsões. O accuracy_score calcula a acurácia, enquanto confusion_matrix e classification_report nos dão uma visão detalhada dos acertos e erros do modelo.
Acurácia e Matriz de Confusão
Isso significa que o modelo previu corretamente 2889 pessoas com renda menor e 2238 com renda maior. No entanto, houve 4531 erros para a classe de renda maior, destacando que o Naive Bayes não lida bem com a base adult.csv devido ao tamanho dos dados. Ainda assim, sem o escalonamento, a acurácia poderia subir para cerca de 70%, mas nosso foco é demonstrar o Naive Bayes em sua forma pura.
Conclusão
O modelo Naive Bayes, como demonstrado, é uma ferramenta rápida e poderosa em datasets menores e de alta dimensionalidade, mas apresenta limitações em bases maiores devido à sua suposição de independência entre variáveis. Apesar disso, a simplicidade do Naive Bayes o torna uma opção valiosa para iniciantes e para casos onde o tempo de processamento é uma prioridade.
Em artigos futuros, vamos comparar o Naive Bayes com outros modelos para analisar a performance e a adequação de cada um a diferentes tipos de dados. Fique atento para os próximos posts com detalhes e insights adicionais.
Livros que Indico
Estatística Prática para Cientistas de dados — neste link tem uma análise bem completa do livro.
Introdução à Computação Usando Python
2041: Como a Inteligência Artificial Vai Mudar Sua Vida nas Próximas Décadas — neste link tem uma análise completa do livro.
Curso Intensivo de Python — neste link tem uma análise completa do livro.
Entendendo Algoritmos. Um guia Ilustrado Para Programadores e Outros Curiosos
Novos Kindles
Fiz uma análise detalhada dos novos Kindles lançados este ano, destacando suas principais inovações e benefícios para os leitores digitais. Confira o texto completo no link a seguir: O Fascinante Mundo da Leitura Digital: Vantagens de Ter um Kindle.
Amazon Prime
Entrar no Amazon Prime oferece uma série de vantagens, incluindo acesso ilimitado a milhares de filmes, séries e músicas, além de frete grátis em milhões de produtos com entrega rápida. Os membros também desfrutam de ofertas exclusivas, acesso antecipado a promoções e benefícios em serviços como Prime Video, Prime Music e Prime Reading, tornando a experiência de compra e entretenimento muito mais conveniente e rica.
Se você tiver interesse, entre pelo link a seguir: AMAZON PRIME, que me ajuda a continuar na divulgação da inteligência artificial e programação de computadores.
















