• Nenhum resultado encontrado

Nesta seção, vamos focar em problemas de classificação para reconhecimento de faces e estudar o comportamento do SFE em comparação com os métodos de redução de dimensionalidade dos quais este é derivado.

Nos experimentos realizados foi utilizado o método de amostragem conhecido como holdout ou amostragem aleatória, nesta abordagem os dados (imagens) são divididos em dois conjuntos de proporção 𝑝 de treinamento e (1 − 𝑝) para teste. (FACELI et al, 2011).

Como forma de melhorar a representatividade dos conjuntos de treino e teste gerados a cada holdout, foi utilizada uma amostragem estratificada. Por este método, busca-se que cada conjunto gerado mantenha as mesmas proporções entre a quantidade de objetos (faces) em cada classe (individuo).

Durante os testes a amostragem foi feita de forma que 50 por cento das imagens fossem usadas para treino dos algoritmos e os demais 50 por cento fossem usados para teste. Esse processo foi repetido 50 vezes para cada algoritmo em cada base de imagens, ou seja, para cada execução de um dos algoritmos em uma base de imagens foram realizados 50 holdout estratificados.

A cada teste o conjunto de treino selecionado no holdout é submetido como entrada para o algoritmo de redução de dimensionalidade. Como saída deste algoritmo temos as autofaces que nos permitem fazer a projeção das imagens em um subespaço de menor dimensionalidade. Para a projeção dos dados neste subespaço efetuamos a multiplicação das imagens pela matriz formada pelas autofaces (conforme o passo final em cada um dos algoritmos apresentados nas Seção 2.5.1 e no Capítulo 3).

Uma vez feita a projeção das imagens no novo subespaço, estas são submetidos a um algoritmo de classificação conhecido como 1-Vizinho Mais Próximo (1-NN, do inglês 1-Nearest Neighbour). Segundo (FACELI et al, 2011) o 1-NN pode ser definido como um algoritmo que classifica um novo objeto com base no exemplo do conjunto de treinamento que é mais próximo a ele. Assim, para esse experimento, a classificação de cada face de teste projetada será tomada com base na projeção de imagem de treino que

43

estiver mais próxima. Dado que objetivo principal deste experimento é avaliar os algoritmo de extração de características, o 1-NN foi escolhido devido a ser o mais simples algoritmo de classificação.

O objetivo desta etapa é avaliar o quanto cada um dos algoritmos de redução de dimensionalidade melhora o desempenho do classificador. Para fins de comparação a métrica utilizada para avaliar o desempenho do classificador será a taxa de erro de classificação. Sendo a taxa de erro definida como o número de instâncias que não foram classificadas corretamente divido pelo número total de instâncias no conjunto de teste.

Nos testes a seguir, foi utilizado um valor de 𝑟 = 0,1 para o FE e para o SFE. Esse valor para 𝑟 foi escolhido a partir da comparação das taxas de erro para diferentes valores da constante. Os experimentos foram realizados na IDE Matlab usando uma implementação própria dos quatro algoritmos avaliados (Eigenfaces, DSPCA, FE, SFE). As Figuras 8 a 10 mostram os resultados das taxas de erro de acordo com o número de dimensões (autofaces) utilizadas para cada classificador. Note que no caso DSPCA e do SFE o número de autofaces é limitado ao número de classes presentes nos dados, devido a isso na base de imagens YALE (Figura 9) os resultados de ambos tornam- se constantes para um número de dimensões maior ou igual a 15.

Como pode ser vistas nos gráficos o SFE apresentou as menores taxas de erro nas três bases de imagens testadas. Sua taxa de erro chegou a ser, aproximadamente, sete pontos percentuais menor que o segundo melhor resultado na base Georgia Tech, considerando as taxas para 10 dimensões (Figura 8). Ainda nesta base, o segundo melhor resultado foi obtido pelo FE. Os resultados obtidos pelo DSPCA o colocaram em terceiro lugar, com destaque para um comportamento onde as taxas de erro passaram a crescer quando o número de dimensões se torna maior que 20. O Eigenfaces teve o pior resultado nesta base, apresentando taxas de erro superiores a 50 por cento.

