Machine LearningLeonardo Peña

Feature Engineering: A Arte de Criar Boas Features

2 Abr, 2026
10 min
Feature Engineering: A Arte de Criar Boas Features

Feature Engineering: A Arte de Criar Boas Features

Feature engineering é a arte de transformar dados brutos em features que melhor representam o problema subjacente. É frequentemente mais importante que a escolha do algoritmo.

Princípios Fundamentais

1. Relevância

A feature deve estar correlacionada com o target. Features irrelevantes adicionam ruído.

2. Independência

Features devem ser independentes entre si (evitar multicolinearidade). Quando features são altamente correlacionadas, o modelo tem dificuldade em aprender.

3. Simplicidade

Features simples são preferíveis a complexas. Princípio de Occam: a solução mais simples é geralmente a melhor.

4. Interpretabilidade

Você deve entender o que cada feature representa. Modelos interpretáveis são mais confiáveis.

Técnicas Comuns

Normalização e Scaling

StandardScaler: Centraliza em 0 com desvio padrão 1

x_scaled = (x - mean) / std

MinMaxScaler: Escala para [0, 1]

x_scaled = (x - min) / (max - min)

RobustScaler: Resistente a outliers

x_scaled = (x - median) / IQR

Encoding de Variáveis Categóricas

One-Hot Encoding: Cria coluna binária para cada categoria

  • Bom para: Poucas categorias
  • Ruim para: Muitas categorias (curse of dimensionality)

Label Encoding: Mapeia categorias para inteiros

  • Bom para: Variáveis ordinais
  • Ruim para: Variáveis nominais (ordem não importa)

Target Encoding: Usa média do target por categoria

  • Bom para: Muitas categorias
  • Cuidado: Risco de overfitting

Criação de Novas Features

Interações: Multiplicar features existentes

python
df['price_per_sqm'] = df['price'] / df['area']
df['age_price_interaction'] = df['age'] * df['price']

Polinômios: Elevar features a potências

python
df['price_squared'] = df['price'] ** 2
df['sqrt_area'] = np.sqrt(df['area'])

Agregações: Agrupar e sumarizar dados

python
df['avg_price_by_neighborhood'] = df.groupby('neighborhood')['price'].transform('mean')

Exemplo Prático: Previsão de Preço de Imóveis

Features Originais

  • price (target)
  • area
  • bedrooms
  • bathrooms
  • age
  • garage_spaces
  • neighborhood

Features Engineered

  1. price_per_sqm = price / area

    • Normaliza preço pela área
  2. age = current_year - construction_year

    • Cria feature contínua
  3. has_garage = 1 se garage_spaces > 0, 0 caso contrário

    • Converte para binária
  4. total_rooms = bedrooms + bathrooms

    • Combina features relacionadas
  5. price_per_room = price / (bedrooms + bathrooms)

    • Razão entre preço e número de cômodos
  6. neighborhood_avg_price = média de preço por bairro

    • Captura informação do bairro

Validação de Features

Importância de Features

Use técnicas como:

  • Tree-based importance: Quanto cada feature é usada em splits
  • Permutation importance: Quanto a performance cai se permutamos a feature
  • SHAP values: Contribuição de cada feature para cada predição

Correlação com Target

python
correlations = df.corr()['price'].sort_values(ascending=False)

Validação Cruzada

Avaliar impacto de cada feature:

python
from sklearn.model_selection import cross_val_score

# Com feature
score_with = cross_val_score(model, X_with_feature, y)

# Sem feature
score_without = cross_val_score(model, X_without_feature, y)

improvement = score_with.mean() - score_without.mean()

Armadilhas Comuns

Data Leakage

Usar informações do futuro ou target na feature. Exemplo: usar preço final para criar feature.

Overfitting

Criar muitas features complexas que capturam ruído, não padrões reais.

Curse of Dimensionality

Muitas features com poucos dados leva a overfitting.

Melhores Práticas

  1. Comece simples: Comece com features óbvias e adicione complexidade gradualmente
  2. Valide sempre: Use validação cruzada para avaliar impacto
  3. Documente: Explique por que cada feature foi criada
  4. Itere: Feature engineering é iterativo, não é uma etapa única
  5. Use domain knowledge: Entender o domínio ajuda a criar features melhores

Conclusão

Feature engineering é tanto arte quanto ciência. Requer criatividade, conhecimento de domínio e validação rigorosa. Investir tempo aqui geralmente rende melhores resultados que otimizar algoritmos.

Lembre-se: garbage in, garbage out. Features boas são a base de um modelo bom!

Compartilhe este artigo: