Pular para o conteúdo principal
InicioTutoriaisAprendizado de máquina

Entendendo o desvio de dados e o desvio de modelo: Detecção de deriva em Python

Navegue pelos perigos do desvio de modelo e explore nosso guia prático para o monitoramento do desvio de dados.
abr. de 2024  · 9 min leer

"Drift" é um termo usado no aprendizado de máquina para descrever como o desempenho de um modelo de aprendizado de máquina em produção piora lentamente com o tempo. Isso pode ocorrer por vários motivos, como mudanças na distribuição dos dados de entrada ao longo do tempo ou mudanças na relação entre a entrada (x) e o objetivo desejado (y). 

O desvio pode ser um grande problema quando usamos o aprendizado de máquina no mundo real, onde os dados são frequentemente dinâmicos e estão sempre mudando. Este artigo abordará a fundo por que os modelos sofrem desvios, os diferentes tipos de desvios, os algoritmos para detectá-los e, por fim, encerrará este artigo com uma implementação de código aberto da detecção de desvios em Python.

O que é Drift?

Os modelos de aprendizado de máquina são treinados com dados históricos, mas, quando são usados no mundo real, podem ficar desatualizados e perder a precisão ao longo do tempo devido a um fenômeno chamado drift. O desvio é a mudança ao longo do tempo nas propriedades estatísticas dos dados que foram usados para treinar um modelo de aprendizado de máquina. Isso pode fazer com que o modelo se torne menos preciso ou tenha um desempenho diferente daquele para o qual foi projetado. 

Em outras palavras, "deriva" é o declínio na capacidade de um modelo de fazer previsões precisas devido a mudanças no ambiente em que está sendo usado.

Por que os modelos de aprendizado de máquina se desviam?

Há vários motivos pelos quais os modelos de aprendizado de máquina podem se desviar com o tempo. 

Um motivo comum é simplesmente o fato de os dados com os quais o modelo foi treinado ficarem desatualizados ou não representarem mais as condições atuais. 

Por exemplo, considere um modelo de aprendizado de máquina treinado para prever o preço das ações de uma empresa com base em dados históricos. Se treinarmos o modelo com dados de um mercado estável, ele poderá se sair bem no início. Entretanto, se o mercado se tornar mais volátil ao longo do tempo, o modelo poderá não ser mais capaz de prever com precisão o preço das ações porque as propriedades estatísticas dos dados mudaram.

Outro motivo para o desvio do modelo é que ele não foi projetado para lidar com as mudanças nos dados. Alguns modelos de aprendizado de máquina podem lidar com as alterações nos dados melhor do que outros, mas nenhum modelo pode evitar completamente o desvio. 

Tipos de deriva

Vamos explorar os dois tipos diferentes de deriva a serem considerados:

1. Conceito Drift

O desvio de conceito, também conhecido como desvio de modelo, ocorre quando a tarefa para a qual o modelo foi projetado muda com o tempo. Por exemplo, imagine que um modelo de aprendizado de máquina tenha sido treinado para detectar e-mails de spam com base no conteúdo do e-mail. Se os tipos de e-mails de spam que as pessoas recebem mudarem significativamente, o modelo poderá não ser mais capaz de detectar spam com precisão.

O desvio de conceito pode ser dividido em quatro categorias (Aprendizagem em desvio de conceito: A Review, Jie Lu et al.):

  • Desvio repentino
  • Gradual Drift
  • Desvio incremental
  • Conceitos recorrentes

Conceito Drift

Source: https://arxiv.org/pdf/2004.05785.pdf

2. Data Drift

O desvio de dados, também conhecido como mudança de covariável, ocorre quando a distribuição dos dados de entrada muda com o tempo. Por exemplo, considere um modelo de aprendizado de máquina que foi treinado para prever a probabilidade de um cliente comprar um produto com base em sua idade e renda. Se a distribuição de idade e renda dos clientes mudar significativamente ao longo do tempo, o modelo poderá não ser mais capaz de prever com precisão a probabilidade de uma compra.

É importante estar ciente do desvio de conceito e do desvio de dados e tomar medidas para evitar ou atenuar seus efeitos. Algumas estratégias para lidar com o desvio incluem o monitoramento e a avaliação contínuos do desempenho de um modelo, a atualização do modelo com novos dados e o uso de modelos de aprendizado de máquina mais resistentes ao desvio.

Você pode saber mais sobre a ciência de dados pós-implantação, como o drift, em nosso episódio do podcast DataFramed. 

