Limpando os Dados no Rubix ML

Rubix ML
Tempo de leitura: 5 minutos

Limpando os Dados no Rubix ML: Você já ouviu a frase “Garbage in, garbage out” (Lixo entra, lixo sai)? No universo do Machine Learning, ela é a lei suprema. Você pode escolher o algoritmo mais sofisticado do mundo, mas se os seus dados estiverem “sujos” — com buracos, escalas desproporcionais ou formatos que o computador não entende — sua previsão será um desastre.

Como especialista em Rubix ML, preparei este quarto artigo para apresentar a “refinaria” dos seus dados. Vamos aprender a usar os Transformers: ferramentas essenciais para limpar, converter e normalizar suas informações, garantindo que sua inteligência artificial receba apenas o melhor combustível possível.

Limpando os Dados (Transformers): A Refinaria do Machine Learning com PHP

Limpando os Dados no Rubix ML: Em um mundo ideal, seus datasets seriam perfeitos. No mundo real, os dados são bagunçados. Um usuário esquece de preencher a idade, outro escreve o nível de experiência como “Sênior” (texto) enquanto o algoritmo espera números, e as faixas salariais variam de R$ 2.000 a R$ 20.000, confundindo a cabeça do modelo.

Os Transformers do Rubix ML são objetos que aplicam transformações estruturais nas amostras do seu dataset. Eles preparam o terreno para que o modelo foque no que realmente importa: encontrar padrões.

1. Lidando com Buracos: O Imputer

Dados faltantes (os famosos null ou NaN) são o pesadelo de qualquer estimador. Se você tentar treinar um modelo com um valor ausente, ele provavelmente lançará uma exceção ou produzirá um viés incorreto.

O Imputer é o transformer responsável por “preencher os vazios” de forma inteligente. Em vez de simplesmente deletar a linha inteira (o que faria você perder dados preciosos), o Imputer pode substituir o valor faltante por:

  • Média (Mean): A média aritmética da coluna.
  • Mediana (Median): O valor central da coluna.
  • Mais frequente (Most Frequent): Ideal para categorias (strings).
  • Constante: Um valor fixo que você definir.

Exemplo Prático:

PHP

use Rubix\ML\Transformers\Imputer;
use Rubix\ML\Strategies\Mean;

// Se o usuário não preencheu a idade, usamos a média de idade do dataset
$transformer = new Imputer(null, new Mean());

$dataset->apply($transformer);

2. Traduzindo Texto para Números: OneHotEncoder

Algoritmos de Machine Learning são, no fundo, calculadoras gigantes. Eles amam números e odeiam textos. Como explicar para uma fórmula matemática que o candidato mora em “São José do Rio Preto” ou “São Paulo”?

Você poderia pensar em converter para números simples (1 para Rio Preto, 2 para SP), mas isso criaria um problema: o algoritmo acharia que São Paulo (2) é “maior” ou “melhor” que Rio Preto (1) apenas por causa do valor.

O OneHotEncoder resolve isso criando colunas binárias (0 ou 1) para cada categoria.

  • Original: [Cidade: Rio Preto]
  • Transformado: [Cidade_RioPreto: 1, Cidade_SP: 0]

Exemplo Prático:

PHP

use Rubix\ML\Transformers\OneHotEncoder;

// Transforma colunas categóricas em vetores binários
$transformer = new OneHotEncoder();

$dataset->apply($transformer);

3. Equilibrando a Balança: StandardScaler

Imagine que seu dataset tem duas colunas: Idade (que varia de 18 a 60) e Salário Anual (que varia de 30.000 a 200.000).

Para muitos algoritmos, o valor “200.000” é tão maior que “60” que ele passará a ignorar a idade, achando que o salário é a única variável que importa.

O StandardScaler (Padronização) centraliza os dados para que a média seja 0 e o desvio padrão seja 1. Isso coloca todas as características na mesma escala, sem perder a proporção entre elas.

Exemplo Prático:

PHP

use Rubix\ML\Transformers\StandardScaler;