Na base YALE (Figura 9) os quatro algoritmo mantiveram a mesma ordem de classificação. Nesta base vale ressaltar que os resultados do SFE para um número de dimensões a partir de 16 são repetições dos valores obtidos para 15 dimensões. Porém, mesmo com a limitação no número máximo de dimensões, o SFE ainda conseguiu se

44

manter à frente do FE.

Figura 8. Taxas de erro de classificação na base Georgia Tech para projeções com diferentes quantidades de dimensões. Algoritmos utilizados: Eigenfaces, Fractional

Eigenfaces, DSPCA e Supervised Fractional Eigenfaces.

Na terceira e última base testada, ORL (Figura 10), os quatro algoritmos tiveram resultados muito próximos. Mesmo assim como pode ser visto na seção destacada do gráfico o SFE ainda permaneceu com as menores taxas erro em relação aos demais. O DSPCA teve o segundo melhor resultado nesta base, superando o FE para um número de dimensões maior que 7. O FE ficou com terceiro melhor resultado, a frente do Eigenfaces.

45

Figura 9. Taxas de erro de classificação na base YALE para projeções com diferentes quantidades de dimensões. Algoritmos utilizados: Eigenfaces, Fractional Eigenfaces,

DSPCA e Supervised Fractional Eigenfaces.

Nas Tabela 1 a 3 temos um resumos dos resultados obtidos neste teste (a tabela completa dos resultados pode ser consultada no Apêndice A). Estas tabelas permitem comparar de forma quantitativa os resultados, mostrando inclusive o desvio padrão registrado.

46

Figura 10. Taxas de erro de classificação na base YALE para projeções com diferentes quantidades de dimensões. Algoritmos utilizados: Eigenfaces, Fractional Eigenfaces,

47

Tabela 1. Comparativo das médias das taxas de erro obtidas na base Georgia Tech. Média e desvio padrão observados para cada quantidade de dimensões.

# dim.

Eigenfaces Eigenfaces Fractional DSPCA

Supervised Fractional Eigenfaces

Média Desvio Média Desvio Média Desvio Média Desvio

2 0,801 0,016 0,801 0,016 0,794 0,018 0,804 0,014 5 0,630 0,022 0,542 0,029 0,586 0,019 0,481 0,025 10 0,561 0,020 0,470 0,020 0,486 0,023 0,394 0,027 20 0,530 0,020 0,411 0,020 0,470 0,022 0,358 0,025 30 0,531 0,020 0,399 0,021 0,479 0,022 0,355 0,022 40 0,539 0,022 0,397 0,020 0,483 0,022 0,356 0,023

Tabela 2. Comparativo das médias das taxas de erro obtidas na base YALE. Média e desvio padrão observados para cada quantidade de dimensões.

# dim. Eigenfaces Fractional Eigenfaces DSPCA Supervised Fractional Eigenfaces Média Desvio Média Desvio Média Desvio Média Desvio 2 0,657 0,045 0,518 0,050 0,589 0,050 0,498 0,047 5 0,417 0,038 0,310 0,042 0,324 0,047 0,237 0,034 10 0,242 0,032 0,209 0,036 0,216 0,041 0,141 0,032 20 0,207 0,030 0,147 0,031 0,190 0,037 0,110 0,025 30 0,206 0,032 0,133 0,028 0,190 0,037 0,110 0,025 40 0,209 0,030 0,133 0,032 0,190 0,037 0,110 0,025

48

Tabela 3. Comparativo das médias das taxas de erro obtidas na base ORL. Média e desvio padrão observados para cada quantidade de dimensões.

# dim. Eigenfaces Fractional Eigenfaces DSPCA Supervised Fractional Eigenfaces Média Desvio Média Desvio Média Desvio Média Desvio

2 0,609 0,029 0,566 0,030 0,596 0,025 0,516 0,031 5 0,219 0,024 0,149 0,024 0,183 0,024 0,126 0,021 10 0,099 0,020 0,077 0,017 0,071 0,019 0,063 0,017 20 0,083 0,018 0,069 0,015 0,056 0,018 0,054 0,017 30 0,070 0,021 0,061 0,015 0,051 0,018 0,049 0,016 40 0,066 0,021 0,061 0,014 0,049 0,018 0,045 0,016

