Engenharia e seleção de features

Machine Learning de ponta a ponta

Joshua Stapleton

Machine Learning Engineer

Engenharia de features

Criação de features

  • Simplifica o problema
  • Melhora a eficiência do modelo

Técnicas

  • Modificar features existentes
  • Criar novas features

Benefícios

  • Implantação, manutenção e treino mais fáceis
  • Mais interpretabilidade

Estágio atual do ciclo de ML: engenharia de features

Machine Learning de ponta a ponta

Normalização

  • Escala features numéricas para [0, 1]
  • Útil quando as features têm escalas/faixas diferentes
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Normalizer

# Separe os dados
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Crie o normalizer, ajuste no treino, normalize e transforme o teste
norm = Normalizer()
X_train_norm = norm.fit_transform(X_train)
X_test_norm = norm.transform(X_test)
Machine Learning de ponta a ponta

Padronização

  • Ajusta dados para média = 0 e variância = 1
  • Bom para algoritmos que assumem média e variância similares
from sklearn.preprocessing import StandardScaler

# Separe os dados
X_train, X_test = train_test_split(df, test_size=0.2, random_state=42)
# Crie um scaler e ajuste no treino para padronizar
sc = StandardScaler()
X_train_stzd = sc.fit_transform(X_train)
# No teste, só transforme
X_test_stzd = sc.transform(X_test)
Machine Learning de ponta a ponta

O que é uma boa feature?

  • Use features relevantes
  • O clima no dia da consulta não deve afetar o diagnóstico

 

Uma imagem de tempo chuvoso ilustrando o princípio de relevância de features na seleção

  • Use features distintas (ortogonais)
  • Idade em meses e em anos não ajuda

 

Um diagrama mostrando o princípio de ortogonalidade na seleção de features

Machine Learning de ponta a ponta

sklearn.feature_selection

 

from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
from sklearn.model_selection import train_test_split

# Divida em treino e teste primeiro para evitar vazamento de dados X_train, X_test, y_train, y_test = train_test_split( heart_disease_df_X, heart_disease_df_y, test_size=0.2, random_state=42)
Machine Learning de ponta a ponta

sklearn.feature_selection (cont.)

 

# Defina e ajuste o modelo de random forest
rf = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
rf.fit(X_train, y_train)

# Defina e execute a seleção de features model = SelectFromModel(rf, prefit=True) features_bool = model.get_support() features = heart_disease_df.columns[features_bool]
Machine Learning de ponta a ponta

Vamos praticar!

Machine Learning de ponta a ponta

Preparing Video For Download...