Engenharia de Atributos no Rubix ML: No artigo anterior, aprendemos a “limpar a refinaria” com os Transformers. Agora, entramos na fase mais artística e estratégica da Ciência de Dados: a Engenharia de Atributos (Feature Engineering). Se os dados são o combustível, a engenharia de atributos é a tunagem do motor.
Como especialista em Rubix ML, preparei este quinto guia para mostrar que, no Machine Learning, “menos é mais”. Vamos descobrir como selecionar e criar as melhores características para o seu dataset, eliminando o ruído que confunde seus algoritmos e alcançando uma precisão cirúrgica em suas predições.
Engenharia de Atributos: A Arte de Criar e Selecionar Dados de Elite no Rubix ML
Engenharia de Atributos no Rubix ML: Muitos desenvolvedores acreditam que, para melhorar um modelo, basta jogar mais dados nele. No entanto, incluir colunas irrelevantes — como o “ID do usuário” ou a “Cor favorita” para prever o sucesso de uma contratação, por exemplo, — cria o que chamamos de ruído. O ruído distrai o algoritmo, aumenta o tempo de treinamento e, pior, causa o overfitting (quando o modelo decora o passado, mas falha em prever o futuro).
A Engenharia de Atributos consiste em dois processos principais:
- Criação de Atributos: Transformar dados brutos em algo mais significativo.
- Seleção de Atributos: Escolher apenas as colunas que realmente têm poder preditivo.
1. O Problema da Dimensionalidade (A Maldição)
No Rubix ML, cada coluna do seu dataset é uma “dimensão”. Quanto mais dimensões você tem, mais esparsos os dados se tornam e mais difícil é para o modelo encontrar padrões reais. Isso é conhecido como a “Maldição da Dimensionalidade”.
Imagine que você está analisando dados públicos de São José do Rio Preto. Se você incluir 200 colunas sobre uma licitação, o modelo pode achar correlações aleatórias onde elas não existem. A engenharia de atributos serve para filtrar esse excesso.
2. Seleção de Atributos com Rubix ML
A biblioteca oferece ferramentas poderosas para identificar quais colunas são “estrelas” e quais são apenas figurantes.
A. Filtros de Variância (Variance Threshold)
Colunas onde o valor quase não muda (ex: uma coluna “País” onde 99% é “Brasil”) não ajudam o modelo a distinguir nada. Elas têm baixa variância.
PHP
use Rubix\ML\Transformers\VarianceThreshold;
// Remove colunas onde a variância é menor que 0.1
$transformer = new VarianceThreshold(0.1);
$dataset->apply($transformer);
B. Importância de Atributos (Feature Importance)
Alguns algoritmos, como o Random Forest, conseguem nos dizer exatamente quanto cada coluna contribuiu para a decisão final.
PHP
use Rubix\ML\Classifiers\RandomForest;
use Rubix\ML\Datasets\Labeled;
$estimator = new RandomForest(100);
$estimator->train($dataset);
// Retorna um array com o peso de importância de cada coluna
$importances = $estimator->featureImportances();
print_r($importances);
3. Construção de Atributos: Criando Valor do Nada
Às vezes, a informação que o algoritmo precisa não está em uma única coluna, mas na relação entre elas.
Exemplo Prático: Datas
Uma data de nascimento isolada não serve para muita coisa. Mas, ao subtraí-la da data atual, você cria a coluna Idade, que é um atributo preditivo fortíssimo.
Exemplo Prático: Texto
Em um blog, por exemplo, o tamanho do comentário pode ser um indicador de “Spam” vs “Dúvida”. Criar uma coluna tamanho_texto a partir do corpo do comentário é engenharia de atributos pura.
4. Redução de Dimensionalidade: PCA (Principal Component Analysis)
E se você realmente precisar de muitos dados, mas quiser condensá-los? O PCA é uma técnica matemática que combina várias colunas em um número menor de “componentes principais”, retendo a maior parte da informação original, mas eliminando a redundância.
Exemplo no Rubix ML:
PHP
use Rubix\ML\Transformers\PrincipalComponentAnalysis;
// Reduz o dataset para apenas as 3 características mais significativas
$transformer = new PrincipalComponentAnalysis(3);
$dataset->apply($transformer);
5. Exemplo Real: Otimizando um portal de empregos
Vamos aplicar engenharia de atributos para prever o salário de uma vaga de TI.
Dados Brutos:
data_postagem,nome_empresa,cidade,tecnologias_exigidas,descricao_vaga.
Engenharia Aplicada:
- Extração de Tecnologia: Criamos colunas booleanas para cada tecnologia (ex:
tem_php,tem_laravel). - Tempo de Vaga: Em vez da
data_postagem, calculamosdias_anuncio_ativo. - Contagem de Requisitos: Criamos uma coluna
total_requisitoscontando quantas tecnologias são exigidas. Frequentemente, quanto mais requisitos, maior o salário (ou a senioridade).
Código de Exemplo (Pipeline Estratégico):
PHP
use Rubix\ML\Pipeline;
use Rubix\ML\Transformers\NumericColumnSelector;
use Rubix\ML\Transformers\ZScaleStandardizer;
use Rubix\ML\Transformers\VarianceThreshold;
$estimator = new Pipeline([
// 1. Removemos colunas que não variam (ruído estático)
new VarianceThreshold(0.05),
// 2. Selecionamos apenas colunas numéricas que criamos na engenharia
new NumericColumnSelector(),
// 3. Normalizamos para que colunas com números grandes não dominem
new ZScaleStandardizer(),
], new \Rubix\ML\Regressors\RegressionTree());
6. Boas Práticas para Evitar Ruídos
Para atuar como um profissional de elite no Rubix ML, siga estas diretrizes:
- Conhecimento de Domínio: Antes de codar, entenda o negócio. Se você está analisando dados da sua cidade, saber quais bairros são mais valorizados é mais importante do que qualquer algoritmo de seleção automática.
- Cuidado com a Correlação: Se duas colunas dizem a mesma coisa (ex: “Preço em Reais” e “Preço em Dólares”), remova uma. Colunas altamente correlacionadas confundem modelos lineares.
- Iteração é a chave: A engenharia de atributos é um ciclo. Tente uma combinação, meça a precisão, mude os atributos e tente de novo.
- Simplicidade: Se um modelo com 5 atributos tem 90% de acurácia e um com 50 atributos tem 91%, escolha o de 5. Ele será mais rápido e mais fácil de manter.
Conclusão: O Toque Humano na IA
A Engenharia de Atributos é onde o desenvolvedor deixa de ser um executor e se torna um estrategista. No Rubix ML, selecionar as melhores características e evitar ruídos é o que garante que sua aplicação PHP seja inteligente de verdade, e não apenas uma caixa preta que cospe números aleatórios.
Ao dominar a arte de preparar o que o algoritmo vê, você assume o controle total da precisão do seu sistema. Seja prevendo tendências de mercado ou filtrando comentários no seu blog, o segredo do sucesso não está na quantidade de dados, mas na qualidade e na relevância de cada bit que você decide manter.
No próximo artigo, entraremos na fase de ação: “Aprendizado Supervisionado – Classificação: Criando seu primeiro modelo para prever categorias.”
Mas antes de dominar o Rubix ML, se este for o seu caso, entendemos que toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo esta poderosa biblioteca. Para iniciar seus estudos do Rubix ML, você precisará dominar as seguintes tecnologias e/ou framework:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados.
Dica de Especialista: Use o transformer Lambda do Rubix ML para criar novos atributos on-the-fly. Ele permite que você passe uma função anônima PHP para transformar colunas de forma personalizada e rápida!