49

4

Conclusão e Trabalhos Futuros

Neste trabalho foram estudadas algumas técnicas de extração de características para redução de dimensionalidade e suas respectivas aplicações a problemas de reconhecimento facial.

Com base nos estudos realizados foi desenvolvida uma proposta de método para extração de características que combina técnicas usadas nos algoritmos DSPCA e

Fractional Eigenfaces. O Supervised Fractional Eigenfaces - nome dado a proposta - foi

então submetido a um extenso teste de classificação usando três bases de imagens amplamente utilizadas para avaliação de reconhecimento facial.

Os resultados do teste realizado mostraram que o SFE foi o algoritmo mais eficiente, tendo taxas de erro inferiores aos demais em todas as situações testadas. Isso foi um resultado muito positivo e serviu para validar os esforços realizados ao longo deste projeto.

Além disso, neste mesmo testes foi possível avaliar o desempenho do algoritmo DSPCA em extração de característica de faces, situação onde este ainda não havia sido testado. O DSPCA teve bons resultados quando comparado a métodos mais antigos como o Eigenfaces. No entanto, neste mesmo teste, seu resultado ficou abaixo do FE, método este de publicação mais recente.

O teste de visualização realizado, embora tenha caráter ilustrativo, serviu para mostrar os eficácia dos algoritmos testados para projeção bidimensional de dados. Este teste também mostrou que, embora o DSPCA tenha tido desempenho inferior nos testes de classificação, se mostrou um dos melhores algoritmos no teste de visualização. Esse efeito deve-se, em parte, ao fato deste algoritmo ser um método supervisionado e portanto dispor de mais informação discriminante que o Eigenfaces e o FE. O SFE também foi muito bom neste teste e, na situação testada, pôde ser avaliado como tendo obtido o melhor resultado.

Um dos pontos deixados em aberto neste trabalho é a realização de um teste de hipótese com objetivo de validar os resultados obtidos nos experimentos. Tal ponto é

50

deixado como trabalho futuro junto com mais algumas sugestões avaliadas como interessantes:

• Aplicação do algoritmo SFE para extração de características a partir de outros tipos de conjunto de dados (genes, indicadores econômicos, dados clínicos, etc.);

• Avaliar o desempenho combinado do SFE com diversos algoritmos de classificação e comparar o desempenho obtido em relação ao uso de outros métodos de extração de características;

• Explorar variações do SFE usando matrizes de kernel 𝐿 obtidas por meio de métodos não-lineares, a exemplo dos trabalhos realizados em (BARSHAN et al, 2011) com o SPCA.

Por fim, os resultados obtidos neste trabalho mostraram a eficácia do método proposto no contexto de reconhecimento de faces. Porém, dado o tratamento generalizado que o algoritmo dá aos dados, o SFE pode ser aplicado em vários outros contextos de redução de dimensionalidade. Restando, portanto, a realização de mais estudos para explorar esses outros contextos e, a depender, também criar novas variações deste algoritmo.

51

Referências Bibliográficas

ANTON, Howard; RORRES, Chris. Álgebra linear com aplicações – 8 ed.. Bookman, 2001.

ARASHLOO, Shervin Rahimzadeh; KITTLER, Josef. Class-Specific Kernel Fusion of Multiple Descriptors for Face Verification Using Multiscale Binarised Statistical Image Features. In: Information Forensics and Security, IEEE Transactions on (Volume:9 , Issue: 12). 2014. p. 2100 – 2109.

BARSHAN, Elnaz et al. Supervised Principal Component Analysis: Visualization, Classification and Regression on Subspaces and Submanifolds. Pattern Recognition, v. 44, n. 7, 2011. p. 1357-1371.

BELHUMEUR, P. N.; HESPANHA, J. P. ; KRIEGMAN, D.. Eigenfaces vs. Fisherfaces: Recognition using Class Specific Linear Projection. In: Computer Vision — ECCV '96, 4th European Conference on Computer Vision Cambridge, UK, April 15–18, 1996 Proceedings, Volume I. p. 43-58.

