Machine Learning: Introdução ao Machine Learning e ao…
Machine learning é como dar a um computador um par de "olhos que identificam padrões" — você não diz as regras; ele aprende sozinho a partir dos dados.
1. O que você vai aprender
- A definição de machine learning e seus três paradigmas: Aprendizado Supervisionado, Aprendizado Não Supervisionado e Aprendizado por Reforço
- Uma visão panorâmica do ecossistema Python para ML: NumPy, Pandas, Scikit-learn, PyTorch, MLflow
- Configuração do seu ambiente de desenvolvimento: Anaconda/Miniconda + Jupyter Notebook + VS Code
- A visão do projeto SalesPredict do Bob: um plano de ponta a ponta para previsão de vendas em e-commerce, do zero
- Um dia na vida de um cientista de dados: o fluxo de trabalho típico, da coleta de dados à implantação do modelo
2. A história real de um cientista de dados
(1) O problema: a previsão em Excel custou uma fortuna ao Bob
O Bob administra uma plataforma de e-commerce transfronteiriço com transações mensais que excedem 5 milhões de USD. No fim de cada trimestre, ele precisa prever as vendas do próximo mês para planejar estoque e orçamento de publicidade. Ele costumava depender de projeções manuais com linhas de tendência no Excel, que tinham uma taxa de erro de até 25%. Uma única previsão ruim levou a 50 mil USD em estoque excedente. Ele percebeu: instinto e linhas de tendência simples não dão conta de fatores complexos, como temporadas promocionais e mudanças no comportamento dos usuários.
(2) A solução de machine learning
O machine learning pode descobrir automaticamente padrões complexos em dados históricos — flutuações sazonais, decaimento da eficácia de anúncios, ciclos de compra dos usuários — e gerar previsões muito mais precisas.
# Um fluxo simples de previsão com ML
import pandas as pd
from sklearn.linear_model import LinearRegression
# Carregar dados históricos de vendas
data = pd.read_csv("sales_history.csv")
X = data[["ad_spend", "traffic", "last_month_sales"]]
y = data["monthly_revenue"]
# Treinar o modelo e fazer a previsão
model = LinearRegression()
model.fit(X, y)
next_month_pred = model.predict([[50000, 120000, 380000]])
print(f"Receita prevista: {next_month_pred[0]:.0f} USD")
(3) O resultado: o erro de previsão caiu de 25% para 8%
Depois de substituir o Excel pelo machine learning, o erro de previsão do Bob caiu de 25% para 8%, economizando cerca de 80 mil USD em custos de estoque por trimestre. A Alice adotou a mesma abordagem para o mercado dos EUA, e o Charlie fez o mesmo para o mercado europeu.
3. A definição de machine learning e seus três paradigmas
Machine learning é a disciplina que permite aos computadores aprender padrões a partir de dados, em vez de depender de regras codificadas manualmente.
graph TB
ML[Machine Learning] --> SL[Aprendizado Supervisionado]
ML --> UL[Aprendizado Não Supervisionado]
ML --> RL[Aprendizado por Reforço]
SL --> REG[Regressão<br/>Prever valores contínuos]
SL --> CLS[Classificação<br/>Prever categorias]
UL --> CLT[Agrupamento<br/>Encontrar grupos naturais]
UL --> DR[Redução de Dimensionalidade<br/>Simplificar features]
RL --> OP[Otimização<br/>Maximizar recompensa]
(1) Aprendizado supervisionado
- Ideia central: aprender um mapeamento de entradas para saídas usando dados rotulados
- Tarefas típicas: regressão (prever valores contínuos), classificação (prever categorias discretas)
- Exemplo: prever a receita mensal a partir do gasto histórico com anúncios + tráfego (regressão); prever se um usuário fará uma compra (classificação)
(2) Aprendizado não supervisionado
- Ideia central: descobrir estrutura oculta em dados não rotulados
- Tarefas típicas: agrupamento, redução de dimensionalidade, detecção de anomalias
- Exemplo: segmentar automaticamente milhões de usuários em grupos de alto valor / dormentes / que abandonaram (agrupamento)
(3) Aprendizado por reforço
- Ideia central: um agente aprende estratégias ótimas interagindo com um ambiente e recebendo recompensas
- Tarefas típicas: precificação dinâmica, ranking de recomendações, IA para jogos
- Exemplo: ajustar automaticamente os preços dos produtos com base na oferta e na demanda em tempo real, para maximizar o lucro
| Dimensão | Aprendizado Supervisionado | Aprendizado Não Supervisionado | Aprendizado por Reforço |
|---|---|---|---|
| Requisitos de dados | Exige rótulos | Não exige rótulos | Exige sinais de recompensa |
| Algoritmos típicos | LinearRegression, SVM, XGBoost | K-Means, PCA, DBSCAN | Q-Learning, PPO |
| Saída | Valores previstos / categorias | Clusters / dimensões reduzidas | Política ótima |
| Cenários de negócio | Previsão de vendas, previsão de churn | Perfil de usuários, detecção de anomalias | Precificação dinâmica, recomendações |
| Custo dos dados | Alto (rotulagem manual) | Baixo | Médio (design da recompensa) |
4. O ecossistema Python para ML em um relance
Python é a linguagem preferida para machine learning, com um ecossistema completo de cadeia de ferramentas.
graph LR
BASE[Python] --> NUMPY[NumPy<br/>Computação Numérica]
BASE --> PANDAS[Pandas<br/>Processamento de Dados]
NUMPY --> SKLEARN[Scikit-learn<br/>ML Clássico]
NUMPY --> PYTORCH[PyTorch<br/>Aprendizado Profundo]
PANDAS --> VIZ[Matplotlib/Seaborn<br/>Visualização]
SKLEARN --> MLFLOW[MLflow<br/>Rastreamento de Experimentos]
PYTORCH --> MLFLOW
(1) Visão geral das ferramentas principais
| Ferramenta | Papel | Capacidades-chave | Lição neste tutorial |
|---|---|---|---|
| NumPy | Base da computação numérica | ndarray, álgebra linear, broadcasting | Lição 2 |
| Pandas | Processamento de dados principal | DataFrame, limpeza, agregação, séries temporais | Lição 3 |
| Matplotlib/Seaborn | Visualização de dados | Gráficos de linha, mapas de calor, gráficos de distribuição | Lição 4 |
| Scikit-learn | Biblioteca de algoritmos de ML clássico | API unificada fit/predict/transform | Lição 5 |
| PyTorch | Framework de aprendizado profundo | Tensor, autograd, nn.Module | Lições 16-17 |
| XGBoost/LightGBM | GBDT de nível de produção | Boosting por gradiente de alta performance | Lição 13 |
| MLflow | Gerenciamento de experimentos de ML | Tracking, Registry, Deploy | Lição 19 |
▶ Exemplo: Verificando seu ambiente Python para ML
# Verificar pacotes de ML instalados e suas versões
import importlib
packages = ["numpy", "pandas", "matplotlib", "sklearn", "torch", "xgboost", "mlflow"]
for pkg in packages:
try:
mod = importlib.import_module(pkg)
version = getattr(mod, "__version__", "unknown")
print(f"{pkg:15s} : {version}")
except ImportError:
print(f"{pkg:15s} : NOT INSTALLED")
Saída:
numpy : 1.26.4
pandas : 2.2.0
matplotlib : 3.8.3
sklearn : 1.4.0
torch : 2.2.0
xgboost : 2.0.3
mlflow : 2.10.0
▶ Exemplo: Instalação da cadeia de ferramentas de ML com um único comando
# Instalar pacotes principais de ML via conda
conda create -n ml-env python=3.11 -y
conda activate ml-env
conda install numpy pandas matplotlib scikit-learn -y
conda install pytorch torchvision cpuonly -c pytorch -y
pip install xgboost lightgbm mlflow seaborn jupyter
Saída:
# Comando executado com sucesso
5. Configurando seu ambiente de desenvolvimento
(1) Instalando Anaconda/Miniconda
- Anaconda: vem com mais de 150 pacotes de computação científica; ótimo para iniciantes (~3 GB)
- Miniconda: inclui apenas o gerenciador de pacotes conda; instale pacotes sob demanda (~50 MB)
- Recomendação: Miniconda + instalar sob demanda para economizar espaço em disco
| Dimensão | Anaconda | Miniconda |
|---|---|---|
| Tamanho | ~3 GB | ~50 MB |
| Pacotes incluídos | 150+ | apenas conda |
| Melhor para | Iniciantes | Desenvolvedores experientes |
| Tempo de instalação | 10-15 minutos | 1-2 minutos |
▶ Exemplo: Configurando o Jupyter Notebook
# Criar e ativar o ambiente de ML
conda create -n salespredict python=3.11 -y
conda activate salespredict
# Instalar Jupyter e o kernel
pip install jupyter
python -m ipykernel install --user --name salespredict --display-name "SalesPredict"
# Iniciar o Jupyter
jupyter notebook
Saída:
# Comando executado com sucesso
(2) Configuração do VS Code
- Instale a extensão Python + extensão Jupyter
- Selecione o interpretador Python do seu ambiente conda
- Oferece suporte à edição interativa de Notebooks
▶ Exemplo: Verificando a integridade do ambiente
# Verificação completa do ambiente para o projeto SalesPredict
import sys
print(f"Versão do Python: {sys.version}")
print(f"Caminho do Python: {sys.executable}")
import numpy as np
import pandas as pd
import sklearn
print(f"Versão do NumPy: {np.__version__}")
print(f"Versão do Pandas: {pd.__version__}")
print(f"Versão do Scikit-learn: {sklearn.__version__}")
# Teste rápido de funcionalidade
arr = np.array([1, 2, 3, 4, 5])
print(f"Média do array NumPy: {arr.mean()}")
df = pd.DataFrame({"sales": [100, 200, 300]})
print(f"DataFrame do Pandas:\n{df}")
Saída:
# Executado com sucesso
6. A visão do projeto SalesPredict do Bob
O SalesPredict é o projeto integrador que percorre todo este tutorial — um sistema completo de previsão de vendas em e-commerce, do processamento de dados à implantação do modelo.
(1) Objetivos do projeto
- Objetivo principal: MAPE de previsão de vendas mensal < 10%
- Valor de negócio: otimizar estoque, reduzir custos de excesso, melhorar o ROI da publicidade
- Escopo internacional: Alice cuida do mercado dos EUA (USD), Bob cuida do mercado chinês, e Charlie cuida do mercado europeu (EUR)
▶ Exemplo: Visão geral dos dados do SalesPredict
# Explorar a estrutura do conjunto de dados do SalesPredict
import pandas as pd
# Carregar dados de exemplo
df = pd.read_csv("https://example.com/salespredict_sample.csv")
print(f"Formato do conjunto de dados: {df.shape}")
print(f"\nTipos das colunas:\n{df.dtypes}")
print(f"\nEstatísticas básicas:\n{df.describe()}")
print(f"\nIntervalo de datas: {df['date'].min()} até {df['date'].max()}")
print(f"Receita total: {df['revenue'].sum() / 1e6:.1f} milhões de USD")
Saída:
# Executado com sucesso
(2) Plano de fases do projeto
| Fase | Lições | Entregáveis | Responsável |
|---|---|---|---|
| Fase 1: Fundamentos | Lições 1-6 | Relatório de EDA + modelo de linha de base | Bob |
| Fase 2: Núcleo | Lições 7-12 | Comparação entre vários algoritmos + engenharia de features | Bob + Alice |
| Fase 3: Avançado | Lições 13-18 | Modelos com XGBoost / Aprendizado Profundo | Bob + Charlie |
| Fase 4: Operações | Lições 19-22 | Gerenciamento com MLflow + implantação com FastAPI + monitoramento | Todos |
| Fase 5: Produção | Lições 23-25 | Sistema de produção completo | Todos |
7. Um dia na vida de um cientista de dados
(1) O fluxo típico de trabalho em ML
graph LR
A[Coleta de Dados] --> B[Limpeza de Dados]
B --> C[EDA e Visualização]
C --> D[Engenharia de Features]
D --> E[Treinamento do Modelo]
E --> F[Avaliação do Modelo]
F --> G{Desempenho OK?}
G -->|Não| D
G -->|Sim| H[Implantação do Modelo]
H --> I[Monitoramento]
I --> J{Drift Detectado?}
J -->|Sim| A
J -->|Não| I
▶ Exemplo: Um minifluxo completo de ML
# Minifluxo de ponta a ponta: prever preços de imóveis
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
# Passo 1: Carregar os dados
data = fetch_california_housing()
X, y = data.data, data.target
# Passo 2: Dividir treino/teste
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# Passo 3: Treinar o modelo
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# Passo 4: Avaliar
predictions = model.predict(X_test)
mae = mean_absolute_error(y_test, predictions)
print(f"MAE: {mae:.4f} (em 100k USD)")
print(f"Importâncias das features: {dict(zip(data.feature_names, model.feature_importances_))}")
Saída:
MAE: 0.3285 (em 100k USD)
Importâncias das features: {'MedInc': 0.524..., 'HouseAge': 0.053..., ...}
(2) Como o tempo é gasto
| Atividade | Alocação real de tempo para cientistas de dados | Equívoco comum de iniciantes |
|---|---|---|
| Coleta e limpeza de dados | 60-80% | Acreditar que a maior parte do tempo é gasta treinando modelos |
| Engenharia de features | 10-20% | Pular a engenharia de features e ir direto para o ajuste de hiperparâmetros |
| Treinamento e ajuste do modelo | 5-10% | Otimizar demais a complexidade do algoritmo |
| Implantação e monitoramento | 5-10% | Ignorar a degradação do modelo após entrar em produção |
| Dimensão | Programação tradicional | Machine learning |
|---|---|---|
| Lógica principal | Regras escritas à mão | Regras aprendidas a partir dos dados |
| Entrada | Dados + regras | Dados + rótulos |
| Saída | Resultados determinísticos | Previsões probabilísticas |
| Manutenção | Correções de bugs | Re-treinamento do modelo |
| Adaptação a mudanças | Modificar o código | Adicionar novos dados |
❓ Perguntas Frequentes
P: Qual a diferença entre machine learning e aprendizado profundo? R: Aprendizado profundo é um subconjunto do machine learning que usa redes neurais com múltiplas camadas para extrair features automaticamente. Ele se destaca em dados não estruturados, como imagens e texto. ML tradicional exige engenharia de features manual e funciona melhor com dados tabulares.
P: Quão forte precisa ser minha base em matemática para aprender ML? R: Para começar, basta ter noções de álgebra linear (operações com matrizes) e probabilidade/estatística (média, variância, distribuição normal). Uma compreensão mais profunda do funcionamento interno dos algoritmos exige mais matemática, mas a prática hands-on não requer derivar fórmulas.
P: Python 2 ou Python 3? R: Você deve usar Python 3.8+. Python 2 chegou ao fim da vida útil em 2020, e todas as principais bibliotecas de ML deixaram de oferecer suporte. Este tutorial recomenda Python 3.11.
P: É preciso ter uma GPU? R: Na fase introdutória (Lições 1-15), uma CPU é totalmente suficiente. Aprendizado profundo (Lições 16-17) e treinamento em larga escala se beneficiam de uma GPU, mas o Colab oferece acesso gratuito a GPU.
P: Devo aprender Scikit-learn ou PyTorch primeiro? R: Comece pelo Scikit-learn (Lição 5) — sua API limpa cobre algoritmos clássicos e ajuda a desenvolver a intuição de ML. Depois, avance para o PyTorch (Lição 16) para tarefas de aprendizado profundo.
P: Anaconda é grande demais. Existe uma alternativa mais leve? R: Use o Miniconda (~50 MB), que instala apenas o gerenciador de pacotes conda. Em seguida, instale pacotes sob demanda com
conda installoupip install.
📖 Resumo
- Três paradigmas de ML: Aprendizado Supervisionado (dados rotulados), Aprendizado Não Supervisionado (dados não rotulados), Aprendizado por Reforço (sinais de recompensa)
- Ecossistema Python para ML: NumPy (computação) → Pandas (processamento) → Scikit-learn (ML clássico) → PyTorch (aprendizado profundo) → MLflow (gerenciamento)
- Ambiente de desenvolvimento: Miniconda + Jupyter Notebook + VS Code; instale sob demanda para economizar espaço
- O projeto SalesPredict permeia todas as 25 lições: um sistema completo de previsão de vendas em e-commerce, da análise de dados à implantação em produção
- Cientistas de dados gastam 80% do tempo preparando dados; o treinamento do modelo responde por apenas 5-10%
- O fluxo de trabalho em ML é um loop iterativo: dados → features → treinamento → avaliação → implantação → monitoramento → de volta aos dados
📝 Exercícios
- Básico (Dificuldade ⭐): Instale o Miniconda, crie um ambiente Python 3.11 chamado
salespredict, instale NumPy e Pandas, e imprima os números de versão de cada um. Dica: consulte os passos de configuração do ambiente na Seção 5. - Intermediário (Dificuldade ⭐⭐): Usando o conjunto de dados
fetch_california_housing, treine modelos com LinearRegression e RandomForestRegressor e compare o MAE. Dica: consulte o minifluxo na Seção 7. - Desafio (Dificuldade ⭐⭐⭐): No projeto SalesPredict do Bob, a qual dos três paradigmas pertence "prever se um usuário fará uma compra"? Qual a diferença fundamental na rotulagem de dados entre essa tarefa e "prever a receita mensal"? Dica: uma prevê uma categoria; a outra, um valor contínuo.
← Lição Anterior | Próxima Lição: Curso Relâmpago de NumPy →