image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Daniel Bevilacqua
Daniel Bevilacqua13/02/2025 15:08
Compartir

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.

    image

    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.

    image

    • 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

    Regressão linear

    • : 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

    Regressão logística

    : 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:  

     Suzano Python Developer

    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

    K-means Scikit

    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

    Compartir
    Comentarios (0)