Explorando as aplicações de machine learning da linguagem Python dentro da área de dados
A linguagem Python ganhou muita popularidade ao longo dos últimos anos devido a sua sintaxe simples e também devido a várias bibliotecas e frameworks especializados que permitem executar diversas aplicações práticas. Neste artigo um exemplo de código que mostra como funciona na prática o ciclo de vida de um projeto de aprendizado de máquina e ao longo do artigo vou mostrar aplicações práticas de aprendizado de máquina que são utilizados no nosso dia-a-dia e que facilitam a nossa vida
Analisando o ciclo de vida de um projeto de machine learning de forma simplificada com exemplos de código
A Árvore de Decisão é um algoritmo de aprendizado supervisionado que pode ser usado tanto para problemas de classificação quanto de regressão. A sua principal vantagem para iniciantes é a fácil interpretação do seu código. Uma árvore de decisão é fácil de visualizar e entender, o que facilita a explicação de cada etapa do processo de Machine Learning.
Vamos usar a Árvore de Decisão como exemplo para detalhar cada fase do ciclo de vida de um projeto de Machine Learning, desde a preparação dos dados até o deploy.
1. Preparação dos Dados (Data Preparation)
Esta fase é crucial e geralmente a mais demorada em qualquer projeto de Machine Learning. A qualidade dos dados impacta diretamente a performance do modelo.
- Coleta de Dados: O primeiro passo é coletar os dados relevantes para o problema que você deseja resolver. Para um exemplo com Árvore de Decisão, imagine que queremos prever se um cliente irá cancelar um serviço de assinatura (churn). Precisamos coletar dados sobre os clientes, como idade, tempo de assinatura, uso do serviço, histórico de pagamentos, etc.
- Limpeza de Dados: Dados do mundo real frequentemente contêm erros, valores faltantes ou inconsistências. É necessário limpar os dados para garantir a qualidade. Isso pode incluir:
- Tratar valores faltantes: Remover as linhas com valores faltantes ou preencher com valores médios, medianos ou outros métodos de imputação.
- Remover outliers: Identificar e tratar valores que estão muito fora do padrão.
- Corrigir erros: Corrigir dados inconsistentes ou errados.
- Seleção de Features (Atributos): Nem todos os dados coletados serão relevantes para o estimador. Selecionar as features mais importantes ajuda a simplificar o modelo inteligente, melhorar a performance e reduzir o tempo de treinamento. Para Árvores de Decisão, podemos usar técnicas como importância de features fornecidas pelo próprio algoritmo ou métodos de seleção baseados em estatística.
- Engenharia de Features (Opcional, mas recomendado para aprendizado): Criar novas features a partir das existentes pode melhorar a performance do modelo. Por exemplo, a partir da data de início e data de fim de assinatura, podemos criar uma feature 'tempo de assinatura' em meses.
- Divisão dos Dados: Os dados precisam ser divididos em pelo menos dois conjuntos:
- Conjunto de Treinamento: Usado para treinar o modelo, ou seja, para o algoritmo aprender os padrões nos dados. Geralmente corresponde a 70-80% dos dados.
- Conjunto de Teste: Usado para avaliar a performance do modelo após o treinamento, simulando dados não vistos pelo modelo durante o treinamento. Geralmente 20-30% dos dados.
- Em projetos mais complexos, pode-se usar também um Conjunto de Validação para ajustar hiperparâmetros do modelo durante o treinamento.
2. Treinamento do Modelo (Model Training)
Nesta fase, o algoritmo de Machine Learning aprende com os dados de treinamento.
- Escolha do Algoritmo: Neste caso, escolhemos a Árvore de Decisão. É importante explicar que existem outros algoritmos (Regressão Linear, Regressão Logística, Redes Neurais, etc.), mas a Árvore de Decisão é didática para iniciantes.
- Treinamento do Algoritmo: O algoritmo da Árvore de Decisão aprende a criar regras de decisão com base nos dados de treinamento. Ele faz isso dividindo os dados em subconjuntos menores com base nas features, buscando maximizar a "pureza" (homogeneidade) das classes em cada subconjunto. Conceitos chave para explicar são:
- Nós de decisão: Representam uma feature (atributo) que será testada.
- Ramos: Representam o resultado do teste e levam a outros nós ou nós folha.
- Nós folha (ou terminais): Representam a decisão final ou a previsão.
- O algoritmo busca dividir os dados de forma que a impureza (ex: Entropia ou Gini) seja minimizada a cada divisão.
- Ajuste de Hiperparâmetros (Opcional, mas importante para melhorar o modelo): As Árvores de Decisão têm hiperparâmetros que podem ser ajustados para controlar a complexidade da árvore e evitar overfitting (quando o modelo aprende muito bem os dados de treinamento, mas performa mal em dados novos). Exemplos de hiperparâmetros são a profundidade máxima da árvore (max_depth), número mínimo de amostras para dividir um nó (min_samples_split), etc.
3. Implementação/Construção do Modelo (Model Implementation/Building)
Nesta fase, construímos o modelo utilizando uma biblioteca de Machine Learning.
- Codificação: Usando uma biblioteca como scikit-learn em Python, a implementação de uma Árvore de Decisão é relativamente simples. Veja um exemplo conceitual em Python:
from sklearn.tree import DecisionTreeClassifier # Para classificação
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Suponha que você já preparou os dados X (features) e y (variável alvo)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Divide os dados
arvore_decisao = DecisionTreeClassifier(max_depth=3) # Cria o modelo de Árvore de Decisão, ajustando hiperparâmetro
arvore_decisao.fit(X_train, y_train) # Treina o modelo com os dados de treinamento
# (A fase de teste e deploy virão depois)
- Visualização da Árvore (Ótimo para Árvores de Decisão): Uma das grandes vantagens das Árvores de Decisão é que podemos visualizar a árvore gerada. Isso ajuda muito na interpretação e no entendimento de como o modelo toma decisões.
Imagem de exemplo de uma árvore de decisão simples, mostrando os nós de decisão, ramos e nós folha.
4. Testes e Validação do Modelo (Model Testing and Validation)
Após treinar o modelo, precisamos avaliar o quão bem ele performa em dados não vistos (conjunto de teste).
- Previsões no Conjunto de Teste: Usamos o modelo treinado para fazer previsões no conjunto de teste:
y_pred = arvore_decisao.predict(X_test) # Faz previsões nos dados de teste
- Métricas de Avaliação: Precisamos de métricas para quantificar a performance do modelo. As métricas dependem do tipo de problema:
- Para Classificação:
- Acurácia (Accuracy): Proporção de previsões corretas.
- Precisão (Precision): Das previsões positivas, quantas são realmente positivas.
- Recall (Sensibilidade): De todas as instâncias positivas reais, quantas foram corretamente previstas como positivas.
- F1-Score: Média harmônica de Precision e Recall.
- Matriz de Confusão: Visualiza o número de verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos.
Imagem de exemplo de uma matriz de confusão, explicando os quadrantes.
- Para Regressão:
- Erro Médio Absoluto (MAE)
- Erro Quadrático Médio (MSE)
- Raiz do Erro Quadrático Médio (RMSE)
- R-squared (Coeficiente de Determinação)
- Validação Cruzada (Opcional, mas recomendado para efetuar uma avaliação mais robusta da performance do algoritmo): Para uma avaliação mais robusta, podemos usar validação cruzada. Ela divide os dados de treinamento em várias partes (folds), treina o modelo em algumas partes e valida em outra, repetindo o processo várias vezes e calculando a média das métricas.
- documentação técnica referente a validação cruzada: (https://scikit-learn.org/stable/modules/cross_validation.html)
- Isso dá uma estimativa mais confiável da performance do modelo em dados não vistos.
5. Deploy (Deployment)
A fase final é colocar o modelo em produção para que ele possa ser usado para fazer previsões em dados reais.
- Integração em um Sistema: O modelo treinado precisa ser integrado em um sistema ou aplicação para ser utilizado. Isso pode ser:
- API (Application Programming Interface): Criar uma API que recebe dados como entrada e retorna a previsão do modelo como saída. Essa API pode ser consumida por outras aplicações web, mobile, etc.
- Incorporação em um Aplicativo Existente: Integrar o modelo diretamente em um aplicativo já existente.
- Batch Processing: Executar o modelo periodicamente para processar um grande volume de dados (ex: previsões de churn de clientes mensalmente).
- Monitoramento do Modelo: Após o deploy, é importante monitorar a performance do modelo em produção. A performance do algoritmo pode se degradar ao longo do tempo devido a mudanças nos dados (drift de dados). É necessário monitorar métricas de performance e retreinar o modelo periodicamente com dados mais recentes, se necessário.
- Exemplo Conceitual de Deploy: Imagine que você criou um modelo de Árvore de Decisão para prever se um email é spam ou não. No deploy, você pode criar um serviço web que recebe o texto de um email como entrada, usa o modelo treinado para classificar o email como "spam" ou "não spam" e retorna essa classificação.
Bibliotecas e frameworks do Python
Pandas: Biblioteca voltada para a manipulação e análise de dados
Matplotlib: para criação de gráficos e visualizações de dados em geral, feita para a linguagem de programação Python e é uma extensão da biblioteca de matemática NumPy.
Numpy: é uma biblioteca para a linguagem de programação Python, que suporta o processamento de grandes, multidimensionais arranjos e matrizes, juntamente com uma grande coleção de funções matemáticas de alto nível para operar sobre estas matrizes
Scipy: é uma biblioteca Open Source em linguagem Python que foi feita para matemáticos, cientistas e engenheiros. Também tem o nome de uma popular conferência de programação científica com Python. A sua biblioteca central é NumPy que fornece uma manipulação conveniente e rápida de um array N-dimensional
OpenCV: é totalmente livre ao uso acadêmico e comercial, para o desenvolvimento de aplicativos na área de Visão computacional e além disso é uma biblioteca que já tem inteligência artificial dentro dela, com ela você consegue facilmente detectar a face das pessoas com poucas linhas de código
Scikit-Learn: Esta biblioteca dispõe de ferramentas simples e eficientes para análise preditiva de dados, é reutilizável em diferentes situações, possui código aberto, sendo acessível a todos e foi construída sobre os pacotes NumPy, SciPy e Matplotlib
Keras: é uma biblioteca de rede neural de código aberto escrita em Python. Ele é capaz de rodar em cima de TensorFlow e Pytorch
Tensor Flow: é uma biblioteca de código aberto criada para aprendizado de máquina, computação numérica e muitas outras tarefas. Foi desenvolvido pelo Google em 2015 e rapidamente se tornou uma das principais ferramentas para machine learning e deep learning.
PyTorch é um framework de aprendizagem profunda de código aberto baseada em software, usada para construir redes neurais, combinando a biblioteca de aprendizado de máquina da Torch com uma API de alto nível baseada em Python. Sua flexibilidade e facilidade de uso, entre outros benefícios, a tornaram a estrutura líder de ML para comunidades acadêmicas e de pesquisa
…… Essas são as principais bibliotecas e frameworks de machine learning do Python
Aplicações de Machine Learning no nosso dia-a-dia
Machine learning
Aplicações com base em modelos de aprendizado lineares
- : Previsão do preço das ações, Previsão do preço da habitação, Previsão do valor da vida útil do cliente
: Previsão de pontuação de risco de crédito ( muito usado em sistemas bancários) Previsão de rotatividade de clientes
Regressão Ridge : Estimativa para se efetuar a manutenção preditiva em equipamentos ou máquinas, estimativa de previsão de receita de vendas de automóveis
Regressão de Lasso: Estimativa da previsão do preço da habitação previsão de resultados clínicos com base em dados de saúde
Aplicações com base em modelos de aprendizado de árvore de decisão
Árvore de decisão: Predição de rotatividade de clientes, Modelo ideal para a estimativa de pontuação de crédito, Cálculo de predição de doenças
Floresta randômica: Modelo de pontuação de crédito, efetua a previsão de preços de habitação
Regressão de aumento de gradiente: Cálculo da previsão de emissões de carros, previsão do valor da tarifa de carona
XG Boost: Cálculo da previsão de Churn (cancelamento de assinatura) Processamento de sinistros em seguros
Regressor Light GBM: Previsão do tempo de voo para a companhia aérea Previsão dos níveis de colesterol com base em dados de saúde
Aplicações com base em modelos de aprendizado de clusterização
Algoritmo K-Means: Pode ser usado para efetuar Segmentação de clientes e para Sistemas
Agrupamento hierárquico: Detecção de fraude e Agrupamento de documentos com base na semelhança
Modelos de Mistura Gaussiana: Pode ser usado para efetuar Segmentação de clientes e para Sistemas de recomendação
Aplicações com base na Associação
Algoritmo Apriori: Colocações de produtos, Mecanismos de recomendação, Otimização de promoção
Deep Learning:
Redes neurais de classificação para economia de pesticidas e para evitar devastação ambiental em áreas agrícolas (chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/ALGORITMO DE DEEP LEARNING PARA CLASSIFICAÇÃO DE ÁREAS DE LAVOURA COM VANTS
)
Redes neurais de classificação e detecção que veículos autônomos utilizam para ver o trânsito e poderem efetuar o deslocamento do veículo (Análise e fusão de imagens 2D e 3D com vistas para detecção e classificação de sinais…)
Detecção e classificação de pneumonia por meio de radiografias de tórax (chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://rosario.ufma.br/jspui/bitstream/123456789/3508/1/GABRIEL-SOUSA.pdf)
Aplicações com base em modelos de aprendizado de clusterização
Algoritmo K-Means: Pode ser usado para efetuar Segmentação de clientes e para Sistemas
Agrupamento hierárquico: Detecção de fraude e Agrupamento de documentos com base na semelhança
Modelos de Mistura Gaussiana: Pode ser usado para efetuar Segmentação de clientes e para Sistemas de recomendação
Aplicações com base na Associação
Algoritmo Apriori: Colocações de produtos, Mecanismos de recomendação, Otimização de promoção
Conclusão: Os algoritmos de Machine Learning permitem que nós como desenvolvedores desenvolvam sistemas que irão efetuar soluções que irão simplificar processos empresariais facilitando o trabalho das pessoas que irão efetuar a tomada de decisão empresarial
Se você deseja começar a estudar o Python, aprender como ele funciona e criar os seus primeiros projetos com essa fantástica linguagem o Bootcamp Suzano Python Developer é o treinamento ideal. Este Bootcamp vai te ensinar os seguintes tópicos:
- Sintaxe Básica do Python: tipos de operadores com Python, estruturas condicionais e de Repetição em python, manipulação de Strings com python e as principais funções python
- Estrutura de Dados com Python: trabalhando com listas em python, conhecendo tuplas em python, explorando conjuntos em Python, aprendendo a utilizar dicionários em Python, lidando com data, hora e fuso horário no python
- Programação Orientada a Objetos com Python: introdução à programação orientada a objetos (POO) com python, aprendendo o conceito de herança com python, aplicando encapsulamento em python, conhecendo polimorfismo em python, interfaces e classes abstratas com python
- Projetos práticos para o seu portfólio
- Mentorias para fortalecer suas soft skills: Dicas de produtividade com ferramentas de IA, Introdução a cloud da Azure do zero, Como organizar sprints para agilizar o desenvolvimento de software
Para mais detalhes e inscrição, acesse:
Metodologia de pesquisa para a elaboração deste artigo
Digitei o seguinte pedido no Gemini 2.0 Flash Thinking Experimental: Estou procurando um algoritmo geral de Machine Learning para explicar em um artigo para iniciantes em Machine Learning, existe um algoritmo geral que exemplifique desde a preparação, treinamento, implementação, testes e deploy?
A IA generativa do Google me retornou o parágrafo inicial completo deste artigo e fiz algumas modificações no texto gerado
O restante do artigo elaborei com os estudos na área principalmente com os bootcamps aqui da DIO e com pesquisas no Google
Documentação Técnica Bibliotecas e Frameworks:
https://scikit-learn.org/stable/modules/cross_validation.html
https://pandas.pydata.org/, https://matplotlib.org/, https://numpy.org/, https://scipy.org/, https://opencv.org/, https://scikit-learn.org/, https://keras.io/, https://www.tensorflow.org/?hl=pt-br, https://pytorch.org/
Documentação Técnica para o estudo das aplicações de machine Learning
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html
Agrupamento hierarquico scikit
https://scikit-learn.org/stable/modules/mixture.html
Fontes consultadas:
https://www.ibm.com/br-pt/topics/logistic-regression
https://developers.google.com/machine-learning/crash-course/linear-regression?hl=pt-br
https://blog.somostera.com/data-science/arvores-de-decisao
https://didatica.tech/o-que-e-e-como-funciona-o-algoritmo-randomforest/
https://pt.wikipedia.org/wiki/Gradient_boosting
https://www.ibm.com/br-pt/topics/xgboost
https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMRegressor.html
https://didatica.tech/o-que-e-tensorflow-para-que-serve/
https://www.ibm.com/br-pt/topics/pytorch
https://www.datacamp.com/pt/cheat-sheet/machine-learning-cheat-sheet
Análise e fusão de imagens 2D e 3D com vistas para detecção e classificação de sinais...
Deep Learning para a Detecção e Classificação de Pneumonia por Radiografias do Tórax
https://larcc.setrem.com.br/wp-content/uploads/2020/11/SAPS_2020_Anthony.pdf