WEB3DEV

Cover image for Compreensão dos Tipos de Deriva de Dados em Aprendizado de Máquina
Adriano P. Araujo
Adriano P. Araujo

Posted on

Compreensão dos Tipos de Deriva de Dados em Aprendizado de Máquina

Introdução

A deriva de dados é um desafio crítico no campo de aprendizado de máquina e ciência de dados. Refere-se às mudanças nas propriedades estatísticas dos dados subjacentes ao longo do tempo, o que pode impactar significativamente o desempenho de modelos preditivos. Compreender os diferentes tipos de deriva de dados é essencial para detectar, gerenciar e mitigar seus efeitos de maneira eficaz. Neste ensaio, exploraremos os diversos tipos de deriva de dados e suas implicações para modelos de aprendizado de máquina.

Para navegar pelos mares sempre mutáveis dos dados, é necessário estar atento aos sutis deslocamentos dos ventos de deriva de conceito e características. Pois, no reino do aprendizado de máquina, não são os modelos mais fortes que sobrevivem, nem os mais inteligentes, mas aqueles mais responsivos às mudanças.

Contexto

Deriva de dados refere-se ao fenômeno em que as propriedades estatísticas das variáveis nos dados de entrada de um modelo mudam ao longo do tempo. Isso pode resultar em uma diminuição no desempenho do modelo, pois os dados nos quais o modelo faz previsões já não representam os dados nos quais foi treinado. A deriva de dados é um problema comum em aprendizado de máquina e ciência de dados, especialmente em ambientes dinâmicos nos quais tendências e padrões podem evoluir.

Aqui estão alguns pontos-chave sobre deriva de dados:

  1. Tipos de Deriva de Dados: Existem diferentes tipos, como deriva de conceito (mudanças na relação entre dados de entrada e saída) e deriva de características (mudanças na distribuição das características dos dados de entrada).

  2. Causas: A deriva de dados pode ser causada por vários fatores, incluindo mudanças no comportamento do consumidor, alterações econômicas, efeitos sazonais e tendências em evolução.

  3. Detecção e Monitoramento: É essencial monitorar modelos regularmente, em busca de sinais de deriva de dados. Técnicas de detecção incluem testes estatísticos, monitoramento de pontuações de confiança de previsão e análise de mudanças nas distribuições de dados.

  4. Impacto no Desempenho do Modelo: A deriva de dados pode degradar significativamente o desempenho de um modelo de aprendizado de máquina, tornando suas previsões menos precisas ou relevantes.

  5. Estratégias de Mitigação: Para lidar com a deriva de dados, os modelos podem precisar ser retrabalhados com novos dados, ou técnicas de aprendizado adaptativo podem ser usadas para se ajustar automaticamente às mudanças nos dados ao longo do tempo.

  6. Importância em Aplicações do Mundo Real: Em cenários práticos como previsão financeira, saúde ou varejo, ficar atento à deriva de dados é crucial para manter a confiabilidade e precisão de modelos preditivos.

Tipos de Deriva de Dados

  1. Deriva de Conceito: A deriva de conceito ocorre quando as propriedades estatísticas da variável-alvo, que o modelo está tentando prever, mudam ao longo do tempo. Esse tipo de deriva é particularmente desafiador, pois pode ocorrer mesmo se as características ou dados de entrada permanecerem constantes. A relação entre os dados de entrada e a variável-alvo muda, levando a uma diminuição no desempenho do modelo. Por exemplo, em um modelo de previsão de inadimplência em empréstimos, as condições econômicas podem mudar, alterando os padrões de inadimplência mesmo que os dados do cliente permaneçam os mesmos.

  2. Deriva de Características (Deriva de Covariáveis): A deriva de características ocorre quando a distribuição dos dados de entrada muda. Não envolve necessariamente mudanças na relação entre variáveis de entrada e saída. Esse tipo de deriva é comum em cenários nos quais fatores externos afetam as variáveis de entrada. Por exemplo, em um sistema de reconhecimento de voz, mudanças no ruído de fundo ou estilos de fala podem representar deriva de características.

  3. Deriva de População: A deriva de população é uma forma de deriva de características na qual a mudança ocorre na composição da população ou na amostra de dados. Não se trata da mudança em características individuais, mas da mudança global na composição da população. Por exemplo, se um serviço de streaming inicialmente tem a maioria dos usuários jovens, mas gradualmente muda para um público mais velho, as preferências e padrões de uso podem mudar, refletindo a deriva de população.

  4. Deriva de Rótulo: Esse tipo de deriva é menos comum, mas ocorre quando a definição ou interpretação de rótulos muda ao longo do tempo. É particularmente relevante em áreas subjetivas, como análise de sentimentos, onde normas sociais e uso da linguagem podem evoluir, alterando o significado de certos termos ou expressões.

  5. Deriva Sazonal: A deriva sazonal refere-se a mudanças previsíveis e periódicas nos dados. Essas mudanças são frequentemente cíclicas, como aumento nas vendas durante a temporada de festas ou flutuações de temperatura com as estações. Apesar de previsíveis, ainda exigem que os modelos se adaptem ou levem em conta essas variações.

Código

