Ir para o conteúdo

Feature Types

Tipos de Features

O tipo de cada feature no seu dataset molda fundamentalmente quais pré-processamentos, arquiteturas e funções de perda você pode usar. Identificar incorretamente um tipo de feature é uma das fontes mais comuns de bugs em pipelines de AM.


Tipos Primários de Features

graph TD
    D[Dados] --> S[Estruturados]
    D --> U["Não Estruturados"]

    S --> N["Numéricos"]
    S --> C["Categóricos"]

    N --> N1["Contínuos<br/><small>ex: altura, temperatura, preço</small>"]
    N --> N2["Discretos<br/><small>ex: contagem, idade em anos</small>"]

    C --> C1["Nominais<br/><small>ex: cor, cidade, país</small>"]
    C --> C2["Ordinais<br/><small>ex: pequeno / médio / grande</small>"]
    C --> C3["Binários<br/><small>ex: sim / não, verdadeiro / falso</small>"]

    U --> U1["Texto<br/><small>ex: avaliações, documentos</small>"]
    U --> U2["Imagem<br/><small>ex: fotos, exames</small>"]
    U --> U3["Áudio<br/><small>ex: fala, música</small>"]
    U --> U4["Grafo<br/><small>ex: redes sociais</small>"]

    classDef root    fill:#e2e8f0,stroke:#718096,color:#2d3748
    classDef struct  fill:#ebf4ff,stroke:#4299e1,color:#2b6cb0
    classDef unstruct fill:#fef5e7,stroke:#ed8936,color:#7b341e
    classDef num     fill:#f0fff4,stroke:#48bb78,color:#276749
    classDef cat     fill:#fffff0,stroke:#d69e2e,color:#744210
    classDef numLeaf fill:#f0fff4,stroke:#9ae6b4,color:#276749
    classDef catLeaf fill:#fffff0,stroke:#faf089,color:#744210
    classDef uLeaf   fill:#fef5e7,stroke:#fbd38d,color:#7b341e

    class D root
    class S struct
    class U unstruct
    class N num
    class C cat
    class N1,N2 numLeaf
    class C1,C2,C3 catLeaf
    class U1,U2,U3,U4 uLeaf

Features Numéricas

Features numéricas representam quantidades que podem ser medidas em uma escala contínua ou discreta.

Sub-tipo Descrição Exemplos Codificação
Contínuo Valores infinitos em um intervalo Altura (1,73m), Temperatura (23,4°C), Preço (R$12,50) Usar como está, normalizar
Discreto Valores inteiros contáveis Idade (anos), Número de quartos, Contagem de visitas Tratar como contínuo ou ordinal

Por que importa: A maioria das redes neurais espera entradas numéricas em um intervalo limitado. Entradas com escalas muito diferentes (ex: idade ∈ [0,100] e renda ∈ [0,1.000.000]) fazem algumas features dominarem as atualizações do gradiente. Sempre normalize ou padronize features numéricas.

from sklearn.preprocessing import StandardScaler, MinMaxScaler

# Z-score: (x - média) / std  → média 0, desvio 1
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled  = scaler.transform(X_test)   # use as stats do treino!

# Min-Max: (x - min) / (max - min) → [0, 1]
scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)

Features Categóricas

Features categóricas representam pertencimento a grupos discretos. A distinção principal é entre ordinal vs. nominal.

Sub-tipo Descrição Exemplo Problema com inteiros brutos
Nominal Sem ordem natural Cor: Modelo assume azul > vermelho
Ordinal Tem ordem natural Tamanho: Codificação deve respeitar a ordem
Binário Dois valores Spam: Codificar como 0/1

Estratégias de Codificação

import pandas as pd
df = pd.get_dummies(df, columns=['cor'])
# cor_vermelho=1, cor_azul=0, cor_verde=0
Melhor para features nominais com baixa cardinalidade (< ~20 categorias).

from sklearn.preprocessing import OrdinalEncoder
enc = OrdinalEncoder(categories=[['pequeno', 'médio', 'grande']])
X['tamanho_enc'] = enc.fit_transform(X[['tamanho']])
# pequeno=0, médio=1, grande=2

# Substituir categoria pela média do alvo
medias = train.groupby('cidade')['preco'].mean()
X['cidade_enc'] = X['cidade'].map(medias)
⚠️ Deve ser calculado apenas no conjunto de treino para evitar vazamento.

import torch.nn as nn
# 50 cidades → embedding de dimensão 8
cidade_emb = nn.Embedding(num_embeddings=50, embedding_dim=8)
Melhor para categóricos de alta cardinalidade em aprendizado profundo.


Tipos de Features Não Estruturadas

Tipo Forma Representação típica Modelo comum
Texto Sequência variável IDs de tokens (BPE) Transformer
Imagem H × W × C Valores de pixel [0,255] CNN, ViT
Áudio T × F Espectrograma ou forma de onda Conv1D, Transformer
Grafo N nós, E arestas Matriz de adjacência + features GNN
Série Temporal T × F Sequência ordenada LSTM, Transformer, TCN

Interativo: Identifique o Tipo de Feature

Qual é o tipo correto de feature? Clique na resposta certa.
Pontuação: 0 / 0

Tipo de Feature → Implicações de Modelagem

Tipo de Feature Forma bruta Entrada para rede neural Armadilha
Contínuo Float Normalizar para ~N(0,1) Valores grandes dominam
Discreto Int Tratar como contínuo OU embed Ordenação arbitrária se mal identificado
Nominal String One-hot ou embedding Modelo assume ordem se codificado como rótulo
Ordinal String Mapeamento inteiro Distâncias entre níveis podem ser desiguais
Binário Bool 0/1 Desbalanceamento de classes se raro
Texto String Tokenizar → IDs de tokens Tamanho do vocabulário, tokens OOV
Imagem Array Pixel / 255 → [0,1] Ordem dos canais (RGB vs BGR)
Série temporal Array Segmentos em janela Vazamento de look-ahead