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
Melhor para features nominais com baixa cardinalidade (< ~20 categorias).
⚠️ Deve ser calculado apenas no conjunto de treino para evitar vazamento.
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 |