Como você detecta a deriva?

Há duas maneiras de detectar o desvio:

1. Abordagem baseada em modelos de aprendizado de máquina: Abordagem baseada em modelo para detectar se os dados de entrada foram desviados ou não.

2. Testes estatísticos: Há muitos testes estatísticos para detectar desvios de dados. Eles são divididos principalmente em três categorias: 

    • Métodos de análise sequencial 
    • Modelo personalizado para detectar desvios 
    • Método de distribuição de tempo, que é muito comum. 

Os métodos baseados em distribuição de tempo usam métodos estatísticos para calcular a diferença entre duas distribuições de probabilidade para detectar desvios. Esses métodos incluem o Índice de Estabilidade Populacional, a Divergência KL, a Divergência JS, o Teste KS e a Métrica de Wasserstein. 

Algoritmos para detecção de desvio de dados

Teste de Kolmogorov-Smirnov (K-S)

O teste de Kolmogorov-Smirnov (K-S) é um teste estatístico não paramétrico usado para determinar se dois conjuntos de dados são provenientes da mesma distribuição. É frequentemente usado para testar se uma amostra de dados é proveniente de uma população específica ou para comparar duas amostras e determinar se elas são provenientes da mesma população.

A hipótese nula nesse teste é que as distribuições são as mesmas. Se essa hipótese for rejeitada, isso sugere que há um desvio no modelo.

O teste K-S é uma ferramenta útil para comparar conjuntos de dados e determinar se eles são provenientes da mesma distribuição.

Índice de Estabilidade Populacional

O Índice de Estabilidade da População (PSI) é uma medida estatística usada para comparar a distribuição de uma variável categórica em dois conjuntos de dados diferentes. 

O Índice de Estabilidade da População (PSI) é uma ferramenta usada para medir o quanto a distribuição de uma variável mudou entre duas amostras ou ao longo do tempo. É comumente usado para monitorar mudanças nas características de uma população e para identificar possíveis problemas com o desempenho de um modelo de aprendizado de máquina.

O PSI foi originalmente desenvolvido para monitorar as mudanças na distribuição de uma pontuação nos scorecards de risco, mas agora é usado para examinar as mudanças na distribuição de todos os atributos relacionados ao modelo, incluindo as variáveis dependentes e independentes. 

Um valor alto de PSI indica que há uma diferença significativa entre as distribuições da variável nos dois conjuntos de dados, o que pode sugerir que há um desvio no modelo. 

Se a distribuição de uma variável tiver mudado significativamente, ou se várias variáveis tiverem mudado até certo ponto, pode ser necessário recalibrar ou reconstruir o modelo para melhorar seu desempenho.

Método Page-Hinkley

O método Page-Hinkley é um método estatístico usado para detectar alterações na média de uma série de dados ao longo do tempo. É comumente usado para monitorar o desempenho dos modelos de aprendizado de máquina e detectar alterações na distribuição dos dados que possam indicar desvio do modelo.

Para usar o método Page-Hinkley, a primeira etapa é definir um valor limite e uma função de decisão. O valor limite é um valor acima do qual uma alteração na média é considerada significativa, e a função de decisão é uma função que retorna o valor 1 se uma alteração tiver sido detectada e o valor 0 se nenhuma alteração tiver sido detectada.

Em seguida, a média da série de dados é calculada em cada etapa de tempo, e a função de decisão é aplicada aos dados para determinar se ocorreu uma alteração. Se a função de decisão retornar um valor de 1, isso indica que uma alteração foi detectada e que o modelo pode estar se desviando.

O método Page-Hinkley é uma maneira simples e eficaz de detectar alterações na média de uma série de dados ao longo do tempo. É particularmente útil para detectar pequenas alterações na média que podem não ser imediatamente aparentes ao analisar os dados. No entanto, é importante selecionar cuidadosamente o valor do limite e a função de decisão para garantir que o método seja sensível o suficiente para detectar alterações nos dados, mas não tão sensível a ponto de gerar alarmes falsos.

Implementação da detecção de deriva em Python

Nesta seção, usaremos o Evidently para detectar desvios. Evidently é uma biblioteca Python de código aberto criada para cientistas de dados e engenheiros que trabalham com aprendizado de máquina. Ele os ajuda a testar, avaliar e acompanhar o funcionamento de seus modelos, desde a validação até a produção.

Importar bibliotecas

