Como selecionar atributos para resolver a maldição da dimensionalidade

Fabio Lenine
6 min readJun 8, 2017

--

Com o passar do tempo, a massa de dados a serem analisados é cada vez maior, seja histórico ou em tempo real. Esse crescimento não está apenas relacionado à quantidade de registros (instâncias ou objetos), mas também à quantidade de atributos (colunas ou dimensões) que compõem o dataset (base de dados).

Imagine que você possua um dataset com 1.000 (um mil) atributos (colunas ou dimensões) por 200.000 (duzentas mil) registros (instâncias ou objetos), humanamente é impossível analisar todas essas informações e para uma algoritmo também é muito custoso.

A maldição da dimensionalidade diz que a quantidade de dados de que você precisa, para alcançar o conhecimento desejado, impacta exponencialmente o número de atributos necessários.

O desempenho do classificador tende a se degradar a partir de um determinado nº de atributos, mesmo que sejam úteis.

Desta forma, devemos entender o termo Maldição da Dimensionalidade se referindo a vários fenômenos que surgem na análise de dados em espaços com muitas dimensões (atributos), muitas vezes com centenas ou milhares de dimensões. Lembrando que, basicamente, adicionar características não significa que sempre melhora o desempenho de um classificador.

Vamos pegar o exemplo do dataset supracitado, digamos que dos 1.000 atributos, apenas 100 atributos são relevantes, ou seja os demais são atributos ruins ou correlacionados. Se aplicamos o dataset com todos os atributos, por exemplo, em um algoritmo K-NN, o resultado será um mau desempenho na classificação, pois o algoritmo K-NN normalmente é enganado quando o número de atributos é grande. Assim como os outros classificadores também tem o seu desempenho prejudicado.

Em espaços com muitas dimensões as amostras se tornam esparsas e pouco similares, com objetos muito distantes uns dos outros, e parecem eqüidistantes.

exemplo abstrato de quanto mais dimensões é igual a dados mais esparsos

Assim, é necessário pesquisar maneiras para selecionar os atributos mais relevantes tal que a precisão da classificação utilizada deste subconjunto de atributos melhore ou, ao menos, se mantenha o mesmo nível quando utilizados todos os atributos do dataset.

As três maneiras de se fazer a seleção de atributos são: filtros (filterning), empacotados (wrappers) e embarcados (embedded).

Filtros (Filterning)

A seleção de atributos utilizando a modalidade filtro é realizada a priori, basicamente, fazendo uso de alguma heurística para executar uma busca nos atributos, ou seja, é posto por exemplo um algoritmo de pesquisa que identifica os atributos mais relevantes, e em seqüência são encaminhados ao algoritmo de aprendizado os atributos selecionados.

Fluxograma de utilização da categoria filtro na seleção de atributos

O algoritmo de pesquisa supra citado pode ser, por exemplo, um algoritmo de Árvore de Decisão, que após identificar os atributos mais relevantes informa à próxima fase os quais utilizar como entrada para o algoritmo de aprendizado que pode ser por exemplo um K-Mean.

A vantagem é proporcionar, ao algoritmo fim, um processamento mais rápido da massa de dados.

Os critérios utilizados para efetuar a busca nos atributos são:

  • medidas de correlação / informação mútua entre atributos;
  • medidas de relevância e redundância;
  • privilegiar conjutos de atributos muito relacionados com a saída desejada e pouco relacionados entre si.

Uma grande desvantagem do modo é a seleção de forma indireta, o que pode levar a resultados inferiores.

Empacotamento (Wrapping)

O Wrapping seleciona e testa diferentes subconjuntos de atributos com o algoritmo de aprendizado, escolhendo o melhor subconjunto de todos.

Fluxograma de utilização da categoria empacotamento na seleção de atributos

Na imagem, acima, o algoritmo de aprendizado (indutor do quadro em cinza) é usado para guiar o processo de seleção, utilizando algumas heurística para executar uma busca, para posterior maximizar o desempenho.

