Maldição da dimensionalidade

Maldição da dimensionalidade pode reduzir a performance e aumentar o tempo de treinamento do modelo de Machine Learning.

Jonys Arcanjo
Data Hackers
7 min readSep 25, 2022

--

Introdução

O aprendizado de maquina é capaz de extrair informações importantes de conjuntos de dados ricos em característica, atualmente a geração de dados tem crescido que maneira exponencial, e na grande maioria das vezes que buscamos solucionar um problema com machine learning esbarraremos com conjunto de dados com alta complexidade, com dezenas ou centenas de características, e quando maior o número de características maior será a complexidade do conjunto de dados, e este cenário que surgi a Maldição da dimensionalidade.

Maldição da dimensionalidade

A Maldição da Dimensionalidade foi denominada pelo matemático R. Bellman em seu livro “Programação Dinâmica” em 1957. Segundo ele, a maldição da dimensionalidade é o problema causado pelo aumento exponencial do volume associado à adição de dimensões extras ao espaço euclidiano.

Aumento de dimensões gera dados mais esparsos

Em resumo refere-se a uma série de problemas que surgem ao trabalhar com dados de alta dimensão. A dimensão de um conjunto de dados corresponde ao número de características existentes em um conjunto de dados. Em teoria uma quantidade maior de dimensões permitiria que mais informações fossem armazenadas, mais o que ocorre na prática é geração de ruído e redundância dos dados.

O que é a Redução da dimensionalidade

fonte: analyticsindiamag.com

A redução da dimensionalidade consiste em aplicar técnicas para a remoção de características irrelevantes ou excessivas ao conjunto de dados, seguindo o princípio de economia parcimônia ou Navalha de Occam onde a explicação de qualquer fenômeno deve fazer o menor número possível de suposições, eliminando aquelas que não fazem diferença nas predições observáveis da hipotese explicativa.

Navalha de Occam

“Se em tudo o mais forem idênticas as várias explicações de um fenômeno, a mais simples é a melhor“ — William de Ockham (século XIV)

De modo geral, o desempenho de um classificador tende a cair a partir de um determinado número de características, é isso ocorrerá mesmo que as características sejam úteis.

fonte: facom.ufu.br

As técnicas mais populares para reduzir a dimensionalidade são PCA, kernel PCA, LLE. O foco este artigo será na técnica PCA- Principal Component Analysis.

Mas antes falarmos sobre o PCA vamos abordar algumas vantagens e desvantagens da utilização da redução da dimensionalidade.

Vantagens de reduzir a dimensionalidade

  1. Acelerar o treinamento: Reduzir a dimensionalidade de um conjunto de dados antes do treinamento de uma modelo na maioria das vezes irá acelerar o treinamento, mas nem sempre isso lhe trará uma melhor solução, isso dependerá muito do conjunto de dados utilizado.

2. Melhora a eficácia dos classificadores, pois elimina características irrelevantes e redundantes.

3. Reduz o tamanho necessário da amostra.

4. Melhora a eficiência computacional dos algoritmos, pois trabalha com menos características envolvidas.

5. Simplifica modelo gerado e facilita interpretação.

6. Facilita a visualização de dados.

Desvantagens de reduzir a dimensionalidade

  1. Perdem-se algumas informações, isso possivelmente trará algum prejuízo para o desempenho dos algoritmos de treinamento posteriores.

2. Perde-se explicabilidade, as características transformadas costumam ser difíceis de interpretar.

Agora vamos passar rapidamente por um das principasi abordagens da reduzir a dimensionalidade, que é a Projeção.

Projeção

Em problemas do mundo real , as instâncias de treinamento não estão distribuidas uniformente em todas as dimensões. Muitas características são quase constantes, e outras são extremamente correlacionadas. Como resultado todas as instâncias de treinamento ficam dentro de um subespaço de dimensão menor do que do espaço em alta dimensão.

Fonte: Livro Mãos à obra: aprendizado de máquina com Scikit-Learn & TensorFlow

Note que todas as instâncias de treinamento estão próximas de um plano, um subespaço de dimensão menor (2D) do que o espaço em alta dimensão (3D). Se projetarmos cada instância de treinamento perpendicularmente nesse subespaço conforme representado pelas linhas curtas que relacionam as instâncias do plano, teremos um novo conjunto de dados em 2D(representado na figura acima). Nesta forma acabamos de reduzir a dimensionalidade do conjunto de dados de 3D para 2D.

Novo conjunto de dados gerado após a projeção.