```

# import libraries

import pandas as pd

import numpy as np

from sklearn import datasets


from evidently.report import Report

from evidently.metrics import DataDriftTable

from evidently.metrics import DatasetDriftMetric

```

Importar conjunto de dados e criar partições de referência e de destino

```

# create ref and cur dataset for drift detection

adult_data = datasets.fetch_openml(name='adult', version=2, as_frame='auto')

adult = adult_data.frame




adult_ref = adult[~adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]

adult_cur = adult[adult.education.isin(['Some-college', 'HS-grad', 'Bachelors'])]




adult_cur.iloc[:2000, 3:5] = np.nan

```

Gerar relatório de deriva

```

#dataset-level metrics

data_drift_dataset_report = Report(metrics=[

    DatasetDriftMetric(),

    DataDriftTable(),    

])

data_drift_dataset_report.run(reference_data=adult_ref, current_data=adult_cur)

data_drift_dataset_report

```

Painel de detecção de deriva

Painel de detecção de deriva - criado usando EvidentlyAI

Exportar relatório de deriva no formato JSON

```

#report in a JSON format

data_drift_dataset_report.json()

```

Confira o Datacamp Notebook completo aqui.

Conclusão

O desvio de dados e modelos pode representar desafios significativos para os sistemas de aprendizado de máquina em produção. Ao compreender as causas e os efeitos do desvio e implementar práticas eficazes de monitoramento de desvio, você pode garantir que seus modelos de aprendizado de máquina permaneçam precisos e confiáveis ao longo do tempo. 

O monitoramento do desempenho de seus modelos, o uso de um modelo de detecção de desvios e o retreinamento regular com base em dados atualizados são apenas algumas das práticas recomendadas que você pode seguir para reduzir os riscos de desvios. Ao ser proativo no monitoramento de desvios, você pode garantir que seu sistema de aprendizado de máquina continue a agregar valor à sua organização.

O monitoramento de modelos de aprendizado de máquina quanto a desvios é apenas um aspecto de um campo mais amplo chamado MLOps. Compreender os conceitos de MLOps é essencial para que qualquer cientista de dados, engenheiro ou líder leve os modelos de aprendizado de máquina de um notebook local para um modelo funcional na produção. 

Se você quiser se aprofundar na compreensão dos MLOps e em como eles podem beneficiá-lo em sua carreira, confira nosso curso Conceitos de MLOps. Aqui, você aprenderá o que é MLOps, entenderá as diferentes fases dos processos de MLOps e identificará os diferentes níveis de maturidade de MLOps. Depois de aprender sobre os conceitos essenciais de MLOps, você estará bem equipado em sua jornada para implementar o aprendizado de máquina de forma contínua, confiável e eficiente.

Perguntas frequentes sobre detecção de deriva

O que é desvio de modelo de aprendizado de máquina?

O desvio de modelo de aprendizado de máquina ocorre quando o desempenho de um modelo em novos dados é diferente do desempenho nos dados de treinamento em que foi criado. Isso pode ocorrer por vários motivos, incluindo mudanças na distribuição dos dados ao longo do tempo, a adição de novos dados que não se encaixam nas suposições do modelo original ou a própria incapacidade do modelo de se adaptar às condições variáveis.

Por que o desvio de modelo é um problema?

O desvio de modelo pode afetar significativamente o desempenho e a precisão de um modelo de aprendizado de máquina. À medida que as previsões do modelo se tornam menos confiáveis, isso pode levar a decisões ou ações incorretas que podem ter consequências negativas. Por exemplo, em um ambiente de saúde, o desvio de modelo pode levar a diagnósticos ou recomendações de tratamento incorretos, enquanto em um ambiente financeiro, pode resultar em decisões de investimento ruins.

Como você detecta o desvio do modelo?

Há várias maneiras de determinar se um modelo está sofrendo desvios, como testes estatísticos, algoritmos de detecção de desvios e observação do desempenho do modelo. Alguns desses métodos são feitos para encontrar desvios em tempo real, enquanto outros são melhores para testes em horários definidos ou em grupos. É importante escolher a técnica certa para o aplicativo e o ambiente de dados específicos.

Como você evita o desvio de modelo?

A prevenção da deriva do modelo requer uma combinação de seleção cuidadosa do modelo, monitoramento e testes regulares e intervenção proativa. Isso pode envolver o uso de algoritmos mais resistentes a desvios, o retreinamento regular de modelos com base em novos dados ou a implementação de estratégias para lidar ativamente com os desvios quando eles forem detectados. Também é importante ter uma compreensão clara dos fatores que podem causar desvios, para que você possa tomar medidas para evitá-los.