$transformer = new StandardScaler();

$dataset->apply($transformer);

4. Onde Aplicar? Exemplo Real em sistema de candidatos de emprego

Vamos aplicar esses três transformers em um problema real: prever se um candidato tem chances de ser contratado.

Dados de Entrada:

  • Experiência (anos): Numérico, mas com alguns valores faltantes.
  • Nível de Inglês: Categórico (“Básico”, “Intermediário”, “Avançado”).
  • Pretensão Salarial: Numérico (valores altos).

Código Completo da “Refinaria”:

PHP

use Rubix\ML\Datasets\Labeled;
use Rubix\ML\Pipeline;
use Rubix\ML\Transformers\Imputer;
use Rubix\ML\Transformers\OneHotEncoder;
use Rubix\ML\Transformers\StandardScaler;
use Rubix\ML\Strategies\Median;
use Rubix\ML\Classifiers\SoftmaxClassifier;

// 1. Criamos o Pipeline (nossa linha de produção)
$estimator = new Pipeline([
    // Primeiro: Preenchemos anos de experiência faltantes com a mediana
    new Imputer(null, new Median()),
    
    // Segundo: Convertemos o "Nível de Inglês" em colunas binárias
    new OneHotEncoder(),
    
    // Terceiro: Colocamos Experiência e Salário na mesma escala
    new StandardScaler(),
], new SoftmaxClassifier());

// 2. Treinamento
// O Pipeline aplicará automaticamente as transformações antes de entregar ao Softmax
$estimator->train($dataset);

5. Por que usar Pipeline em vez de apply()?

Embora você possa usar $dataset->apply($transformer) manualmente, a melhor prática profissional é o Pipeline.

Por que? Porque quando você for fazer uma predição para um novo usuário, o Pipeline lembrará da “média” e do “desvio padrão” do treinamento original e aplicará exatamente os mesmos cálculos no novo dado. Se você fizer manual, terá que guardar esses valores em algum lugar, o que é um convite para bugs.

6. Boas Práticas na Limpeza de Dados

  1. Analise antes de limpar: Use o método $dataset->describe() para ver quantos valores nulos existem. Se uma coluna tem 90% de dados nulos, talvez seja melhor removê-la em vez de tentar preencher.
  2. Ordem importa: Sempre use o Imputer antes de outros transformers. Não dá para calcular a média (StandardScaler) de uma coluna que tem valores nulos.
  3. Cuidado com a Cardinalidade: Usar OneHotEncoder em uma coluna com 5.000 cidades diferentes criará 5.000 novas colunas, o que pode explodir o uso de memória. Nesses casos, prefira outras técnicas ou agrupe os dados antes.
  4. A Estrela Solitária: Lembre-se que o Label (rótulo) geralmente não precisa ser transformado por esses métodos, apenas as Samples (características).

Conclusão: De Dados Brutos a Ouro Digital

Limpando os Dados no Rubix ML: Aprender a manipular Transformers como o Imputer, OneHotEncoder e StandardScaler é o que separa um programador que “roda scripts” de um verdadeiro Engenheiro de Machine Learning. No Rubix ML, essa etapa de pré-processamento é onde você realmente ganha a batalha pela acurácia.

Ao limpar seus dados de forma profissional, você garante que seu modelo seja justo, robusto e, acima de tudo, útil para o mundo real. Seja no seu blog ou em sistemas complexos como um sistema de candidatos de empregos, o segredo da inteligência artificial não está apenas no cérebro (algoritmo), mas na higiene dos dados que ela consome.

No próximo artigo, daremos um salto estratégico: “Engenharia de Atributos: Como selecionar as melhores características para evitar ruídos.”

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:

Capa Curso PHP
PHP
SQL
SQL
Laravel
Laravel
CakePHP
CakePHP

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.

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime

Dica de Especialista: Explore o transformer MaxAbsScaler se o seu dataset tiver muitos zeros (dados esparsos). Ele é uma alternativa excelente ao StandardScaler para manter a estrutura de zeros intacta enquanto escala os valores!

Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.