No entanto, no geral, esse método tornar o processo muito custoso em termos computacionais, podendo implicar em um custo proibitivo.

Em oposição ao metodo filtro, o empacotamento gera subconjuntos de atributos como candidatos, executando no indutor cada subconjunto por vez e utiliza-se da precissão do classificador para identificar o subconjunto de atributos até quando o critério de parada seja satisfeito.

A nível de aceitação de um subconjunto candidato é avaliado utilizando o próprio indutor como uma caixa-preta, pois o escopo é encontrar o subconjunto de atributos (nó) com a melhor qualidade, como norte utilizando uma função heurística.

A busca é conduzida no espaço do subconjunto de atributos, utilizando o método hill-climbing ou best-first, com os operadores adicionar ou remover, e com direções forward e backward, estimando a precisão por cross-validation.

Acredito que já podemos considerar que essa abordagem pode ser em termo computacional dispendiosa, pois o indutor deve ser executado para cada subconjunto de atributos considerado.

Filterning versus Wrapping

Em suma as diferentes características ao comparamos o Filterning e o Wrapping, são:

  • O Wrapping são lentos, mas uteis.
  • O Filterning por sua vez são rápidos, porem ignora a inferência.

Relevância

Lembrando que a relevância é identificada em um atributo quando a sua remoção prejudica o B.O.C (Bayes Optimal Classifier), ou seja, o classificador ideal Bayesiano.

Recordando um pouco de aprendizado supervisionado, o classificador ideal Bayesiano é aquele que calcula a média ponderada de todas as hipóteses com base em sua probalidade de ser a hipótese correta.

O que quero dizer, na verdade, é que o classificador ideal Bayesiano é o melhor que você pode fazer na média, se você puder mesmo encontrá-la.

No entanto, mesmo quando o classificador ideal Bayesiano, não considera um atributo relevante, ele ainda poderá ter relativa relevância quando houver algum subconjunto das características.

A relevância está diretamente ligada a informação, então quando a informação possui variação, entropia ou características que ofereçam ganho de informações, ou seja, são propriedades da informação que nos leva ao um grau de relevância do atributo.

Exemplo de não relevância do atributo C, por ter a entropia = 0 (zero)

Conforme a imagem de exemplo acima, percebemos que o atributo c, não possui relevância por ter a entropia igual a 0(zero). No entanto, se aplicássemos todos os atributos, de a ao d, em uma rede neural Perceptron, perceberiamos que o atributo c, apesar de não possui relevância, é considerada útil.

O conceito de útil do atributo c, dar-se pela minimização do erro. Destarte, o atributo c, pode não ter relevância e ser inútil para alguns algoritmos, e.g. Árvore de Decisão, porem para outros algoritmos, e.g. de rede neural Perceptron, pode ser útil, no entanto não relevante.

Em outro momento faremos um texto mais aprofundado sobre a Relevância versus a Utilidade. Promessa é divida, então podem cobrar.

Embarcados (Embedded)

No caso do método embarcado para selecionar atributos, o processo de seleção é parte interna e natural do algoritmo de aprendizado, de forma dinâmica, enquanto procuram por uma hipótese. Exemplo: classificadores baseados em Árvores de Decisão (C4.5), efetua uma busca greedy através do espaço de árvores.

Fluxograma de utilização da categoria embarcados na seleção de atributos

A maioria dos algoritimos do tipo eager possuem uma abordagem embutida para a seleção de atributos.

Apareça sempre!

Não hesite em entrar em contato com dúvidas e opiniões. Estamos aqui para ajudá-lo a adquirir mais conhecimento em Machine Learning e Deep Learning.

Gostou do que leu?

E aí, curte Machine Learning e Deep Learning? Fique ligado no blog para ter acesso a novidades e tutoriais que lhe ajudarão. Fique sabendo dos últimos posts clicando no botão Follow ali em cima, ou siga-me no Twitter ou Linkedin. Até a próxima!

Então clique no botão 💚 Recommend aí embaixo.
Fazendo isso, você ajuda esse post a ser encontrado por mais pessoas.

--

--