Aprendizado de Máquina
Como fazer o computador aprender com os dados para apoiar a tomada de decisão. Esta apostila cobre, em quatro aulas, os fundamentos, os principais algoritmos supervisionados e não supervisionados, a avaliação de modelos e um projeto prático em Python.
O que é aprendizado de máquina
Aprendizado de máquina (em inglês, machine learning ou ML) é o ramo da inteligência artificial que estuda algoritmos capazes de aprender padrões a partir de dados, em vez de serem programados explicitamente com regras fixas para cada situação.
Na programação tradicional, o desenvolvedor escreve as regras: dados + regras → respostas. No aprendizado de máquina, a lógica se inverte: fornecemos dados + respostas conhecidas e o algoritmo descobre sozinho as regras — o modelo — que ligam uma coisa à outra.
- Humano escreve as regras (if / else)
- Entrada: dados + regras
- Saída: respostas
- Bom quando as regras são conhecidas e estáveis
- Algoritmo descobre as regras a partir de exemplos
- Entrada: dados + respostas (rótulos)
- Saída: um modelo que gera regras
- Bom quando as regras são complexas ou desconhecidas
📐 Definição clássica (Tom Mitchell, 1997)
"Diz-se que um programa aprende com a experiência E, em relação a uma tarefa T e uma medida de desempenho P, se o seu desempenho em T, medido por P, melhora com a experiência E."
Exemplo: um filtro de spam. A tarefa T é classificar e-mails em "spam" ou "não spam"; a experiência E são milhares de e-mails já rotulados; a medida P é o percentual de e-mails classificados corretamente. Quanto mais e-mails o filtro vê, melhor ele fica — ele aprende.
IA, ML, Deep Learning e Ciência de Dados
Esses termos costumam ser usados como sinônimos, mas descrevem coisas diferentes. Pense em círculos, um dentro do outro:
| Termo | O que é | Exemplo |
|---|---|---|
| Inteligência Artificial | Campo amplo: qualquer técnica que faça máquinas imitarem a inteligência humana | Um sistema especialista com regras; um chatbot |
| Aprendizado de Máquina | Subárea da IA que aprende com dados sem regras explícitas | Previsão de churn, detecção de fraude |
| Deep Learning | Subárea do ML baseada em redes neurais com muitas camadas | Reconhecimento de imagem, tradução automática |
| Ciência de Dados | Disciplina que usa estatística, ML e programação para extrair valor dos dados | Todo o processo: coletar, limpar, modelar e comunicar |
Por que ML e onde se aplica
O aprendizado de máquina brilha em problemas onde escrever regras manualmente seria inviável — porque os padrões são complexos, mudam com o tempo ou dependem de muitas variáveis ao mesmo tempo. No ambiente corporativo, ele é usado como apoio à decisão nos níveis operacional, tático e estratégico.
Previsão de evasão (churn)
Estimar quais clientes têm maior risco de cancelar, para agir antes.
Detecção de fraude
Identificar transações anômalas em tempo real.
Recomendação
Sugerir produtos, filmes ou conteúdos com base no comportamento.
Precificação e demanda
Prever vendas e otimizar preços e estoque.
Manutenção preditiva
Antecipar falhas de equipamentos antes que aconteçam.
Segmentação de clientes
Agrupar clientes com perfis parecidos para campanhas dirigidas.
Os três tipos de aprendizado
Os algoritmos de ML se dividem em três grandes paradigmas, de acordo com o tipo de "sinal" que orienta o aprendizado.
- Aprende com dados rotulados (com a resposta)
- Objetivo: prever um rótulo para dados novos
- Regressão (número) e Classificação (categoria)
- Ex.: prever preço de imóvel; detectar spam
- Aprende com dados sem rótulos
- Objetivo: descobrir estrutura escondida
- Clustering, redução de dimensionalidade, associação
- Ex.: segmentar clientes; agrupar produtos
- Um agente aprende por tentativa e erro, recebendo recompensas e punições
- Objetivo: descobrir a melhor sequência de ações (política)
- Ex.: robôs, jogos (AlphaGo), controle de tráfego, otimização logística
| Tipo | Dados | Pergunta que responde | Exemplos de algoritmo |
|---|---|---|---|
| Supervisionado | Rotulados | "Qual é o valor / a categoria disto?" | Regressão linear, árvores, SVM, KNN |
| Não supervisionado | Sem rótulo | "Como esses dados se organizam?" | K-means, PCA, Apriori |
| Por reforço | Recompensas | "Que ação devo tomar agora?" | Q-learning, políticas de decisão |
Conceitos-base: dados, features e rótulos
Todo projeto de ML gira em torno de um conjunto de dados (dataset), normalmente organizado como uma tabela. Vamos fixar o vocabulário com um exemplo de previsão de preço de imóveis:
| Área (m²) | Quartos | Bairro | Preço (R$) |
|---|---|---|---|
| 70 | 2 | Centro | 320.000 |
| 120 | 3 | Tijuca | 540.000 |
| 45 | 1 | Centro | 210.000 |
- Instância / amostra (linha): um exemplo — um imóvel.
- Feature / atributo / variável (coluna de entrada): Área, Quartos e Bairro. São as informações que o modelo usa para prever.
- Rótulo / alvo / target (coluna de saída): Preço. É o que queremos prever.
- Modelo: a função aprendida que mapeia features → rótulo.
Divisão dos dados: treino, validação e teste
Nunca avaliamos um modelo com os mesmos dados usados para treiná-lo — seria como aplicar uma prova com as mesmas questões do gabarito estudado. Por isso, dividimos o dataset:
O fluxo de um projeto de ML
Um projeto de aprendizado de máquina raramente é linear — é um ciclo iterativo. Uma referência clássica é o processo CRISP-DM (Cross-Industry Standard Process for Data Mining), que organiza o trabalho em seis fases:
- 1Entendimento do negócio: qual decisão o modelo vai apoiar? Qual é a pergunta e o critério de sucesso?
- 2Entendimento dos dados: coletar, explorar e avaliar a qualidade e a disponibilidade dos dados.
- 3Preparação dos dados: limpar, tratar valores faltantes, criar e transformar features (a etapa mais demorada, ~70% do tempo).
- 4Modelagem: escolher algoritmos, treinar modelos e ajustar hiperparâmetros.
- 5Avaliação: medir o desempenho com métricas adequadas e confrontar com o objetivo de negócio.
- 6Implantação (deployment): colocar o modelo em produção, monitorar e re-treinar quando o desempenho cair.
Regressão × Classificação
O aprendizado supervisionado se divide em dois grandes tipos de tarefa, de acordo com a natureza do rótulo que queremos prever:
- Prevê um valor numérico contínuo
- "Quanto?" / "Qual valor?"
- Preço de um imóvel, temperatura, demanda
- Métricas: MAE, RMSE, R²
- Prevê uma categoria / classe
- "Qual tipo?" / "Sim ou não?"
- Spam/não spam, fraude/legítima, churn/fica
- Métricas: acurácia, precisão, recall, F1
A classificação pode ser binária (duas classes: aprovado/reprovado) ou multiclasse (várias: gato/cachorro/pássaro). Um mesmo problema, às vezes, pode ser modelado das duas formas — prever a nota de um aluno é regressão; prever se ele será aprovado é classificação.
Regressão linear
A regressão linear é o algoritmo mais simples e didático. Ela tenta traçar a "melhor reta" que descreve a relação entre as features e o alvo. Para uma única feature x:
Onde ŷ é o valor previsto, b₀ é o ponto onde a reta corta o eixo (intercepto) e b₁ é a inclinação (quanto o alvo muda quando x aumenta em 1 unidade). Com várias features, vira uma soma ponderada:
Como o modelo "aprende"?
O algoritmo procura os coeficientes b que minimizam o erro entre o previsto (ŷ) e o real (y). O erro mais usado é o erro quadrático médio (MSE): a média dos quadrados das diferenças. A técnica que ajusta os coeficientes passo a passo, "descendo" na direção que reduz o erro, chama-se gradiente descendente.
Regressão logística
Apesar do nome, a regressão logística é um algoritmo de classificação. Ela estima a probabilidade de uma instância pertencer a uma classe. Para isso, passa a soma ponderada das features por uma função sigmoide, que "achata" qualquer número para o intervalo entre 0 e 1:
Se a probabilidade for maior que um limiar (normalmente 0,5), classificamos como a classe positiva; caso contrário, como a negativa.
KNN e árvores de decisão
K-vizinhos mais próximos (KNN)
O KNN (K-Nearest Neighbors) é um dos algoritmos mais intuitivos: para classificar uma nova instância, ele olha os k exemplos mais parecidos (mais próximos) no conjunto de treino e adota a classe majoritária entre eles. "Me diga com quem andas e te direi quem és."
- k pequeno (ex.: 1): sensível a ruído, fronteiras irregulares.
- k grande: fronteiras mais suaves, mas pode ignorar padrões locais.
- Exige normalizar as features, pois usa distância (senão, a feature de maior escala domina).
Árvores de decisão
Uma árvore de decisão aprende uma sequência de perguntas do tipo "sim/não" que dividem os dados até chegar a uma decisão. É extremamente interpretável — dá para desenhar e explicar para um gestor.
A árvore escolhe, em cada nó, a pergunta que melhor "separa" as classes, usando medidas de pureza como o índice de Gini ou a entropia. A grande fraqueza: árvores muito profundas decoram o treino (overfitting).
Random Forest, SVM e Naive Bayes
Random Forest (floresta aleatória)
Se uma árvore erra por decorar demais, que tal juntar muitas árvores e tirar a média/voto? É a ideia do Random Forest, um método de ensemble (comitê): treina dezenas ou centenas de árvores, cada uma com uma amostra aleatória dos dados e das features, e combina os resultados. É robusto, preciso e um dos algoritmos mais usados na prática.
Máquinas de vetores de suporte (SVM)
A SVM busca a "fronteira" (hiperplano) que separa as classes com a maior margem possível entre elas. Com o "truque do kernel", consegue separar dados que não são linearmente separáveis. Poderosa em espaços de muitas dimensões.
Naive Bayes
Baseado no Teorema de Bayes, calcula a probabilidade de cada classe assumindo (ingenuamente, daí o "naive") que as features são independentes entre si. É simples, rapidíssimo e surpreendentemente eficaz em classificação de texto (spam, análise de sentimento).
| Algoritmo | Força | Fraqueza |
|---|---|---|
| KNN | Simples, sem treino explícito | Lento com muitos dados; sensível à escala |
| Árvore de decisão | Interpretável, aceita dados mistos | Overfitting se muito profunda |
| Random Forest | Preciso e robusto | Menos interpretável; mais pesado |
| SVM | Forte em muitas dimensões | Difícil de ajustar; lento em bases grandes |
| Naive Bayes | Rápido; ótimo para texto | Assume independência entre features |
Overfitting, underfitting e viés-variância
O grande objetivo do ML é a generalização: acertar em dados novos, não apenas nos de treino. Dois problemas atrapalham isso:
- Modelo simples demais
- Erra no treino e no teste
- Alto viés (bias)
- Solução: modelo mais complexo, mais features
- Modelo complexo demais; "decora" o treino
- Acerta no treino, erra no teste
- Alta variância
- Solução: mais dados, regularização, simplificar
Encontrar o equilíbrio entre viés e variância é o compromisso viés-variância (bias-variance tradeoff). Técnicas de regularização (L1/Lasso e L2/Ridge) penalizam modelos complexos demais, ajudando a evitar o overfitting.
Clustering: K-means
No aprendizado não supervisionado não há rótulos — o algoritmo procura estrutura escondida. A tarefa mais comum é o clustering (agrupamento): reunir instâncias parecidas em grupos (clusters).
O K-means é o algoritmo de clustering mais popular. Você define quantos grupos quer (k) e ele:
- 1Sorteia
kcentros (centroides) iniciais. - 2Atribui cada ponto ao centroide mais próximo.
- 3Recalcula cada centroide como a média dos pontos do seu grupo.
- 4Repete os passos 2 e 3 até os grupos pararem de mudar.
Como escolher o k?
Uma técnica é o método do cotovelo (elbow method): testar vários valores de k e observar onde a redução do erro "dobra o cotovelo" — a partir dali, aumentar k traz pouco ganho.
Clustering hierárquico e DBSCAN
Clustering hierárquico
Constrói uma árvore de grupos (dendrograma). Na versão aglomerativa, começa com cada ponto sendo um grupo e vai unindo os mais próximos, passo a passo, até formar um único grupo. Você "corta" o dendrograma na altura desejada para obter o número de clusters. Vantagem: não precisa definir k antecipadamente e gera uma visualização rica.
DBSCAN
O DBSCAN agrupa por densidade: regiões densas de pontos viram clusters, e pontos isolados em áreas vazias são marcados como ruído (outliers). Diferente do K-means, ele descobre sozinho o número de grupos e encontra clusters de formatos irregulares.
| Método | Define k? | Formato dos clusters | Detecta outliers? |
|---|---|---|---|
| K-means | Sim, você define | Esféricos, tamanhos parecidos | Não |
| Hierárquico | Não (corta depois) | Variados | Não diretamente |
| DBSCAN | Não (automático) | Qualquer formato | Sim |
Redução de dimensionalidade (PCA)
Quando um dataset tem dezenas ou centenas de features, surge a "maldição da dimensionalidade": os dados ficam esparsos, os modelos ficam lentos e é impossível visualizar. A redução de dimensionalidade comprime as features em um número menor, preservando o máximo de informação.
O PCA (Análise de Componentes Principais) encontra novas "direções" (componentes principais) que capturam a maior parte da variância dos dados. Assim, é possível, por exemplo, resumir 50 features em 2 componentes e plotar tudo em um gráfico.
Visualização
Projetar dados de muitas dimensões em 2D ou 3D para enxergar padrões.
Desempenho
Menos features = treino mais rápido e menos overfitting.
Remoção de ruído
Descarta direções de baixa variância, muitas vezes ruído.
Regras de associação
As regras de associação descobrem relações do tipo "quem compra X tende a comprar Y". É a base da clássica análise de cesta de compras (market basket analysis). O algoritmo mais conhecido é o Apriori.
Uma regra {fralda} → {cerveja} é avaliada por três medidas:
| Medida | O que responde |
|---|---|
| Suporte | Com que frequência os itens aparecem juntos no total de transações |
| Confiança | Dado que comprou X, qual a probabilidade de comprar Y |
| Lift | Quanto a compra de X aumenta (ou reduz) a chance de comprar Y em relação ao acaso |
Pré-processamento e engenharia de features
Os algoritmos só funcionam bem com dados bem preparados. Esta é, de longe, a etapa que mais consome tempo — e a que mais impacta o resultado.
Tratamento de dados faltantes
- Remoção: excluir linhas/colunas com muitos vazios.
- Imputação: preencher com média, mediana, moda ou um valor previsto.
Codificação de variáveis categóricas
Modelos entendem números, não texto. Convertemos categorias com:
- One-Hot Encoding: uma coluna 0/1 para cada categoria (ex.: Bairro_Centro, Bairro_Tijuca).
- Label Encoding: um número para cada categoria (útil quando há ordem, ex.: baixo=0, médio=1, alto=2).
Escalonamento (normalização/padronização)
Coloca features de escalas diferentes (idade: 0–100; salário: 0–100.000) em faixas comparáveis, essencial para KNN, SVM e PCA.
- Normalização (Min-Max): reescala para o intervalo [0, 1].
- Padronização (Z-score): centraliza na média 0 com desvio padrão 1.
🛠️ Engenharia de features (feature engineering)
É a arte de criar novas variáveis a partir das existentes, injetando conhecimento de negócio. Ex.: de "data de nascimento" extrair "idade"; de "data da compra" extrair "dia da semana"; combinar "renda" e "dívida" em "comprometimento de renda". Boas features costumam valer mais que algoritmos sofisticados.
Aprendizado por reforço (visão geral)
No aprendizado por reforço (RL), um agente interage com um ambiente, toma ações e recebe recompensas (ou punições). O objetivo é aprender uma política — uma estratégia de ação — que maximize a recompensa acumulada ao longo do tempo.
- Exploração vs. exploração (explore/exploit): testar ações novas ou repetir o que já funciona?
- Aplicações: jogos (AlphaGo), robótica, veículos autônomos, otimização de logística e de preços dinâmicos.
Métricas de classificação
Medir "acertos" não basta. Imagine detectar uma doença rara presente em 1% da população: um modelo que sempre diz "não tem" acerta 99% das vezes — e é inútil. Por isso, avaliamos classificação com a matriz de confusão:
| Previsto: Positivo | Previsto: Negativo | |
|---|---|---|
| Real: Positivo | VP (verdadeiro positivo) | FN (falso negativo) |
| Real: Negativo | FP (falso positivo) | VN (verdadeiro negativo) |
A partir dela, calculamos:
| Métrica | Fórmula | Responde |
|---|---|---|
| Acurácia | (VP+VN) / total | % de acertos gerais |
| Precisão | VP / (VP+FP) | Dos que previ positivo, quantos eram mesmo? |
| Recall (revocação) | VP / (VP+FN) | Dos positivos reais, quantos eu peguei? |
| F1-score | 2·(P·R)/(P+R) | Equilíbrio entre precisão e recall |
A curva ROC e a área sob ela (AUC) medem a capacidade do modelo de separar as classes em diferentes limiares — quanto mais perto de 1, melhor.
Métricas de regressão
Para prever números, medimos o tamanho do erro entre o valor previsto e o real:
| Métrica | O que é | Característica |
|---|---|---|
| MAE | Erro absoluto médio | Fácil de interpretar; na mesma unidade do alvo |
| MSE | Erro quadrático médio | Pune erros grandes com mais força |
| RMSE | Raiz do MSE | Volta à unidade original; sensível a outliers |
| R² (coef. de determinação) | % da variância explicada pelo modelo | Entre 0 e 1; quanto maior, melhor |
Validação cruzada e ajuste de hiperparâmetros
Validação cruzada (cross-validation)
Avaliar em um único conjunto de teste pode dar "sorte" ou "azar" na divisão. A validação cruzada k-fold divide os dados em k partes (folds): treina em k−1 e testa na parte restante, repetindo até cada parte ter sido teste uma vez. O desempenho final é a média — uma estimativa mais confiável.
Hiperparâmetros
Parâmetros são aprendidos pelo modelo (os coeficientes). Hiperparâmetros são configurações que nós definimos antes do treino (o k do KNN, a profundidade da árvore, o número de árvores da floresta). Para encontrar os melhores, usamos busca sistemática:
- Grid Search: testa todas as combinações de uma "grade" de valores.
- Random Search: testa combinações aleatórias — mais rápido em espaços grandes.
Projeto prático em Python (scikit-learn)
A biblioteca scikit-learn é o padrão de mercado para ML clássico em Python. Todo modelo segue a mesma interface: .fit() para treinar e .predict() para prever. Veja um fluxo completo de classificação:
# 1. Importar as bibliotecas
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
# 2. Carregar os dados
df = pd.read_csv("clientes.csv")
X = df.drop(columns=["churn"]) # features
y = df["churn"] # rótulo (0 = fica, 1 = cancela)
# 3. Separar treino e teste
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y)
# 4. Escalonar as features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 5. Treinar o modelo
modelo = RandomForestClassifier(n_estimators=200, random_state=42)
modelo.fit(X_train, y_train)
# 6. Prever e avaliar
y_pred = modelo.predict(X_test)
print(classification_report(y_test, y_pred))
random_state=42: ele fixa a aleatoriedade para que o experimento seja reprodutível — todos que rodarem o código obtêm o mesmo resultado.ML no apoio à decisão e ética
No contexto desta UC, o aprendizado de máquina é ferramenta de apoio à decisão — não substitui o gestor, mas fornece previsões e insights que tornam a decisão mais informada, nos níveis operacional (dia a dia), tático (metas) e estratégico (longo prazo).
Do modelo à decisão
Um bom modelo só gera valor se for traduzido em ação. Prever que um cliente tem 80% de chance de cancelar só importa se a empresa fizer algo — uma oferta de retenção, um contato do time de sucesso. O ciclo é: dado → modelo → previsão → decisão → ação → resultado.
Ética, viés e responsabilidade
Viés algorítmico
Se os dados históricos são enviesados, o modelo aprende e amplifica o viés (ex.: crédito, contratação).
Transparência
Decisões que afetam pessoas devem ser explicáveis — evite "caixas-pretas" sem justificativa.
Privacidade (LGPD)
Dados pessoais exigem consentimento e proteção; anonimize quando possível.
Supervisão humana
Mantenha uma pessoa responsável na decisão final, sobretudo em casos sensíveis.
Estudo de caso: previsão de churn
Vamos amarrar tudo em um caso realista. Uma empresa de assinaturas quer reduzir o cancelamento (churn) de clientes.
- 1Negócio: a pergunta é "quais clientes têm alto risco de cancelar no próximo mês?". Sucesso = reduzir o churn em 10%.
- 2Dados: histórico de uso, tempo de contrato, número de chamados de suporte, plano, forma de pagamento e se cancelou (rótulo).
- 3Preparação: tratar vazios, codificar categorias (plano, pagamento) com One-Hot, escalonar features numéricas, criar a feature "chamados por mês".
- 4Modelagem: é classificação binária. Testamos regressão logística (baseline) e Random Forest.
- 5Avaliação: como perder um cliente é caro, priorizamos recall e F1. A floresta atinge recall 0,78 e F1 0,74 na validação cruzada.
- 6Decisão e ação: a lista de clientes de alto risco vai para o time de retenção, que oferece desconto ou contato proativo. Mede-se o churn antes e depois.
🎓 Fechamento da apostila
Você percorreu o caminho completo: o que é ML e seus tipos → algoritmos supervisionados (regressão, árvores, floresta, SVM) → não supervisionados (clustering, PCA, associação) → avaliação (métricas, validação cruzada) → prática em Python e aplicação à decisão. O próximo passo é colocar a mão na massa: pegue um dataset do Kaggle e reproduza o fluxo completo.
Bibliografia
Bibliografia básica
- AMARAL, Fernando. Introdução à ciência de dados: mineração de dados e Big Data. Rio de Janeiro: Alta Books, 2016.
- CAIÇARA JUNIOR, Cícero. Sistemas integrados de gestão — ERP. Curitiba: IBPEX, 2008.
- WESTERMAN, George. O risco de TI: convertendo ameaça aos negócios em vantagem competitiva. São Paulo: M. Books, 2008.
Bibliografia complementar
- STAREC, Cláudio. Gestão estratégica da informação e inteligência competitiva. São Paulo: Saraiva, 2006.
- MARQUESONE, Rosangela. Big Data: técnicas e tecnologias para extração de valor dos dados. São Paulo: Casa do Código, 2018.
- SILVA, Leandro Augusto da. Introdução à mineração de dados com aplicações em R. Rio de Janeiro: Ediouro, 2016.
- SOUZA, Amaranta de et al. Ciência de dados, Business Intelligence e Big Data: conceitos e aplicações. Paraná: Appris, 2021.
- WICKHAM, Adler. R para Data Science: importe, arrume, transforme, visualize e modele dados. Rio de Janeiro: Alta Books, 2019.