Connect with us

O que é Redução de Dimensionalidade?

IA 101

O que é Redução de Dimensionalidade?

mm

O que é Redução de Dimensionalidade?

Redução de dimensionalidade é um processo usado para reduzir a dimensionalidade de um conjunto de dados, pegando muitos recursos e representando-os como menos recursos. Por exemplo, a redução de dimensionalidade pode ser usada para reduzir um conjunto de dados de vinte recursos para apenas alguns recursos. A redução de dimensionalidade é comumente usada em tarefas de aprendizado não supervisionado para criar automaticamente classes a partir de muitos recursos. Para entender melhor por que e como a redução de dimensionalidade é usada, vamos dar uma olhada nos problemas associados a dados de alta dimensionalidade e os métodos mais populares de redução de dimensionalidade.

Mais Dimensões Levam a Overfitting

Dimensionalidade se refere ao número de recursos/colunas dentro de um conjunto de dados.

Muitas vezes se assume que, no aprendizado de máquina, mais recursos são melhores, pois criam um modelo mais preciso. No entanto, mais recursos não necessariamente se traduzem em um modelo melhor.

Os recursos de um conjunto de dados podem variar amplamente em termos de quão úteis eles são para o modelo, com muitos recursos sendo de pouca importância. Além disso, quanto mais recursos o conjunto de dados contém, mais amostras são necessárias para garantir que as diferentes combinações de recursos sejam bem representadas dentro dos dados. Portanto, o número de amostras aumenta em proporção com o número de recursos. Mais amostras e mais recursos significam que o modelo precisa ser mais complexo, e à medida que os modelos se tornam mais complexos, eles se tornam mais sensíveis ao overfitting. O modelo aprende os padrões nos dados de treinamento muito bem e falha em generalizar para dados fora da amostra.

Reduzir a dimensionalidade de um conjunto de dados tem vários benefícios. Como mencionado, modelos mais simples são menos propensos a overfitting, pois o modelo precisa fazer menos suposições sobre como os recursos estão relacionados entre si. Além disso, menos dimensões significam menos poder de processamento necessário para treinar os algoritmos. Da mesma forma, menos espaço de armazenamento é necessário para um conjunto de dados que tem menor dimensionalidade. Reduzir a dimensionalidade de um conjunto de dados também pode permitir que você use algoritmos que não são adequados para conjuntos de dados com muitos recursos.

Métodos Comuns de Redução de Dimensionalidade

A redução de dimensionalidade pode ser feita por seleção de recursos ou engenharia de recursos. A seleção de recursos é onde o engenheiro identifica os recursos mais relevantes do conjunto de dados, enquanto engenharia de recursos é o processo de criar novos recursos combinando ou transformando outros recursos.

A seleção e engenharia de recursos podem ser feitas programaticamente ou manualmente. Quando se seleciona e engenha recursos manualmente, é comum visualizar os dados para descobrir correlações entre recursos e classes. Realizar a redução de dimensionalidade dessa maneira pode ser bastante demorado e, portanto, algumas das maneiras mais comuns de reduzir a dimensionalidade envolvem o uso de algoritmos disponíveis em bibliotecas como Scikit-learn para Python. Esses algoritmos comuns de redução de dimensionalidade incluem: Análise de Componentes Principais (PCA), Decomposição de Valor Singular (SVD) e Análise Discriminante Linear (LDA).

Os algoritmos usados na redução de dimensionalidade para tarefas de aprendizado não supervisionado são normalmente PCA e SVD, enquanto os algoritmos utilizados para redução de dimensionalidade de aprendizado supervisionado são normalmente LDA e PCA. No caso de modelos de aprendizado supervisionado, os novos recursos gerados são apenas alimentados no classificador de aprendizado de máquina. Observe que os usos descritos aqui são apenas casos de uso gerais e não as únicas condições em que essas técnicas podem ser usadas. Os algoritmos de redução de dimensionalidade descritos acima são simplesmente métodos estatísticos e são usados fora de modelos de aprendizado de máquina.

Análise de Componentes Principais

Foto: Matriz com componentes principais identificados

Análise de Componentes Principais (PCA) é um método estatístico que analisa as características/recursos de um conjunto de dados e resume os recursos que são os mais influentes. Os recursos do conjunto de dados são combinados em representações que mantêm a maioria das características dos dados, mas são distribuídos em menos dimensões. Você pode pensar nisso como “esmagando” os dados de uma representação de alta dimensão para uma com apenas algumas dimensões.

Como exemplo de uma situação em que a PCA pode ser útil, pense em como descrever vinho. Embora seja possível descrever vinho usando muitos recursos muito específicos, como níveis de CO2, níveis de aeração, etc., esses recursos específicos podem ser relativamente inúteis ao tentar identificar um tipo específico de vinho. Em vez disso, seria mais prudente identificar o tipo com base em recursos mais gerais, como sabor, cor e idade. A PCA pode ser usada para combinar recursos mais específicos e criar recursos que sejam mais gerais, úteis e menos propensos a causar overfitting.