Detectar e gerenciar a deriva de dados envolve uma variedade de técnicas. Testes estatísticos podem identificar mudanças nas distribuições de dados, enquanto os próprios modelos de aprendizado de máquina podem ser monitorados quanto a alterações nas métricas de desempenho. Detectores baseados em janelas, detectores baseados em detecção de mudanças e detectores baseados em estatísticas são alguns dos métodos usados para esse propósito.


import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.datasets import make_classification



# Gerando um conjunto de dados sintético

X, y = make_classification(n_samples=1000, n_features=20, random_state=42)



# Criando um DataFrame

df = pd.DataFrame(X, columns=[f"feature_{i}" for i in range(X.shape[1])])

df['target'] = y



# Função para introduzir deriva de conceito

def introduce_concept_drift(df, drift_point, drift_magnitude):

    df.loc[drift_point:, "target"] = df.loc[drift_point:, "target"].apply(lambda x: 1 - x if np.random.rand() < drift_magnitude else x)

    return df



# Função para introduzir deriva de características

def introduce_feature_drift(df, drift_point, drift_feature, drift_magnitude):

    df.loc[drift_point:, drift_feature] *= (1 + drift_magnitude)

    return df



# Introduzindo deriva de conceito

df_concept_drift = introduce_concept_drift(df.copy(), drift_point=500, drift_magnitude=0.5)



# Introduzindo deriva de características

feature_to_drift = "feature_5"

df_feature_drift = introduce_feature_drift(df.copy(), drift_point=500, drift_feature=feature_to_drift, drift_magnitude=0.2)



# Plotagem

plt.figure(figsize=(15, 6))



# Dados originais

plt.subplot(1, 3, 1)

plt.scatter(df.index, df[feature_to_drift], c=df['target'], cmap='coolwarm', alpha=0.5)

plt.title("Dados Originais")

plt.xlabel("Índice da Amostra")

plt.ylabel(feature_to_drift)



# Deriva de conceito

plt.subplot(1, 3, 2)

plt.scatter(df_concept_drift.index, df_concept_drift[feature_to_drift], c=df_concept_drift['target'], cmap='coolwarm', alpha=0.5)

plt.title("Deriva de Conceito")

plt.xlabel("Índice da Amostra")

plt.ylabel(feature_to_drift)



# Deriva de características

plt.subplot(1, 3, 3)

plt.scatter(df_feature_drift.index, df_feature_drift[feature_to_drift], c=df_feature_drift['target'], cmap='coolwarm', alpha=0.5)

plt.title("Deriva de Características")

plt.xlabel("Índice da Amostra")

plt.ylabel(feature_to_drift)



plt.tight_layout()

plt.show()

Enter fullscreen mode Exit fullscreen mode

O código Python acima gera um conjunto de dados sintéticos e simula dois tipos de deriva de dados: deriva de conceito e deriva de características. Ele então visualiza essas derivas usando gráficos de dispersão.

  1. Dados Originais: O primeiro gráfico representa o conjunto de dados sintéticos original. O eixo x mostra o índice da amostra, e o eixo y representa os valores de uma das características (neste caso, feature_5). A cor dos pontos indica a classe de cada amostra.

  2. Deriva de Conceito: O segundo gráfico ilustra a introdução de deriva de conceito. A partir do ponto médio no conjunto de dados (índice de amostra 500), a variável-alvo (target) é invertida com uma certa probabilidade (50% nesta simulação). Isso simula uma mudança na relação entre as características e a variável-alvo.

  3. Deriva de Características: O terceiro gráfico mostra a deriva de características. Novamente, a partir do ponto médio do conjunto de dados, o valor de uma das características (feature_5) é aumentado por uma magnitude especificada (20% nesta simulação). Isso simula uma mudança na distribuição dos valores da característica.

Essas visualizações proporcionam uma clara ilustração de como a deriva de dados pode se manifestar em um conjunto de dados, afetando a variável-alvo (deriva de conceito) ou as características (deriva de características). Detectar e gerenciar esses tipos de deriva é crucial para manter o desempenho dos modelos de aprendizado de máquina ao longo do tempo.

Conclusão

A deriva de dados apresenta um desafio significativo na manutenção da precisão e robustez dos modelos de aprendizado de máquina. Compreender os diferentes tipos de deriva — deriva de conceito, deriva de características, deriva de população, deriva de rótulo e deriva sazonal — é crucial para o gerenciamento eficaz do modelo. Monitoramento contínuo, atualizações regulares do modelo e o uso de técnicas avançadas de detecção são estratégias essenciais para combater os efeitos da deriva de dados, garantindo que os modelos permaneçam confiáveis e eficazes ao longo do tempo.

https://arxiv.org/abs/2012.09258?source=post_page-----93cd2afee63e--------------------------------

https://arxiv.org/abs/2311.06396?source=post_page-----93cd2afee63e--------------------------------

https://arxiv.org/abs/2111.05672?source=post_page-----93cd2afee63e--------------------------------

https://arxiv.org/abs/2311.06396?source=post_page-----93cd2afee63e--------------------------------


Este artigo foi escrito por Everton Gomede e traduzido por Adriano P. de Araujo. O original em inglês pode ser encontrado aqui.

Oldest comments (0)