Entre em contato

O que é Redução de Dimensionalidade?

AI 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 a apenas alguns recursos. A redução de dimensionalidade é comumente usada em aprendizado não supervisionado tarefas para criar classes automaticamente a partir de muitos recursos. Para entender melhor por que e como a redução de dimensionalidade é usada, veremos os problemas associados a dados de alta dimensão e os métodos mais populares de redução da dimensionalidade.

Mais dimensões levam ao overfitting

A dimensionalidade refere-se ao número de recursos/colunas em um conjunto de dados.

Freqüentemente, presume-se que no aprendizado de máquina mais recursos são melhores, pois cria um modelo mais preciso. No entanto, mais recursos não se traduzem necessariamente em um modelo melhor.

As características de um conjunto de dados podem variar amplamente em termos de sua utilidade para o modelo, com muitas características 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 nos dados. Portanto, o número de amostras aumenta proporcionalmente ao número de características. 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 muito bem os padrões nos dados de treinamento e não consegue generalizar para fora dos dados de amostra.

Reduzir a dimensionalidade de um conjunto de dados tem vários benefícios. Conforme mencionado, modelos mais simples são menos propensos a superajuste, 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 computação necessário para treinar os algoritmos. Da mesma forma, menos espaço de armazenamento é necessário para um conjunto de dados com dimensionalidade menor. Reduzir a dimensionalidade de um conjunto de dados também pode permitir que você use algoritmos inadequados para conjuntos de dados com muitos recursos.

Métodos Comuns de Redução de Dimensionalidade

A redução de dimensionalidade pode ser 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 criação de novos recursos combinando ou transformando outros recursos.

A seleção e a engenharia de recursos podem ser feitas programaticamente ou manualmente. Ao selecionar manualmente e projetar recursos, é comum visualizar os dados para descobrir correlações entre recursos e classes. Realizar a redução de dimensionalidade dessa maneira pode consumir bastante tempo e, portanto, algumas das formas 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 Componente Principal (PCA), Decomposição de Valor Singular (SVD) e Análise Discriminante Linear (LDA).

Os algoritmos usados ​​na redução da dimensionalidade para tarefas de aprendizagem não supervisionadas são normalmente PCA e SVD, enquanto aqueles utilizados para redução da dimensionalidade da aprendizagem supervisionada são normalmente LDA e PCA. No caso de modelos de aprendizado supervisionado, os recursos recém-gerados são apenas inseridos 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 dos modelos de aprendizado de máquina.

Análise do componente principal

Foto: Matriz com componentes principais identificados

Análise de Componentes Principais (PCA) é um método estatístico que analisa as características/características de um conjunto de dados e resume as características que são 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 se espalham por menos dimensões. Você pode pensar nisso como “comprimir” os dados de uma representação de dimensão superior para uma com apenas algumas dimensões.

Como exemplo de uma situação em que o PCA pode ser útil, pense nas várias maneiras de descrever o vinho. Embora seja possível descrever o vinho usando muitos recursos altamente 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 características mais gerais, como gosto, cor e idade. O PCA pode ser usado para combinar recursos mais específicos e criar recursos mais gerais, úteis e com menor probabilidade de causar overfitting.

O PCA é realizado determinando como os recursos de entrada variam da média em relação um ao outro, determinando se existe algum relacionamento entre os recursos. Para fazer isso, uma matriz de covariantes é criada, estabelecendo uma matriz composta pelas covariâncias em relação aos possíveis pares de feições do conjunto de dados. Isso é usado para determinar as correlações entre as variáveis, com uma covariância negativa indicando uma correlação inversa e uma correlação 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 não sejam correlacionados entre si. A maioria das informações contidas nas variáveis ​​iniciais é compactada nos primeiros componentes principais, o que significa que novos recursos (os componentes principais) foram criados para conter 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) is usado para simplificar os valores dentro de uma matriz, reduzindo a matriz às suas partes constituintes e facilitando os cálculos com essa matriz. O SVD pode ser utilizado tanto para matrizes de valor real quanto para matrizes complexas, mas para os propósitos desta explicação, examinaremos como decompor uma matriz de valores reais.

Suponha que temos uma matriz composta por dados de valor real e nosso objetivo é reduzir o número de colunas/características dentro da matriz, semelhante ao objetivo da ACP. Assim como a ACP, a SVD comprimirá a dimensionalidade da matriz, preservando o máximo possível de sua variabilidade. Se quisermos operar na matriz A, podemos representá-la como três outras matrizes chamadas U, D e V. A matriz A é composta pelos elementos originais x * y, enquanto a matriz U é composta pelos elementos X * X (é uma matriz ortogonal). A matriz V é uma matriz ortogonal diferente contendo elementos y * y. A matriz D contém os elementos x * y e é uma matriz diagonal.

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

Quando a Matriz a é decomposta nas matrizes U, D e V, elas contêm os dados encontrados na 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 de LDA, Direita: Eixo depois de LDA, agora separável

Análise Discriminante Linear (LDA) é um processo que pega dados de um grafo multidimensional e reprojeta-o em um gráfico linear. Você pode imaginar isso pensando em um gráfico bidimensional preenchido com pontos de dados pertencentes a duas classes diferentes. Suponha que os pontos estejam espalhados de modo que nenhuma linha possa ser traçada que separe nitidamente as duas classes diferentes. Para lidar com essa situação, os pontos encontrados no gráfico 2D podem ser reduzidos a um gráfico 1D (uma linha). Esta linha terá todos os pontos de dados distribuídos por ela e pode ser dividida em duas seções que representam a melhor separação possível dos dados.

Ao realizar o LDA, existem dois objetivos principais. O primeiro objetivo é minimizar a variância das 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 eixo recém-criado atua para separar as duas classes com base nos objetivos descritos anteriormente. Após a criação do eixo, os pontos encontrados no gráfico 2D são colocados ao longo do 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, calcula-se a variância dentro das diferentes classes, através da determinação da distância entre a amostra e a média da classe em questão. Na etapa final, é criado o espaço de menor dimensão que maximiza a variância entre as classes.

A técnica LDA atinge os melhores resultados quando as médias das classes-alvo estão distantes umas das outras. O LDA não pode efetivamente separar as classes com um eixo linear se as médias das distribuições se sobrepõem.

 

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