A PCA é realizada determinando como os recursos de entrada variam em relação à média em relação a si mesmos, determinando se existem relações entre os recursos. Para fazer isso, uma matriz de covariância é criada, estabelecendo uma matriz composta pelas covariâncias em relação aos pares possíveis de recursos do conjunto de dados. Isso é usado para determinar correlações entre as variáveis, com uma covariância negativa indicando uma correlação inversa e uma covariância positiva indicando uma correlação positiva.

Os componentes principais (mais influentes) do conjunto de dados são criados criando combinações lineares das variáveis iniciais, o que é feito com a ajuda de conceitos de álgebra linear chamados autovalores e autovetores. As combinações são criadas de modo que os componentes principais sejam não correlacionados entre si. A maioria das informações contidas nas variáveis iniciais é comprimida nos primeiros componentes principais, significando que novos recursos (os componentes principais) foram criados que contêm as informações do conjunto de dados original em um espaço dimensional menor.

Decomposição de Valor Singular

Foto: Por Cmglee – Trabalho próprio, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297

Decomposição de Valor Singular (SVD) é usada para simplificar os valores dentro de uma matriz, reduzindo a matriz para suas partes constituintes e tornando cálculos com essa matriz mais fáceis. A SVD pode ser utilizada para matrizes de valor real e complexo, mas para os propósitos desta explicação, vamos examinar como decompor uma matriz de valor real.

Suponha que tenhamos uma matriz composta por dados de valor real e nosso objetivo é reduzir o número de colunas/recursos dentro da matriz, semelhante ao objetivo da PCA. Como a PCA, a SVD comprime a dimensionalidade da matriz enquanto preserva a maior parte da variabilidade da matriz. Se quisermos operar na matriz A, podemos representar a matriz A como três outras matrizes chamadas U, D e V. A matriz A é composta por elementos x * y, enquanto a matriz U é composta por elementos X * X (é uma matriz ortogonal). A matriz V é uma matriz ortogonal diferente que contém elementos y * y. A matriz D contém os elementos x * y e é uma matriz diagonal.

Para decompor os valores para a matriz A, precisamos converter os valores singulares originais da matriz para os valores diagonais encontrados em uma nova matriz. Quando trabalhamos com matrizes ortogonais, suas propriedades não mudam se elas forem multiplicadas por outros números. Portanto, podemos aproximar a matriz A aproveitando essa propriedade. Quando multiplicamos as matrizes ortogonais juntas com uma transposta da Matriz V, o resultado é uma matriz equivalente à nossa matriz A original.

Quando a matriz A é decomposta em matrizes U, D e V, elas contêm os dados encontrados dentro da matriz A. No entanto, as colunas mais à esquerda das matrizes conterão a maioria dos dados. Podemos pegar apenas essas primeiras colunas e ter uma representação da matriz A que tem muito menos dimensões e a maioria dos dados dentro de A.

Análise Discriminante Linear

 

Esquerda: Matriz antes da LDA, Direita: Eixo após a LDA, agora separável

Análise Discriminante Linear (LDA) é um processo que pega dados de um gráfico multidimensional e os reprojeta em um gráfico linear. Você pode imaginar isso pensando em um gráfico bidimensional cheio de pontos de dados que pertencem a duas classes diferentes. Suponha que os pontos estejam espalhados de tal forma que nenhuma linha possa ser desenhada para separar as duas classes de forma limpa. Para lidar com essa situação, os pontos encontrados no gráfico 2D podem ser reduzidos a um gráfico 1D (uma linha). Essa linha terá todos os pontos de dados distribuídos sobre ela e pode ser dividida em duas seções que representem a melhor separação possível dos dados.

Quando se realiza a LDA, existem dois objetivos principais. O primeiro objetivo é minimizar a variância para as classes, enquanto o segundo objetivo é maximizar a distância entre as médias das duas classes. Esses objetivos são alcançados criando um novo eixo que existirá no gráfico 2D. O novo eixo criado atua para separar as duas classes com base nos objetivos descritos anteriormente. Depois que o eixo é criado, os pontos encontrados no gráfico 2D são colocados ao longo do novo eixo.

Existem três etapas necessárias para mover os pontos originais para uma nova posição ao longo do novo eixo. Na primeira etapa, a distância entre as médias das classes individuais (a variância entre classes) é usada para calcular a separabilidade das classes. Na segunda etapa, a variância dentro das diferentes classes é calculada, determinando a distância entre a amostra e a média para a classe em questão. Na etapa final, o espaço de dimensionalidade mais baixa que maximiza a variância entre as classes é criado.

A técnica LDA alcança os melhores resultados quando as médias para as classes de destino estão longe uma da outra. A LDA não pode separar efetivamente as classes com um eixo linear se as médias para as distribuições se sobrepõem.

Blogueiro e programador com especialidades em Machine Learning e Deep Learning tópicos. Daniel espera ajudar os outros a usar o poder da IA para o bem social.