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


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.

PYTHON
# 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.

100%
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

(2) Aprendizado não supervisionado

(3) Aprendizado por reforço

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.

100%
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

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

TEXT
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

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

TEXT
# Comando executado com sucesso

5. Configurando seu ambiente de desenvolvimento

(1) Instalando Anaconda/Miniconda

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

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

TEXT
# Comando executado com sucesso

(2) Configuração do VS Code

▶ Exemplo: Verificando a integridade do ambiente

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

TEXT
# 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

▶ Exemplo: Visão geral dos dados do SalesPredict

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

TEXT
# 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

100%
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

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

TEXT
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 install ou pip install.


📖 Resumo


📝 Exercícios

  1. 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.
  2. 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.
  3. 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 →

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%