BELLMAN, Richard Ernest. Dynamic Programming. Princeton, University Press, 1957.

BISHOP, Christopher M.. Pattern Recognition and Machine Learning. Springer, 2006. CARVALHO, T.B.A. de et al. Fractional Eigenfaces. In: IEEE ICIP 2014 The

International Conference on Image Processing. Paris, 2014.

CHELLAPPA, Rama; ZHAO, Wenyi (eds). Face Processing: Advanced Modeling and Methods: Advanced Modeling and Methods. Academic Press, 2011.

BAIR, Eric et al. Prediction by Supervised Principal Components. Journal of the American Statistical Association, v. 101, n. 473, 2006.

FACELI, Katti et al. Inteligência Artificial: Uma abordagem de Aprendizagem de Máquina. LTC, 2011.

GAO, Chaobang; ZHOU, Jiliu; PU, Qiang. Theory of Fractional Covariance Matrix and its Applications in PCA and 2D-PCA. Expert Systems with Applications 40.13 (2013): 5395-5401.

52

GHODSI, Ali. Dimensionality Reduction A Short Tutorial. Department of Statistics and Actuarial Science. University of Waterloo, 2006.

IEZZI, Gelson; MURAKAMI, Carlos. Fundamentos de Matemática Elementar 1: Conjuntos, Funções. Editora Atual, 1977.

JOLLIFFE, I. T.. Principal Component Analysis. Springer, 2002.

KANADE, Takeo. Computer Recognition of Human Faces. Birkhäuser, 1977.

KELLY, Michael David. Visual Identification of People by Computer. Stanford Univ Calif Dept Of Computer Science, 1970.

KIRBY, Michael; SIROVICH, Lawrence. Application of the Karhunen-Loeve Procedure for the Characterization of Human Faces. Pattern Analysis and Machine

Intelligence, IEEE Transactions on, v. 12, n. 1, 1990. p. 103-108.

KUMAR, Neeraj et al. Attribute and Simile Classifiers for Face Verification. In: Computer Vision, 2009 IEEE 12th International Conference on. IEEE, 2009. p. 365- 372.

LI, Weiyong. Supervised Principal Component Analysis. U.S. Patent n. 8,359,164, 22 jan. 2013.

MILLER, Alan. Subset Selection in Regression. Chapman & Hall/CRC, 2002.

PERANTONIS, Stavros J.; PETRIDIS, Sergios; VIRVILIS, Vassilis. Supervised Principal Component Analysis using a Smooth Classifier Paradigm. In: Pattern Recognition, 2000. Proceedings. 15th International Conference on. IEEE, 2000. p. 109-112.

QUINLAN, John Ross. C4. 5: Programs for Machine Learning. Morgan Kaufmann,

1993.

ROKACH, Lior. Pattern Classification Using Ensemble Methods. SGP: World Scientific Publishing Co., 2009.

SAMMUT, Claude; WEBB, Geoffrey I. (Ed.). Encyclopedia of Machine Learning. Springer, 2011.

53

SANTIAGO-MOZOS, Ricardo et al. Supervised-PCA and SVM Classifiers for Object Detection in Infrared Images. In: Advanced Video and Signal Based Surveillance, 2003. Proceedings. IEEE Conference on. IEEE, 2003. p. 122-127.

SEVCENCO, Ana-Maria. LU, Wu-Sheng. Extended 2-D PCA for Face Recognition: Analysis, Algorithms, and Performance Enhancement. In: Face Recognition: Methods, Applications, and Technology. Nova Science Publishers, 2012. P. 29-55. THEODORIDIS, Sergios; KOUTROUMBAS, Konstantinos. Pattern Recognition (4rd

Edition). Academic Press, 2009.

TURK, Matthew A.; PENTLAND, Alex P. Face Recognition using Eigenfaces. In: Computer Vision and Pattern Recognition, 1991. Proceedings CVPR'91., IEEE Computer Society Conference on. IEEE, 1991. p. 586-591.

