Engenharia de Software para Ciência de Dados Um guia de boas práticas com ênfase na construção de sistemas de Machine Learning em Python
Marcos Kalinowski, Tatiana Escovedo, Hugo Villamizar, Hélio LopesSobre o livro
Os avanços recentes na área de Ciência de Dados — em especial em Machine Learning — e a disponibilidade de grandes quantidades de dados têm tornado viável e de relevância prática a incorporação de componentes de Machine Learning em sistemas de software. Esses componentes permitem às soluções de software aprender a partir dos dados e realizar predições inteligentes. Entretanto, sistemas que envolvem este tipo de componente muitas vezes são construídos sem considerar boas práticas da área de Engenharia de Software, levando muitos projetos de Ciência de Dados ao fracasso, com soluções que acabam não sendo implantadas na prática por não atenderem às necessidades dos clientes.
Com isso em vista, este livro foi cuidadosamente elaborado a partir de evidências científicas e experiências práticas dos autores em diversos projetos. O objetivo desta obra é estabelecer uma referência sobre Engenharia de Software para Ciência de Dados, compartilhando conhecimento (até então não consolidado) para capacitar profissionais interessados ou atuantes em Ciência de Dados na construção de sistemas baseados em Machine Learning, mostrando como construir esses sistemas end-to-end, adaptando e aplicando as melhores práticas da Engenharia de Software para esse contexto.
Você aprenderá a aplicar abordagens ágeis para a engenharia de sistemas inteligentes e a especificar e desenvolver sistemas baseados em Machine Learning na prática em Python, utilizando os principais algoritmos de classificação e regressão, seguindo princípios de projeto e boas práticas de codificação. Você aprenderá, ainda, a realizar o controle da qualidade de sistemas inteligentes, conhecerá alternativas para a arquitetura desses sistemas e diferentes formas de implantação de modelos. Por fim, conhecerá conceitos de gerência de configuração, DevOps e MLOps, comumente empregados nesse tipo de projeto.
O livro compila a vasta experiência dos autores envolvendo a entrega de dezenas de projetos de sistemas de software inteligentes na prática para diversas empresas, realizados por meio da iniciativa ExACTa PUC-Rio, incluindo soluções com pedidos de patente depositados e premiados (Reconhecimento à Inovação CENPES 2021, Inventor Petrobras 2022, entre outros). Os autores são pesquisadores consolidados nas áreas de Engenharia de Software e Ciência de Dados e pioneiros na interseção entre essas áreas, sendo protagonistas no estabelecimento da Engenharia de Software para Ciência de Dados no Brasil.
Em 2021, os autores criaram o primeiro curso de extensão em Engenharia de Software para Ciência de Dados do país, formando centenas de alunos em diversas turmas oferecidas pela PUC-Rio, tanto abertas quanto in-company. Atualmente, a disciplina faz parte do currículo das pós-graduações lato sensu em Ciência de Dados e Analytics e em Engenharia de Software e do elenco de disciplinas da pós-graduação stricto sensu (mestrado e doutorado) do Departamento de Informática da PUC-Rio. Além de auxiliar profissionais da área, este livro pode ser utilizado como referência bibliográfica para disciplinas com propósito similar em outras instituições.
Público-alvo e pré-requisitos
Este livro é indicado para profissionais das diversas áreas de conhecimento que gostariam de aprender a desenvolver aplicações de Ciência de Dados, em particular com ênfase em Machine Learning, seguindo boas práticas da Engenharia de Software. Isso inclui desenvolvedores e desenvolvedoras de software que queiram expandir seu conhecimento para Ciência de Dados; cientistas de dados que queiram profissionalizar suas práticas de desenvolvimento de software; profissionais envolvidas(os) em iniciativas de transformação digital das suas empresas; e estudantes que desejem iniciar ou aprofundar seus estudos em Engenharia de Software para Ciência de Dados.
Para melhor aproveitar o conteúdo deste livro, é recomendado que o(a) leitor(a) tenha noções de conceitos matemáticos e de lógica de programação. Os conceitos teóricos apresentados serão complementados com exemplos práticos na linguagem Python.
Sumário
- Parte I – Introdução à Engenharia de Software e à Ciência de Dados
- 1 Introdução à Engenharia de Software
- 1.1 Precisamos de Engenharia de Software?
- 1.2 Precisamos de Engenharia de Software para Ciência de Dados?
- 1.3 Processo de Engenharia de Software
- 1.4 Práticas de Engenharia de Software
- 2 Introdução à Ciência de Dados
- 2.1 Banco de dados ou "bando" de dados?
- 2.2 Aplicações de Ciência de Dados
- 2.3 Knowledge Discovery in Databases (KDD)
- 2.4 Tipos de dados
- 2.5 Tipos de problemas
- 2.6 Esquema básico de um projeto de Ciência de Dados
- Parte II – Abordagens e especificação de sistemas inteligentes
- 3 Abordagens para a engenharia de sistemas inteligentes
- 3.1 O Manifesto Ágil e princípios ágeis
- 3.2 Visão geral do Scrum
- 3.3 Estimativa e velocidade
- 3.4 Scrum em projetos de Ciência de Dados
- 3.5 Produção just-in-time — Lean e Kanban
- 3.6 Métodos ágeis escalados — o framework SAFe
- 3.7 SAFe em projetos de Ciência de Dados
- 3.8 BizDev, DevOps e experimentação contínua
- 3.9 MLOps e DataOps
- 3.10 Abordagem Lean R&D
- 4 Especificação de sistemas de software inteligentes
- 4.1 Conceitos básicos de Engenharia de Requisitos
- 4.2 Tipos de requisitos
- 4.3 Requisitos em contextos de transformação digital e ágeis
- 4.4 Requisitos de sistemas de software inteligentes
- 4.5 ML Canvas
- 4.6 PerSpecML — Especificação baseada em perspectivas
- Parte III – Programação com boas práticas de projeto e construção
- 5 Introdução à linguagem Python
- 5.1 Primeiro programa
- 5.2 Variáveis
- 5.3 Strings
- 5.4 Coleções
- 5.5 Condições
- 5.6 Loops
- 5.7 Funções
- 5.8 Leitura e escrita de arquivos
- 5.9 Conexão com banco de dados
- 6 Orientação a Objetos em Python
- 6.1 Classes e objetos
- 6.2 Métodos
- 6.3 Atributos
- 6.4 Exemplos práticos
- 6.5 Os 4 pilares da Orientação a Objetos
- 7 Boas práticas de projeto e construção de sistemas
- 7.1 Princípios SOLID
- 7.2 Guia de estilos
- 7.3 Clean code
- Parte IV – Tópicos de Ciência de Dados
- 8 Análise exploratória e visualização de dados
- 8.1 Estatística Descritiva
- 8.2 Medidas de tendência central
- 8.3 Gráficos para visualização de dados
- 8.4 Bibliotecas Python para análise exploratória
- 8.5 Exemplo prático
- 9 Pré-processamento de dados
- 9.1 Técnicas de pré-processamento de dados
- 9.2 Exemplo prático
- 10 Algoritmos de Machine Learning para classificação e regressão
- 10.1 Problemas de classificação
- 10.2 Problemas de regressão
- 10.3 Algoritmos de Machine Learning
- 10.4 Exemplos práticos
- 11 Recursos avançados de Machine Learning
- 11.1 Ensembles
- 11.2 Feature selection
- 11.3 Pipelines
- 11.4 Otimização de hiperparâmetros
- 11.5 Exemplos práticos
- Parte V – Arquitetura, Projeto e Controle da Qualidade
- 12 Implantação de modelos de Machine Learning
- 12.1 Formas de implantação de modelos de Machine Learning
- 12.2 Armazenamento de modelos de Machine Learning em arquivos
- 12.3 Implantação de modelos de Machine Learning embarcados
- 12.4 Implantação de modelos de Machine Learning como serviço separado na nuvem
- 13 Arquitetura de sistemas de software inteligentes
- 13.1 Conceitos básicos de arquitetura de software
- 13.2 Considerações sobre arquitetura de sistemas de software inteligentes
- 13.3 Arquiteturas para diferentes tipos de predição de Machine Learning
- 13.4 Otimização das predições dos modelos de Machine Learning
- 14 Projeto de sistemas de software inteligentes
- 14.1 Conceitos básicos de projeto de software
- 14.2 Princípios SOLID aplicados a Machine Learning
- 14.3 Padrões de projeto aplicados a Machine Learning
- 14.4 Code smells, dívida técnica e refatorações em sistemas de Machine Learning
- 15 Controle da qualidade de sistemas de software inteligentes
- 15.1 Reprodutibilidade de notebooks
- 15.2 Análise estática
- 15.3 Revisões de código modernas
- 15.4 Teste de sistemas de software inteligentes
- 16 Gerência de configuração, DevOps e MLOps em sistemas inteligentes
- 16.1 Conceitos de gerência de configuração
- 16.2 DevOps e MLOps no contexto de sistemas inteligentes
- 16.3 Controle de versões de artefatos de Machine Learning
- 16.4 Integração contínua (CI)
- 16.5 Implantação contínua (CD)
- 17 Referências bibliográficas
Dados do produto
- Número de páginas:
- 476
- ISBN:
- 978-85-5519-334-7
- Data publicação:
- 05/2023