Quando lidamos com dados não balanceados que envolva a variável target/alvo, o semi-supervised learning -SSL, como devo proceder com dados rotulados iniciais e também quanto os dados não rotulados que eu estou tentando preencher(pseudo-rotulação)?
ATÉ 50% OFF
TÁ ACABANDO!
0 dias
0 horas
0 min
0 seg
Quando lidamos com dados não balanceados que envolva a variável target/alvo, o semi-supervised learning -SSL, como devo proceder com dados rotulados iniciais e também quanto os dados não rotulados que eu estou tentando preencher(pseudo-rotulação)?
Oi Luís, tudo bem?
Quando os seus dados estão desbalanceados, isso afeta tanto os rótulos reais quanto os pseudorrótulos gerados depois. No semi-supervisionado, a atenção ao balanceamento precisa acontecer em duas etapas diferentes.
No conjunto rotulado inicial, você trata o desbalanceamento como faria em um modelo supervisionado comum. Isso inclui técnicas como:
• undersampling,
• oversampling (ex.: SMOTE),
• uso de métricas adequadas (F1, recall),
• ajuste de pesos da classe no modelo (class_weight).
Isso garante que o primeiro modelo (aquele usado para gerar pseudorrótulos) não fique enviesado para a classe majoritária.
Depois, quando você cria os pseudorrótulos a partir desse modelo inicial, é importante não confiar cegamente em todas as previsões. Em SSL, a qualidade dos pseudorrótulos pesa mais que a quantidade. Existem duas boas práticas:
Filtrar previsões por confiança: Use apenas as previsões cujo modelo está realmente seguro. Por exemplo, pegar somente exemplos onde o modelo tem probabilidade > 0.8. Isso evita reforçar o desbalanceamento original.
Controlar a proporção das classes após a pseudorrotulação: Depois de gerar os pseudorrótulos, observe a distribuição. Se o modelo prever quase tudo como a classe majoritária, vale equilibrar antes de treinar o segundo modelo, usando as mesmas técnicas acima.
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!