WAINER, Jacques. Métodos de Pesquisa Quantitativa e Qualitativa para a Ciência da Computação. Atualização em informática, p. 221-262, 2007.

WITTEN, Ian H.; FRANK, Eibe. Data Mining: Practical Machine Learning Tools and Techniques. Elsevier, 2005.

54

Apêndice A – Resultado Analíticos do Teste de Classificação.

Seguem abaixo as tabelas com os resultados completos do teste de classificação, são fornecidas as médias das taxas de erro e desvio padrão para cada quantidade de dimensões testada.

Base YALE # dim Eigenfaces Fractional Eigenfaces DSPCA Supervised Fracional Eigenfaces média desvio média desvio média desvio média desvio 1 0,829 0,036 0,751 0,043 0,765 0,047 0,671 0,041 2 0,657 0,045 0,518 0,050 0,589 0,050 0,498 0,047 3 0,534 0,040 0,443 0,046 0,485 0,058 0,359 0,048 4 0,455 0,046 0,382 0,047 0,385 0,055 0,287 0,043 5 0,417 0,038 0,310 0,042 0,324 0,047 0,237 0,034 6 0,338 0,045 0,277 0,039 0,283 0,053 0,204 0,040 7 0,311 0,039 0,248 0,030 0,268 0,048 0,184 0,037 8 0,295 0,038 0,233 0,035 0,240 0,046 0,164 0,034 9 0,257 0,031 0,221 0,037 0,225 0,046 0,148 0,033 10 0,242 0,032 0,209 0,036 0,216 0,041 0,141 0,032 11 0,235 0,034 0,196 0,035 0,206 0,040 0,129 0,031 12 0,226 0,034 0,189 0,032 0,194 0,037 0,122 0,027 13 0,220 0,032 0,180 0,030 0,190 0,035 0,114 0,025 14 0,220 0,031 0,171 0,030 0,190 0,037 0,110 0,025 15 0,219 0,033 0,166 0,030 0,190 0,037 0,110 0,025 16 0,217 0,032 0,161 0,030 0,190 0,037 0,110 0,025 17 0,214 0,032 0,158 0,029 0,190 0,037 0,110 0,025 18 0,210 0,030 0,153 0,029 0,190 0,037 0,110 0,025 19 0,208 0,030 0,151 0,031 0,190 0,037 0,110 0,025 20 0,207 0,030 0,147 0,031 0,190 0,037 0,110 0,025 21 0,208 0,031 0,146 0,031 0,190 0,037 0,110 0,025 22 0,207 0,031 0,143 0,032 0,190 0,037 0,110 0,025 23 0,207 0,031 0,145 0,032 0,190 0,037 0,110 0,025 24 0,208 0,032 0,140 0,031 0,190 0,037 0,110 0,025 25 0,209 0,031 0,137 0,029 0,190 0,037 0,110 0,025 26 0,208 0,032 0,135 0,029 0,190 0,037 0,110 0,025 27 0,208 0,031 0,134 0,030 0,190 0,037 0,110 0,025 28 0,206 0,032 0,133 0,029 0,190 0,037 0,110 0,025 29 0,207 0,031 0,133 0,027 0,190 0,037 0,110 0,025 30 0,206 0,032 0,133 0,028 0,190 0,037 0,110 0,025 31 0,207 0,032 0,132 0,029 0,190 0,037 0,110 0,025 32 0,207 0,031 0,133 0,031 0,190 0,037 0,110 0,025 33 0,207 0,031 0,132 0,030 0,190 0,037 0,110 0,025 34 0,207 0,030 0,133 0,031 0,190 0,037 0,110 0,025 35 0,208 0,031 0,132 0,031 0,190 0,037 0,110 0,025 36 0,208 0,031 0,133 0,031 0,190 0,037 0,110 0,025

