1
resposta

[Dúvida] Dúvida - Cálculo de parâmetros estatísticos no StandardScaler

Boa tarde!

Na aula sobre padronização / normalização dos dados para construção do modelo de PCA o instrutor utilizou a ferramenta StandardScaler para efetuar os cálculos e transformações necessárias. Minha dúvida com respeito a essa ferramenta é a seguinte: como são cálculados a média e o desvio-padrão por parte do algoritmo?

Na seção "para saber mais" incluída logo após a aula, foram apresentadas as seguintes definições: Cálculo da padronização

Definição da média Definição do desvio-padrão

mas eu não estou conseguindo entender quais dados estão sendo utilizados para calcular a média e o desvio-padrão.

De acordo com as definições apresentadas, meu entendimento diz que essas quantidades devem ser calculadas para cada feature. Ou seja, cada feature teria uma média e um desvio-padrão correspondente para que a padronização pudesse ser feita.

Entretanto eu fiz um teste no python apenas para verificar se o raciocínio estava correto, e o resultado obtido não foi consistente com a saída do algoritmo. Fiz os seguintes procedimentos:

  • Inicialmente, verifiquei o comportamento das features originais e das features escaladas e resolvi aplicar os cálculos manualmente para a primeira feature do select abaixo. Na imagem, podemos ver que essa feature assume valores 0 ou 1, e que os valores reescalados são ~2.68 quando o valor original é 1 e ~0.0 quando o valor original é 0. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

  • Em vista disso, o que fiz para testar a aplicação do algoritmo foi, inicialmente, armazenar todos os valores originais dessa feature em uma lista auxiliar, tal como descrito no código a seguir Insira aqui a descrição dessa imagem para ajudar na acessibilidade

  • Por fim, efetuei o cálculo dos parâmetros estatísticos e apliquei a definição da padronização, contudo obtive um resultado incorreto

Padronização quando a feature assume valor 1 Padronização quando a feature assume valor 0Por conta desses resultados, não estou conseguindo compreender como o algoritmo StandardScaler funciona. Tentei buscar a documentação, mas também não encontrei detalhes sobre como esses parâmetros estatísticos são calculados pelo algoritmo.

1 resposta

Olá Lucas, tudo bem ? Espero que sim.

Peço desculpas pela demora na resposta.

Se verificarmos a documentação temos a descrição do calculo realizado link para documentação

Tradução livre:

Padroniza as características removendo a média e escalonando para a variância unitária usando estatísticas resumidas por coluna nas amostras do conjunto de treinamento. O "desvio padrão unitário" é calculado usando o desvio padrão amostral corrigido, que é calculado como a raiz quadrada da variância amostral não viesada.

O cálculo da padronização de características é feito assim:

  1. Média (mean):

    • Primeiro, calcule a média de cada coluna (característica) nos dados de treinamento. Isso é feito somando todos os valores da coluna e dividindo pelo número de amostras.
  2. Variância amostral (unbiased sample variance):

    • A variância é uma medida de quão espalhados estão os valores em uma coluna. Ela é calculada como a média dos quadrados das diferenças entre cada valor e a média. No entanto, para calcular a variância amostral, você divide a soma dos quadrados das diferenças pela quantidade de amostras menos um (n - 1), em vez de apenas por n. Isso corrige um viés na estimativa da variância.
  3. Desvio padrão (standard deviation):

    • O desvio padrão é simplesmente a raiz quadrada da variância. Ele fornece uma medida da dispersão dos valores em uma coluna.
  4. Padronização (standardization):

    • Agora que você tem a média e o desvio padrão de cada coluna, pode padronizar os dados subtraindo a média da coluna de cada valor e, em seguida, dividindo pelo desvio padrão. A fórmula é a seguinte:
      valor_padronizado = (valor_original - média) / desvio_padrao
      
      Isso garante que os valores em cada coluna tenham média zero e desvio padrão igual a um, o que é útil para muitos algoritmos de machine learning, pois evita que características com escalas diferentes tenham um peso desproporcional durante o treinamento do modelo.

Portanto, o cálculo da padronização envolve calcular a média, a variância amostral (com correção) e o desvio padrão de cada coluna e, em seguida, aplicar a fórmula de padronização para cada valor na coluna. Esse processo é comumente usado na preparação de dados para análise estatística e treinamento de modelos de machine learning.

Parabens pela sua curiosidade em analisar os resultados e como eles foram calculados.

Uma sugestão é testar a biblioteca StandardScaler para apenas uma coluna e ver os resultados.

Qualquer duvida, pode compartilhar seu notebook que avaliamos juntos.

Bons Estudos.