Engenharia de recursos Transforme dados brutos em recursos valiosos com Feature Engine
Thiago BenevidesSobre o livro
Decidi escrever este livro porque percebi uma escassez de material em português sobre esse tema que, para mim, é crucial para um bom desenvolvimento de modelos de machine learning, isto é, modelos eficientes e livres de enviesamento. Fui inspirado a escrever por um livro chamado "Mulheres Invisíveis: O viés dos dados em um mundo projetado por homens", da escritora Caroline Criado Perez. A leitura desse livro me mostrou como um mau gerenciamento de recursos para uma posterior análise pode reforçar preconceitos e até mesmo causar a segregação. Acredito que a chave para evitar esses problemas é ser crítico em relação aos dados usados para treinar nossos modelos de machine learning.
Neste livro, utilizo a linguagem de programação Python 3, e os códigos foram escritos no Google Colaboratory. Entretanto, você pode utilizar o Anaconda ou outro editor de texto de sua preferência. Os códigos com que trabalharemos podem ser encontrados no repositório do GitHub: https://github.com/ThiagoBenevides/feature-engine-transformando-dados-brutos-em-recursos.
Para quem é o livro
Este livro foi elaborado para pessoas que já possuem conhecimentos básicos em Python e análise de dados e desejam aprofundar seus conhecimentos em engenharia de recursos. Com a engenharia de recursos, é possível aprimorar ainda mais seus modelos de machine learning, resultando em uma melhor compreensão dos seus dados e maior precisão dos seus modelos.
Porém, caso você ainda não possua conhecimento em Python e análise de dados, não se preocupe! Para que você consiga acompanhar melhor o conteúdo deste livro, recomendo dois livros também da Casa do Código que vão lhe ajudar a se familiarizar com esses temas. O primeiro é o "Python: Escrevendo seus primeiros programas", do Felipe Cruz, que vai lhe apresentar os conceitos básicos da linguagem Python e ajudar você a escrever seus primeiros códigos. O segundo é o livro "Machine learning: Introdução à classificação", de Guilherme Silveira e Bennett Bullock, que aborda os conceitos fundamentais de machine learning e como aplicá-los. Com esses dois livros em seu arsenal, você estará bem-preparado(a) para se aprofundar ainda mais em análise de dados e aproveitar ao máximo o conteúdo deste livro.
Introdução à engenharia de recursos
O termo "aprendizado de máquina", ou "machine learning", está cada vez mais popular. Startups e empresas utilizam esse recurso para conseguir extrair insights ou fazer previsões a respeito de algo, por meio de algoritmos baseados em modelos matemáticos e estatísticos.
Por exemplo, suponha que trabalhamos em uma loja que serve cafés e acompanhamentos. Poderíamos usar as informações dos nossos clientes para entendermos o padrão de compra e quais tipos de cafés mais saem e em quais dias e, com esses dados, preparar nossos estoques e até mesmo oferecer descontos ou novos tipos de acompanhamentos de acordo com o gosto de nossos clientes.
Eu utilizei o café, e não algo tecnológico, porque eu quero que logo neste começo você já consiga compreender que machine learning e análise de dados não estão somente no mundo da tecnologia. Onde quer que existam dados e sua coleta, é possível desenvolver a análise de dados e até mesmo um algoritmo de machine learning para prever situações futuras.
Porém, nem tudo são flores: se por algum motivo você utilizar dados ruins para treinar seus modelos ou até mesmo para fazer suas análises, você poderá chegar a conclusões equivocadas, o que pode levar você a ter prejuízo, ao invés de ter lucro.
Então, antes de utilizar esses dados para o que quer que seja, você precisa saber trabalhar neles, seja ajustando-os, seja criando novos dados a partir dos dados existentes. Isso tem um nome: chama-se "feature engine" ou, em português, "engenharia de recursos".
A engenharia de recursos é uma das etapas fundamentais no desenvolvimento de projetos de machine learning, pois é através dela que conseguimos transformar e extrair informações relevantes dos dados brutos, de forma a criarmos novas variáveis, que também são chamadas de recursos.
Em machine learning, um recurso (também conhecido como feature) é uma medida ou característica que descreve um determinado objeto ou evento de interesse. Esses recursos são utilizados para alimentar os modelos de aprendizado de máquina, que aprendem a partir de características e, desta forma, conseguem realizar suas previsões. E esses recursos podem ser de várias formas, por exemplo: imagens, textos ou valores numéricos.
A principal vantagem de utilizarmos a técnica de feature engine é a melhoria do desempenho dos modelos de machine learning. Ao criarmos recursos mais significativos e relevantes, é possível aumentarmos a precisão e a acurácia dos algoritmos de aprendizado de máquina. Além disso, a engenharia de recursos pode ajudar a lidar com problemas de dimensionalidade, levando a um modelo mais eficiente e robusto.
Outra vantagem já citada, mas que vale ressaltar, é a de que a engenharia de recursos pode nos ajudar a evitar falsas análises e equívocos ao extrairmos informações relevantes e significativas dos dados. Por exemplo, ao analisarmos os dados de transições financeiras a fim de se evitar fraudes, podemos criar novos recursos que capturem características específicas das transações suspeitas. Esses novos recursos podem ajudar a identificar padrões e características únicas que indiquem uma transação fraudulenta, evitando falsos positivos e aumentando a eficácia do modelo.
Como o livro está estruturado
O livro foi dividido em 5 partes, cada uma dedicada a um tópico relevante para engenharia de recursos. Em cada uma das partes, você vai encontrar uma explicação sobre o assunto para compreender melhor esse tópico e, em seguida, você terá um projeto prático, onde aplicaremos as bibliotecas scikit-learn e feature-engine em um conjunto de dados maior.
Parte 1: Trabalhando com valores ausentes
Nesta parte, vamos discutir os processos de substituição de valores ausentes em um conjunto de dados. Veremos como substituir valores ausentes em um conjunto de dados numéricos utilizando os métodos de substituição pela média e depois pela mediana. Em seguida, abordaremos os valores ausentes em um conjunto de dados categóricos, aprendendo a substituir os valores ausentes pela moda.
Por fim, vamos explorar os processos de substituição de valores ausentes em um conjunto de dados sobre o Titanic. Veremos como utilizar a biblioteca scikit-learn e a feature-engine.
Parte 2: Trabalhando com valores numéricos
Nesta parte, aprenderemos sobre a técnica de discretização de valores numéricos, que consiste em transformar um conjunto de dados contínuos em um conjunto com menos valores distintos. Discutiremos os diferentes métodos para a discretização, por exemplo, por faixa de valor igual e frequência; além disso, veremos dois métodos não supervisionados, que são os *k-means* e a *árvore de classificação*
Para finalizar essa parte, utilizaremos os dados do Titanic para aplicar as técnicas de discretização que vimos, mais especificamente, veremos o processo de discretização na idade dos passageiros.
Parte 3: Padronização de recursos
Nesta parte, abordaremos a importância da padronização de recursos em um conjunto de dados, bem como as diferentes técnicas de padronização disponíveis, como a normalização, média e min-max.
Para finalizar essa parte, vamos aplicar a padronização em um conjunto de dados que coletaremos da Bolsa de Valores de São Paulo, a Bovespa, com auxílio da biblioteca Yahoo Finance. Além disso, construiremos um modelo preditivo utilizando o modelo ARIMA para avaliar a qualidade das transformações realizadas e verificar se a padronização foi efetiva na melhoria do modelo.
Parte 4: Codificando valores categóricos
Nesta parte, vamos explorar técnicas de codificação de valores categóricos, que consiste em transformar esses valores em valores numéricos para que sejam compatíveis com algoritmos de machine learning.
Para finalizar essa parte, vamos aplicar as técnicas de codificação. Vamos usar o conjunto de dados do Titanic para fazermos a aplicação da codificação, mais especificamente a codificação na variável gênero; para isso, utilizaremos as bibliotecas scikit-learn e a feature-engine.
Parte 5: Redução de dimensionalidade, upsampling, downsampling e métricas para avaliação
Nesta parte, aprenderemos técnicas para avaliar a qualidade de nossos dados e reduzir a quantidade para aumentarmos a velocidade de treino do nosso modelo e, para isso, usaremos a técnica conhecida como PCA. Além disso, veremos como lidar com o problema de dados desbalanceados por meio das técnicas de upsampling e downsampling.
Apêndice
Por fim, veremos a importância da avaliação da precisão dos modelos de machine learning, além de técnicas para mensurar a qualidade dos modelos de regressão e de classificação.
Sumário
- PARTE 1: Trabalhando com valores ausentes
- 1 Trabalhando com valores ausentes em um conjunto de dados
- 1.1 Substituição de valores ausentes por valores numéricos
- 1.2 Substituição de valores ausentes em conjuntos de dados categóricos
- 2 Projeto prático — Substituição de valores ausentes
- 2.1 Conhecendo a nossa base de dados
- 2.2 Substituição dos valores ausentes em conjuntos de dados numéricos
- PARTE 2: Trabalhando com valores numéricos
- 3 Trabalhando com valores numéricos
- 3.1 Binning, a discretização de valores numéricos
- 3.2 Discretizando valores numéricos utilizando árvore e a biblioteca scikit-learn
- 4 Projeto prático — Discretização de valores numéricos
- 4.1 Discretizando valores numéricos utilizando a biblioteca scikit-learn
- 4.2 Discretizando valores numéricos utilizando a biblioteca feature-engine
- 4.3 Discretização de valores numéricos utilizando faixa de frequência igual com a biblioteca scikit-learn
- 4.4 Discretização por árvore utilizando a biblioteca scikit-learn
- 4.5 Discretização via árvore com a biblioteca feature-engine
- PARTE 3: Padronização de recursos
- 5 Padronização de recursos
- 5.1 Padronização pela normalização
- 5.2 Dimensionamento pela média
- 5.3 Padronização por min-max
- 6 Projeto prático — Padronização de valores de ações da Bolsa
- 6.1 Padronização pela normalização utilizando a biblioteca scikit-learn
- 6.2 Criando um modelo de previsão ARIMA
- 6.3 Padronização com a mediana e quantis (escala robusta)
- 6.4 Padronização com a média
- 6.5 Calculando o erro
- PARTE 4: Codificando valores categóricos
- 7 Codificação de valores categóricos
- 7.1 Codificação One-Hot
- 7.2 Codificação de variáveis categóricas por contagem ou frequência de observação
- 7.3 Codificação com números inteiros de maneira ordenada
- 8 Projeto prático — Codificação de variáveis categóricas
- 8.1 Codificação One-Hot utilizando a biblioteca scikit-learn
- 8.2 Fazendo a codificação One-Hot com a biblioteca feature-engine
- 8.3 Substituindo categorias por contagem ou frequência de observações
- 8.4 Codificação com inteiros de maneira ordenada utilizando a biblioteca feature-engine
- PARTE 5: Redução de dimensionalidade, upsampling, downsampling e métricas para avaliação
- 9 Trabalhando com redução de dimensionalidade, upsampling e downsampling
- 9.1 Reduzindo o tamanho do nosso conjunto com PCA
- 9.2 Criando o nosso algoritmo PCA
- 9.3 Dados desbalanceados
- 9.4 Gerando dados de minorias com SMOTE
- 9.5 Reduzindo os dados da maioria
- 10 Projeto prático — Redução de dimensionalidade com upsampling e downsampling
- 10.1 Análise exploratória de dados
- 10.2 Utilizando técnicas de upsampling e downsampling
- Apêndice
- 11 Apêndice: Qual é o melhor modelo?
- 11.1 Métricas para avaliar modelos de classificação
- 11.2 Métricas para avaliar modelos de regressão
- 11.3 Conclusão
Dados do produto
- Número de páginas:
- 305
- ISBN:
- 978-85-5519-393-4
- Data publicação:
- 01/2025