55 37 0,209 0,029 0,133 0,031 0,190 0,037 0,110 0,025 38 0,209 0,030 0,133 0,033 0,190 0,037 0,110 0,025 39 0,208 0,031 0,133 0,032 0,190 0,037 0,110 0,025 40 0,209 0,030 0,133 0,032 0,190 0,037 0,110 0,025 Base ORL # dim Eigenfaces Fractional Eigenfaces DSPCA Supervised Fracional Eigenfaces média desvio média desvio média desvio média desvio 1 0,876 0,025 0,881 0,018 0,883 0,021 0,844 0,025 2 0,609 0,029 0,566 0,030 0,596 0,025 0,516 0,031 3 0,332 0,041 0,282 0,028 0,301 0,027 0,264 0,032 4 0,254 0,039 0,166 0,025 0,201 0,031 0,168 0,024 5 0,219 0,024 0,149 0,024 0,183 0,024 0,126 0,021 6 0,171 0,025 0,114 0,023 0,143 0,026 0,104 0,020 7 0,133 0,023 0,095 0,022 0,102 0,023 0,075 0,015 8 0,124 0,021 0,099 0,022 0,086 0,021 0,071 0,018 9 0,107 0,024 0,081 0,016 0,079 0,018 0,067 0,018 10 0,099 0,020 0,077 0,017 0,071 0,019 0,063 0,017 11 0,094 0,022 0,074 0,018 0,069 0,019 0,059 0,016 12 0,090 0,019 0,072 0,017 0,070 0,019 0,057 0,017 13 0,089 0,021 0,071 0,018 0,068 0,017 0,057 0,017 14 0,087 0,020 0,071 0,016 0,066 0,017 0,056 0,016 15 0,087 0,021 0,072 0,015 0,064 0,019 0,054 0,016 16 0,086 0,019 0,071 0,015 0,061 0,019 0,054 0,016 17 0,087 0,021 0,070 0,015 0,061 0,019 0,055 0,017 18 0,086 0,020 0,069 0,015 0,059 0,019 0,055 0,017 19 0,085 0,019 0,069 0,015 0,058 0,019 0,055 0,017 20 0,083 0,018 0,069 0,015 0,056 0,018 0,054 0,017 21 0,081 0,018 0,069 0,015 0,055 0,018 0,052 0,016 22 0,079 0,018 0,067 0,016 0,054 0,017 0,052 0,016 23 0,077 0,019 0,065 0,015 0,053 0,016 0,052 0,016 24 0,076 0,019 0,065 0,014 0,052 0,016 0,052 0,016 25 0,076 0,019 0,064 0,015 0,052 0,017 0,051 0,016 26 0,074 0,019 0,064 0,015 0,052 0,017 0,051 0,017 27 0,073 0,020 0,063 0,015 0,052 0,017 0,052 0,017 28 0,072 0,019 0,062 0,014 0,052 0,017 0,051 0,017 29 0,072 0,020 0,061 0,014 0,051 0,018 0,050 0,017 30 0,070 0,021 0,061 0,015 0,051 0,018 0,049 0,016 31 0,069 0,020 0,061 0,015 0,050 0,018 0,048 0,016 32 0,070 0,021 0,061 0,016 0,050 0,019 0,047 0,016 33 0,069 0,020 0,062 0,016 0,049 0,019 0,048 0,017 34 0,068 0,021 0,061 0,015 0,049 0,018 0,046 0,017 35 0,069 0,020 0,061 0,016 0,049 0,018 0,046 0,016 36 0,068 0,021 0,061 0,016 0,049 0,018 0,046 0,016 37 0,067 0,021 0,060 0,016 0,049 0,018 0,046 0,017 38 0,067 0,021 0,061 0,015 0,049 0,018 0,045 0,016

56

39 0,067 0,022 0,061 0,015 0,049 0,018 0,045 0,016 40 0,066 0,021 0,061 0,014 0,049 0,018 0,045 0,016

Base Georgia Tech

