Sobes.tech
Middle — Senior

O que é o desvio de distribuição e como detectá-lo (teste KS, PSI)?

sobes.tech IA

Resposta da IA

O desvio de distribuição é uma mudança na distribuição dos dados ao longo do tempo, o que pode levar à deterioração da qualidade do modelo de aprendizado de máquina, pois o modelo é treinado em uma distribuição, enquanto em produção os dados vêm de outra.

Para detectar o desvio de distribuição, frequentemente usam-se testes estatísticos e métricas:

  • Teste KS (Kolmogorov-Smirnov) — um teste não paramétrico que compara duas amostras e verifica o quão diferentes são suas distribuições. Se o valor p do teste for baixo, significa que as distribuições diferem significativamente.

  • PSI (Índice de Estabilidade da População) — uma métrica que mede a mudança na distribuição de uma variável entre dois períodos. O PSI é calculado pelos bins de distribuição e mostra o grau de deslocamento. Normalmente:

    • PSI < 0.1 — deslocamento insignificante
    • 0.1 < PSI < 0.25 — deslocamento moderado
    • PSI > 0.25 — deslocamento significativo

Exemplo de uso do teste KS em Python:

from scipy.stats import ks_2samp

reference_data = [...]  # dados da amostra de treinamento
current_data = [...]    # novos dados

statistic, p_value = ks_2samp(reference_data, current_data)
if p_value < 0.05:
    print("Detecção de desvio de distribuição")
else:
    print("Distribuições semelhantes")

Dessa forma, o monitoramento regular das distribuições usando o teste KS e o PSI ajuda a identificar oportunamente o desvio e tomar medidas (por exemplo, re-treinar o modelo).