Como a distribuição de dados afeta o desvio do modelo?

A distribuição de dados pode afetar significativamente o desempenho de um modelo de aprendizado de máquina. Se a distribuição dos dados mudar com o tempo, isso pode levar à deriva do modelo, pois o modelo pode não ser mais capaz de prever com precisão novos dados que não correspondam às suas premissas originais. Isso pode ocorrer de várias maneiras, como por meio de variações naturais nos dados, adição de novas fontes de dados ou alterações nos processos ou sistemas subjacentes que geram os dados.

A deriva do modelo é reversível?

Em alguns casos, o desvio do modelo pode ser reversível com o retreinamento do modelo em novos dados ou com o ajuste de seus parâmetros. No entanto, isso nem sempre é possível, especialmente se a distribuição de dados tiver mudado significativamente ou se o modelo tiver se tornado excessivamente complexo ou especializado. Nessas situações, pode ser necessário começar de novo com um novo modelo.

É possível eliminar completamente o desvio do modelo?

Eliminar completamente o desvio de modelos é difícil, se não impossível. Até mesmo os modelos de aprendizado de máquina mais robustos e bem projetados podem ser afetados por alterações nos dados ou nos processos subjacentes que os geram. A melhor abordagem é gerenciar e atenuar o impacto do desvio de modelo por meio de monitoramento, testes e intervenções regulares.

Como o desvio de modelo afeta o desempenho do modelo?

O desvio de modelo pode ter um impacto significativo no desempenho de um modelo de aprendizado de máquina. À medida que as previsões do modelo se tornam menos precisas, isso pode levar a um desempenho reduzido em métricas importantes, como exatidão, precisão, recuperação e eficácia geral do modelo. Em alguns casos, o desvio de modelo pode até mesmo fazer com que um modelo falhe completamente, resultando em previsões incorretas ou não confiáveis.

Como a deriva do modelo afeta a precisão do modelo?

O desvio de modelo pode ter um impacto negativo na precisão de um modelo de aprendizado de máquina. À medida que as previsões do modelo se tornam menos precisas, ele pode levar a decisões ou ações incorretas, o que pode ter consequências negativas em aplicativos do mundo real. Por exemplo, em um ambiente de saúde, o desvio de modelo pode levar a diagnósticos ou recomendações de tratamento incorretos, enquanto em um ambiente financeiro, pode resultar em decisões de investimento ruins. É importante monitorar e testar regularmente o desvio do modelo para manter a precisão do modelo.

Temas

Cursos MLOps

Course

MLOps Concepts

2 hr
13K
Discover how MLOps can take machine learning models from local notebooks to functioning models in production that generate real business value.
See DetailsRight Arrow
Start Course
Veja MaisRight Arrow
Relacionado

tutorial

Tutorial para entender a regressão logística em Python

Aprenda sobre a regressão logística, suas propriedades básicas e crie um modelo de aprendizado de máquina em um aplicativo do mundo real em Python.
Avinash Navlani's photo

Avinash Navlani

10 min

tutorial

Tutorial de manipulação de dados categóricos de aprendizado de máquina com Python

Aprenda os truques comuns para lidar com dados categóricos e pré-processá-los para criar modelos de aprendizado de máquina!
Moez Ali's photo

Moez Ali

28 min

tutorial

Tutorial de regressão Lasso e Ridge em Python

Saiba mais sobre as técnicas de regressão lasso e ridge. Compare e analise os métodos em detalhes.
DataCamp Team's photo

DataCamp Team

10 min

tutorial

21 ferramentas essenciais do Python

Aprenda sobre as ferramentas Python essenciais para o desenvolvimento de software, raspagem e desenvolvimento da Web, análise e visualização de dados e aprendizado de máquina.
Abid Ali Awan's photo

Abid Ali Awan

6 min

tutorial

Tutorial de mineração de regras de associação em Python

Descobrindo padrões ocultos em Python com mineração de regras de associação
Moez Ali's photo

Moez Ali

14 min

tutorial

Entendendo a classificação de textos em Python

Descubra o que é a classificação de texto, como ela funciona e os casos de uso bem-sucedidos. Explore exemplos de ponta a ponta de como criar um pipeline de pré-processamento de texto seguido de um modelo de classificação de texto em Python.
Moez Ali 's photo

Moez Ali

12 min

See MoreSee More