# dim Eigenfaces Fractional Eigenfaces DSPCA Supervised Fracional Eigenfaces média desvio média desvio média desvio média desvio 1 0,940 0,012 0,911 0,021 0,934 0,011 0,911 0,013 2 0,801 0,016 0,801 0,016 0,794 0,018 0,804 0,014 3 0,732 0,016 0,690 0,021 0,713 0,023 0,618 0,026 4 0,703 0,015 0,585 0,018 0,598 0,020 0,532 0,021 5 0,630 0,022 0,542 0,029 0,586 0,019 0,481 0,025 6 0,606 0,021 0,508 0,022 0,556 0,021 0,446 0,024 7 0,605 0,019 0,485 0,022 0,534 0,025 0,431 0,024 8 0,594 0,020 0,476 0,020 0,507 0,022 0,420 0,026 9 0,576 0,020 0,477 0,020 0,496 0,022 0,407 0,025 10 0,561 0,020 0,470 0,020 0,486 0,023 0,394 0,027 11 0,553 0,022 0,452 0,022 0,477 0,024 0,384 0,028 12 0,542 0,022 0,444 0,020 0,472 0,024 0,376 0,027 13 0,539 0,021 0,437 0,020 0,469 0,023 0,372 0,026 14 0,536 0,021 0,435 0,021 0,465 0,022 0,368 0,027 15 0,533 0,019 0,430 0,021 0,466 0,023 0,366 0,027 16 0,534 0,020 0,427 0,021 0,466 0,024 0,362 0,027 17 0,534 0,019 0,422 0,021 0,467 0,022 0,361 0,027 18 0,532 0,021 0,417 0,020 0,469 0,021 0,360 0,024 19 0,530 0,021 0,415 0,020 0,469 0,021 0,359 0,025 20 0,530 0,020 0,411 0,020 0,470 0,022 0,358 0,025 21 0,529 0,021 0,407 0,022 0,471 0,022 0,358 0,024 22 0,530 0,020 0,405 0,022 0,472 0,021 0,357 0,023 23 0,530 0,021 0,401 0,020 0,473 0,022 0,357 0,023 24 0,530 0,023 0,400 0,020 0,473 0,022 0,356 0,024 25 0,529 0,022 0,399 0,020 0,473 0,022 0,355 0,023 26 0,529 0,021 0,399 0,021 0,475 0,022 0,355 0,023 27 0,528 0,020 0,399 0,021 0,476 0,022 0,356 0,023 28 0,529 0,019 0,400 0,021 0,477 0,023 0,356 0,023 29 0,530 0,020 0,399 0,021 0,478 0,023 0,356 0,023 30 0,531 0,020 0,399 0,021 0,479 0,022 0,355 0,022 31 0,532 0,020 0,398 0,020 0,479 0,023 0,355 0,023 32 0,532 0,020 0,398 0,021 0,480 0,023 0,354 0,022

57 33 0,532 0,021 0,397 0,021 0,480 0,022 0,355 0,023 34 0,534 0,021 0,399 0,021 0,481 0,022 0,355 0,023 35 0,534 0,021 0,398 0,021 0,481 0,023 0,355 0,023 36 0,534 0,022 0,398 0,021 0,482 0,023 0,356 0,024 37 0,534 0,020 0,399 0,022 0,482 0,023 0,356 0,024 38 0,535 0,021 0,398 0,020 0,482 0,023 0,355 0,023 39 0,537 0,021 0,397 0,020 0,482 0,022 0,355 0,023 40 0,539 0,022 0,397 0,020 0,483 0,022 0,356 0,023

58

Apêndice B – Implementação do Algoritmo SFE.

Script para execução do algoritmo em um experimento com 40 holdouts.

%base utilizada amostras = X; classes = Y;

%expoente fracionário r = 0.1;

%proporção para teste e número de holdouts realizados proporcao_teste = 0.50;

numero_holdouts = 50;

%para especificar a quantidade máxima de componentes quantidade_componentes_teste = 40;

%variáveis para armazenamentos dos resultados obtidos soma_taxas_erros = zeros(quantidade_componentes_teste,1); taxas_erros_holdout = zeros(quantidade_componentes_teste, numero_holdouts);

for h = 1:numero_holdouts

holdout = cvpartition(classes,'holdout',proporcao_teste); %especifica as amostras de treino e teste

treino_ids = training(holdout); teste_ids = test(holdout);

%separa as amostras de treino e teste amostras_treino = amostras(treino_ids,:); amostras_teste = amostras(teste_ids,:);

%separa o valor da classes para as amostras de treino e teste classes_treino = classes(treino_ids,:);

