• Nenhum resultado encontrado

Um dos problemas encontrados ao usar o método DSFFC em dados de alta dimensionalidade é o custo computacional da busca do subgrafo mais denso. Quando é colocado uma restrição sobre a quantidade de vértices que o subgrafo deve conter, a busca torna-se um problema NP-difícil (KHULLER; SAHA, 2009). Os algoritmos presentes na literatura para resolver esse problema são aproximativos e possuem tempos de execução bastante elevados. O DSFFC utiliza uma adaptação da heurística proposta por Bahmani et al. (2012) para encontrar o subgrafo de menor densidade com uma quantidade restrita de vértices, que possui complexidade O(log1+ǫ n

k), em que ǫ é o fator de aproximação,

n é cardinalidade do conjunto de vértices e k é a quantidade mínima de vértices que o

subgrafo deve conter. O estudo sobre a complexidade de tempo dessas heurísticas foge o escopo deste trabalho, explicações detalhadas sobre o assunto podem ser encontradas em (GOLDBERG, 1984; KHULLER; SAHA, 2009; BAHMANI et al., 2012).

Devido ao tempo de execução elevado, o uso do DSFFC para bases com imagens de faces torna-se inviável. Uma imagem de face, em escala de cinza, com resolução de 112x93 possui 10304 pixels, na abordagem de reconhecimento facial holístico (JAIN et al., 2007) cada característica é representada por um pixel da imagem, dessa forma já temos um problema de alta dimensionalidade.

Bandyopadhyay et al. (2014) só executa experimentos com bases de até 2000 características e não mostra nenhuma avaliação em bases com imagens. Para contornar esse problema, foi desenvolvido um método para utilizar o algoritmo em imagens, que considera a vizinha dos pixels na seleção e reduz significativamente o tempo de execução, possibilitando utilizar o algoritmo em imagens de faces.

Finding with Feature Clustering (FDSFFC), consiste em dividir o espaço de características

em subconjuntos disjuntos e executar o algoritmo DSFFC para realizar a seleção localmente em cada subconjunto. O conjunto de características resultante é a concatenação dos atributos selecionados em cada subconjunto.

Dessa forma, o tempo de execução da seleção é reduzido, pois a busca usada no DSFFC tem uma complexidade logarítmica em termos da quantidade de vértices, a medida que o tamanho da entrada cresce o tempo da busca aumenta consideravelmente, tornando inviável sua execução em bases de alta dimensionalidade, como cada subconjunto tem cardinalidade bem menor do que o conjunto de características, isso possibilita que o DSFFC execute rapidamente nos subconjuntos. É importante destacar que o FDSFFC pode ser facilmente paralelizado, o que pode diminuir ainda mais o seu tempo de execução.

O desenvolvimento da técnica FDSFFC teve ênfase para a seleção de características em imagens, por isso a divisão dos subconjuntos é feita considerando a vizinhança de cada

pixel, porém a técnica também foi adaptada para ser utilizada em dados genéricos.

Para bases com imagens, cada pixel é considerado como uma característica e cada janela representa um subconjunto. Para executar a seleção, o algoritmo divide as imagens em janelas de tamanho igual e sem sobreposição de pixels (ver exemplo na Figura 3), de forma semelhante ao que é feito no algoritmo Local Binary Patterns para descrição de texturas (GONZALEZ; WOODS, 2006). Após a divisão, uma mesma quantidade de atributos é selecionada em cada janela com o algoritmo DSFFC. Dessa forma, o conjunto de características resultante é a concatenação dos atributos selecionados em cada janela. Outra vantagem desse método, além do tempo de execução, é que a vizinhança dos pixels está sendo considerada nessa abordagem, pois a seleção é feita localmente, observando apenas os pixels contidos em cada janela. Os pixels de diferentes regiões podem ser redundantes, mas esses representam elementos distintos. A vantagem de fazer a seleção localmente em imagens é que existe a possibilidade de obter atributos mais representativos de determinadas regiões da imagem.

Para bases com dados genéricos, ou seja, quando o vetor de características tem apenas uma dimensão (ao contrário das imagens onde temos duas) o vetor de características é divido de forma sequencial em conjuntos de tamanho igual. A Figura 4 mostra um exemplo de como é feita essa divisão das características e a Figura 5 mostra um fluxograma com funcionamento do algoritmo.

Os parâmetros de entrada do algoritmo para uso em imagens são: m, n, k > 0 ∈ Z, onde m é a quantidade de janelas na horizontal, n é a quantidade de janelas na vertical e k é a quantidade de atributos selecionados em cada janela. O total de características selecionadas será igual a (m · n · k). Para uso em dados genéricos, é usado n = 1 e m é a quantidade de conjuntos que o vetor de características será divido. Devido a seleção ser feita individualmente em cada subconjunto, o algoritmo tem uma restrição sobre a

Capítulo 4. Trabalho Desenvolvido 35

quantidade mínima de características para serem selecionadas, que é igual a (m · n).

Figura 3 – Exemplo da divisão em mxn janelas sem sobreposição, onde m = 4 e n = 4, em um indivíduo de cada base: AT&T, The Sheffield, e Yale, respectivamente.

Figura 4 – Exemplo da divisão do vetor características em m conjuntos sequenciais.

Um pseudocódigo do método é apresentado no Algoritmo 5. A estrutura de repetição da linha 1 percorre as m janelas sem sobreposição na direção horizontal, já a estrutura da linha 2 percorre as n janelas na vertical. Em cada iteração T recebe os atributos contidos na janela atual. O conjunto Trecebe as k características de T selecionadas com o DSFFC.

Na linha 5 as características de Tsão concatenadas ao conjunto F , que representa o

subconjunto de características selecionadas em cada iteração. Ao final do processo, F é retorna como o subconjunto de características selecionadas pelo FDSFFC.

Algoritmo 5FDSFFC Entrada: Atributos: F (x, y) =     f(1,1) . . . f(1,y) ... ... ... f(x,1) · · · f(x,y)    ; Parâmetros: k,m e n.

Saída: Ftal que |F| = (k · m · n) , como subconjunto de atributos selecionados.

1: para i← 1, i ← i + (y/m) até y − 1 faça

2: para j ← 1, j ← j + (x/n) até x − 1 faça

3: T ← f(t, w), ∀t = {j, . . . , j + (x/n) − 1}, ∀w = {i, . . . , i + (y/m) − 1};

4: T← Os k atributos selecionados de T com o algoritmo DSFFC;

5: F ← F ∪ T;

6: fim para

7: fim para

Documentos relacionados