Note na imagem acima que os eixos correspondem às novas características Z1 e Z2. mas nem sempre a projeção é a melhor abordagem para reduzir a dimensionalidade. Existe casos que o subespaço pode dar reviravoltas.

PCA — Principal Component Analysis (Análise do Componente Principal)

O PCA, é um método de redução da dimensionalidade usado em grande conjunto de dados, transformando um grande conjunto de dados e um menor mantendo a maioria da informações do grande conjunto. É importante informar que reduzir as caracteristicas de treinamento de um conjunto de dados vem a custa da precisão, mas em muitos casos este trade off vale a pena.

Ao aplicar o PCA estão trocando um pouco de precisão por simplicidade. Então o que buscamos é reduzir o número de características preservando o máximo de informações.

Preservando a Variância

Antes de projetar o hiperplano de menor dimensão, precisamos escolher o hiperplano correto. Note que no exemplo abaixo temos um conjunto de dados em 2D representado na figura a esquerda, junto com três eixos distintos (hiperplanos 1D). A direita temos o resultado da projeção do conjunto de dados em cada um dos eixos. Logo podemos observar que na linha contínua preservamos a variância máxima, na segunda linha (abaixo da primeira) temos uma linha que preserva um pouco menos de variância, e na projeção da terceria linha a variância já é bem menor.

O ideal neste caso é selecionar o eixo com maior variância, porque é mais provável que perca menos informação. Também podemos justificar está escolha, pois o eixo escolhido minimiza a distância quadrada média entre o conjunto de dados original e sua projeção neste eixo.

Componentes principais

O PCA já identificou o eixo com a maior variância(que é a primeira linha da imagem acima a direita) e também identicou o segundo eixo, ortagonal ao primeiro, que é responsável pela maior quantidade de variância restante. Se estivéssemos trabalhando com um conjunto de dados maior, o PCA também encontraria um terceiro eixo, ortagonal aos dois eixos anteriores, e um quarto e assim sucessivamente, identificaria tantos eixos quanto o número de dimensões no conjunto de dados.

Projetando as dimensões-d

Agora que temos os componentes principais identificados, você pode reduzir da dimensionalidade do conjunto de dados em dimensões-d fazendo a projeção do hiperplano definido pelos primeiros componentes principais d. A seleção deste hiperplano assegura que a projeção preserve a maior variância possível.

Como resultado você terá um conjunto de dados 2D que se parece bastante com o conjunto de dados 3D original.

Taxa de Variância explicada

Outra informação importante é a taxa e variância de cada componente. A taxa informa a proporção da variância do conjunto de dados que se situa ao longo de cada componente principal. A imagem abaixo ilustra este conceito.

Porcentagem de variância(informações) para cada Componente Principal

Escolhendo o número adequado de dimensões

Você deve está se perguntando “como posso selecionar um número adequado de dimensões para reduzir? Mas na verdade o que deve ser feito é definir o percentual de variância alvo, por exemplo 95%, e a partir dai escolher o número de dimensões que atingem este valor. Outra opção seria plotar a variância explicada com uma função do número de dimensões. Geralmente haverá uma curva em forma de cotovelo(elbow), em que a variância explicada para de crescer.

No gráfico acima se reduzirmos a dimensionalidade para 100 dimensões estáriamos perdendo um percentual muito pequeno da variância explicada, mas estariamos reduzido 50 dimensões. Logo estariamos reduzindo cerca de 33% das dimensões do conjunto de dados e preservando 95% da taxa de variância.

PCA e Compactação

O PCA também é util na compactação de imagens como podemos ver no cenário a seguir.

Vamos utilizar o conjunto de dados MNIST (“Modified National Institute of Standards and Technology”), onde o objetivo é identificar através de uma rede neural números feito a mão, após a aplicação do PCA foi preservado 95% da variância, e saimos de 784 características orginais para 150, com isso temos um redução de 20% do tamanho original do conjunto de dados.

Compactação do MNIST que preserva 95% da variância.

Na imagem acima temos a esquerda os digitos confome o conjunto de dados original e a direita os números correspondentes após a compactação e descompactação. Note que existe um ligeira perda na qualidade da imagem, mas os números estão intactos.

Conecte-se comigo nas rede sociais

Bem, é isso. Se você gostou deste post, um pouco de motivação extra será útil, dando-lhe algumas palmas 👏. Estou sempre aberto a suas perguntas e sugestões. Você pode compartilhar isso no Facebook, Twitter, Linkedin, para que este post possa vir a ser útil para outras pessoas.

Você pode me contatar em:

Linkedin

Github

e-mail

--

--