classes_teste = classes(teste_ids,:);

%centralização dos dados e aplicação do expoente r ao espaço de treino amostra_media = mean(amostras_treino,1); for i = 1:size(amostras_treino,1) amostras_treino(i,:) = (amostras_treino(i,:).^r) - (amostra_media.^r); end

%centralização dos dados e aplicação do expoente r ao espaço de teste for i = 1:size(amostras_teste,1) amostras_teste(i,:) = (amostras_teste(i,:).^r) - (amostra_media.^r); end clear i

%gera a matriz de delta tal que delta' * delta = L, sendo L a matriz de kernel

59

%calcula os principais componentes

principais_autovetores = FSEigenfaces(amostras_treino, delta);

% ajuste da quantidade máxima de componentes a o número encontrado if( quantidade_componentes_teste > size(principais_autovetores,2)) quantidade_componentes_teste = size(principais_autovetores,2); end

for t = 1:quantidade_componentes_teste %separa uma quantidade t de componentes autovetores = principais_autovetores(:,1:t);

%projetar amostras de treino no novo espaço (amostras_treino', pois o SFE trabalha com as amostras nas colunas)

amostras_projetadas = autovetores' * amostras_treino'; %projetar amostras de teste no novo espaço

amostras_teste_projetadas = autovetores' * amostras_teste';

%treino do classificador (1nn)

class_1nn = fitcknn(amostras_projetadas',classes_treino');

%executar predições com o classificador classes_prevista =

predict(class_1nn,amostras_teste_projetadas');

%compara os resultados obtidos

resultados = strcmp(classes_prevista, classes_teste); %soma os acertos (acerto = 1, erro = 0)

soma_acertos = sum(resultados); %calcula a taxa de erro

taxa_erro = (size(classes_teste, 1) - soma_acertos) / size(classes_teste, 1);

%soma a taxa de erro obtida para cada quantidade de componentes

soma_taxas_erros(t) = soma_taxas_erros(t) + taxa_erro; %registra as taxas de erro de cada holdout

taxas_erros_holdout(t,h) = taxa_erro; end

clear t

status = strcat('terminou holdout ', num2str(h))

end

clear h

media_taxa_erro = soma_taxas_erros ./ numero_holdouts;

%repetição dos valores faltantes, por limitação do nº de componentes do

%FSE (o ultimo valor é repetido até o preenchimento do vetor)

quant_falta = size(media_taxa_erro,1) - quantidade_componentes_teste;

for i = 1:quant_falta

media_taxa_erro(quantidade_componentes_teste + i,1) = media_taxa_erro(quantidade_componentes_teste,1);

60

Função para o cálculo da matriz ∆.

function [ mat_delta ] = mat_delta( classes )

N = size(classes,1); classes_lidas = {}; classes_lidas{1,1} = classes{1,1}; mat_delta = zeros(1,N); mat_delta(1,1) = 1; for lin_amostra = 2:N classe_amostra = classes{lin_amostra,1}; linha_classe = 0; for i = 1:size(classes_lidas,1) if strcmp(classe_amostra,classes_lidas{i,1}) linha_classe = i; break; end end if linha_classe == 0 mat_delta = [mat_delta;zeros(1,N)]; linha_classe = size(mat_delta,1); classes_lidas{linha_classe,1} = classe_amostra; end mat_delta(linha_classe, lin_amostra) = 1; end

Função que executa as etapas referentes a extração dos principais componentes com o Supervised Fractional Eigenfaces.

function [ pcomponentes ] = FSEigenfaces( amostras, delta )

% amostras é uma matriz amostra x feacture e classes é um vetor nx1

X = amostras'

N = size(X,2); %numero de amostras I = eye(N);

e = ones(N); H = I - (1/N)*e;

psi = X * delta'; %Sem a matriz H

[V, sigma_vetor] = pcacov( psi' * psi );

sigma_vetor = sqrt(sigma_vetor);

sigma = diag(sigma_vetor);

pcomponentes = psi * V * sigma^(-1); % a operação b*inv(A) é equivalente a b/A

Documentos relacionados