• Nenhum resultado encontrado

Para resolvermos o problema A.1, consideramosx=αe modificamos as seguintes linhas em inip.m,

% N´umero de vari´aveis passa a ser a quantidade de dados de treinamento.

n =size(T R,1);

% N´umero de restri¸c˜oes - Restri¸c˜ao de igualdade e desigualdade. m = 1 +size(T R,1);

% Limitantes - Restri¸c˜oes de caixa.

for i= 1 :m l(i) = 0;

u(i) = 1.0d+ 20; % Sem limitante superior.

end

% Restri¸c˜oes

equatn(1) = 1; % Restri¸c˜ao de igualdade.

fori= 2 : m

equatn(i) = 0; % Restri¸c˜oes de desigualdade.

end

% Restri¸c˜oes Lineares

linear =ones(m,1);

No arquivo evalco.m alteramos as restri¸c˜oes, % Restri¸c˜ao

if (ind== 1)

c=ytr0 ∗x;% Restri¸c˜ao de igualdade

end fori= 1 : n if (ind==i+ 1) c=−x(i);% Restri¸c˜ao de igualdade end end

No arquivo evalg.m alteramos a derivada da fun¸c˜ao objetivo, % Derivada da fun¸c˜ao objetivo em rela¸c˜ao a α

g =H∗x−ones(n,1);

Por fim, alteramos a fun¸c˜ao objetivo no arquivo evalf.m, % Fun¸c˜ao objetivo.

f(x) = 1/2∗x0 ∗H∗x−ones(1, n)∗x, com H(i, j) =ytr(i)∗ytr(j)∗T R(i,:)∗T R(j,:)0.

Resolu¸c˜ao do problema primal com margem flex´ıvel

Agora, para o problema (2.17), consideramos x = (w, b, ξ)T e modificamos as seguintes linhas em inip.m,

% N´umero de vari´aveis ´e igual a dimens˜ao de w, b e ξ. n =size(T R,2) + 1 +size(T R,1);

% N´umero de restri¸c˜oes ´e igual a quantidade de dados.

m = 2∗size(T R,1);

% Limitantes - Vari´aveis livresw e b..

fori= 1 : size(T R,2) + 1 l(i) =−1.0d+ 20; u(i) = 1.0d+ 20; end % Limita¸c˜ao paraξ. fori=size(T R,2) + 2 :n l(i) = 0;

u(i) = 1.0d+ 20; % Sem limitante superior.

end

% Restri¸c˜oes de desigualdade.

equatn=zeros(m,1);

% Restri¸c˜oes Lineares

linear =ones(m,1);

No arquivo evalco.m alteramos as restri¸c˜oes, % Restri¸c˜oes de desigualdade para w e b

fori= 1 : size(T R,1) if (ind==i) c= 1−ytr(i)∗(T R(i,:)∗x(1 : size(T R,2))+ x(size(T R,2) + 1))−x(size(T R,2) + 2); end end

% Restri¸c˜oes de desigualdade para ξ

fori=size(T R,1) + 1 : 2∗size(T R,1)

if (ind==i)

c=−x(size(T R,2) + 1 +i−size(T R,1));

end end

No arquivo evalg.m, alteramos a derivada da fun¸c˜ao objetivo, % Derivada em rela¸c˜ao a w

fori= 1 : size(T R,2) g(i) = x(i);

end % Derivada em rela¸c˜ao a b g(size(T R,2) + 1) = 0; % Derivada em rela¸c˜ao a ξ fori=size(T R,2) + 2 :n g(i) = C; end

A fun¸c˜ao objetivo ´e alterada, no arquivo evalf.m, para f(x) = 1/2∗(x(1 :size(T R,2))0∗x(1 :size(T R,2)))+

C∗ones(1, size(T R,1))∗x(size(T R,2) + 2 :n);

Resolu¸c˜ao do problema dual com margem flex´ıvel

Os comandos s˜ao iguais aos do problema (A.1), exceto que em inip.m temos % Limitantes - Restri¸c˜oes de caixa.

fori= 1 : m l(i) = 0;

u(i) = C; % C Parˆametro de regulariza¸c˜ao.

end

Resolu¸c˜ao do problema primal e dual, com regulariza¸c˜ao e Kernel

Para resolver (2.54) com o Algencan, tendo o conhecimento da fun¸c˜ao φ, basta trocarxi porφ(xi) nos comandos utilizados para o problema (2.17). Al´em disso, devemos trocar a dimens˜ao de w para N, j´a que os dados de treinamento ser˜ao mapeados pela fun¸c˜ao φ para RN.

Assim, para resolvermos (2.54) trocamos em inip.m, % N´umero de vari´aveis

n =size(phi(T R(1,:)),1) + 1 +size(T R,1); % Limitantes para w eb

fori= 1 : size(phi(T R(1,:)),1) + 1 l(i) =−1.0d+ 20;

u(i) = 1.0d+ 20;

end

% Limitantes para ξ

fori=size(phi(T R(1,:)),1) + 2 :n l(i) = 0;

u(i) = 1.0d+ 20;

end

Em evalg.m e evalf.m trocamos

fori= 1 : size(phi(T R(1,:)),1) g(i) = x(i);

end

% Derivada da fun¸c˜ao objetivo em rela¸c˜ao a b g(size(phi(T R(1,:)),1) + 1) = 0; % Derivada da fun¸c˜ao objetivo em rela¸c˜ao a ξ

fori=size(phi(T R(1,:)),1) + 2 :n g(i) = C;

end

A fun¸c˜ao objetivo ´e alterada, no arquivo evalf.m, para

f(x) = 1/2∗(x(1 :size(phi(T R(1,:)),1))0 ∗x(1 :size(phi(T R(1,:)),1)))+ C∗ones(1, size(T R,1))∗x((phi(T R(1,:)),1) + 2 :n);

Por fim, em evalco.m tomamos % Restri¸c˜oes de desigualdade para w e b.

fori= 1 : size(T R,1)

if (ind==i)

c= 1−ytr(i)∗(phi(T R(i,:))0∗x(1 : size(phi(T R(1,:)),1))+ x(size(phi(T R(1,:)),1) + 1))−x(size(phi(T R(1,:)),1) + 2);

end end

% Restri¸c˜oes de desigualdade para ξ.

fori=size(T R,1) + 1 : 2∗size(T R,1)

if (ind==i)

c=−x(size(phi(T R(1,:)),1) + 1 +i−size(T R,1))

end end

Agora para resolvermos (2.55), usaremos os mesmos comandos do problema dual com margem flex´ıvel, exceto que trocamos o produto (xi)Txj pela fun¸c˜aoKernel escolhida K(xi, xj).

Comandos Linux

Em nosso trabalho, utilizamos a Interface em Matlab do Algencan-2.4.0, no Linux. Assim, listamos abaixo alguns dos seus comandos e respectivos significados.

ˆ cd - utilizado para a navega¸c˜ao entre pastas do computador. Acessa e muda de diret´orio corrente. Se acrescentar dois pontos finais, acessamos o n´ıvel superior. ˆ ls - utilizado para listar os arquivos contidos dentro do diret´orio corrente. ˆ cp - utilizado para copiar arquivos.

ˆ pwd - utilizado para imprimir o nome do diret´orio onde o usu´ario se encontra. ˆ make - utilizado para ler e compilar o arquivo “Makefile” e compilar arquivos. ˆ mkdir - utilizado para criar um diret´orio dentro do qual o usu´ario est´a.

Para obtermos os resultados no problema de classifica¸c˜ao de caracteres, descrito no Cap´ıtulo 3, usamos algumas fun¸c˜oes do Matlab, em sua vers˜ao R2015a, pr´oprias para a SVM. Assim, no que segue descrevemos resumidamente tais fun¸c˜oes.

svmtrain e svmclassify

Para utilizar a svmtrain digitamos o seguinte comando, que retorna uma estru-tura, SVMStruct, contendo informa¸c˜oes sobre o classificador de SVM.

SVMStruct = svmtrain(Treinamento,Grupo). Argumentos de entrada:

ˆ Treinamento: Matriz com dados de treinamento, em que cada linha corresponde a uma observa¸c˜ao e cada coluna corresponde a uma caracter´ıstica.

ˆ Grupo: Vari´avel de agrupamento, que pode ser um vetor categ´orico, num´erico ou l´ogico, uma matriz de caracteres de vetores de caracteres ou uma matriz de carac-teres com cada linha que representa um r´otulo de classe. Cada elemento do Grupo especifica o grupo da linha correspondente de treinamento. O grupo deve dividir o treinamento em dois grupos.

Para obtermos as sa´ıdas previstas, pelo classificador obtido com svmtrain, usamos o comando

Group = svmclassify(SVMStruct,Sample).

Classifica cada linha dos dados na amostra, uma matriz de dados, usando as informa¸c˜oes em uma estrutura de classificador de m´aquinas vetoriais de suporte SVMS-truct, criadas usando a fun¸c˜ao svmtrain. Como os dados de treinamento usados para criar SVMStruct, Sample ´e uma matriz em que cada linha corresponde a uma observa¸c˜ao e cada coluna corresponde a uma caracter´ıstica ou vari´avel. O Grupo indica o grupo ao qual cada linha de amostra foi atribu´ıda.

Argumentos de entrada:

ˆ SVMStruct: Estrutura do classificador de m´aquina vetorial criada usando a fun¸c˜ao svmtrain.

ˆ Sample: Uma matriz em que cada linha corresponde a uma observa¸c˜ao ou a uma repeti¸c˜ao, e cada coluna corresponde a uma caracter´ıstica ou vari´avel.

[1] V. T. Ales. O Algoritmo Sequential Minimal Optimisation para Resolu¸c˜ao do Pro-blema de Support Vector Machine: uma T´ecnica para Reconhecimento de Padr˜oes. Disserta¸c˜ao de Mestrado em M´etodos Num´ericos em Engenharia, Universidade Fe-deral do Paran´a, Curitiba, 2008.

[2] M. Beltrami. M´etodo Grid-Quadtree para sele¸c˜ao de parˆametros do algoritmo support vector classification (SVC). Tese de Doutorado em M´etodos Num´ericos em Engenha-ria, Universidade Federal do Paran´a, Curitiba, 2016.

[3] C. M. Bishop. Pattern recognition and machine learning. Springer, 2006.

[4] C. J. C. Burges. A tutorial on support vector machines for pattern recognition. Data mining and knowledge discovery. Springer. v. 2, n. 2, pp. 121-167, 1998.

[5] B. Carvalho. Novas estrat´egias para detec¸c˜ao autom´atica de vetores de suporte em least squares support vector machines. Disserta¸c˜ao de Mestrado em Engenharia El´etrica, Universidade Federal de Minas Gerais, 2005.

[6] D. S. G. Carvalho. Sobre M´aquinas de Vetores Suporte para classifica¸c˜ao de Ca-racteres. Monografia (Bacharel em Matem´atica Industrial), Universidade Federal do Paran´a, Curitiba, 2013.

[7] T. S. de Almeida et al. Algoritmo para detec¸c˜ao de boca em faces humanas usando matriz de Co-ocorrˆencia e SVM. Cadernos de Pesquisa, v. 19, 2012.

[8] A. C. dos Santos. M´aquinas de suporte vetorial e sua aplica¸c˜ao na detec¸c˜ao de spam. Trabalho de Formatura Supervisionado, Universidade de S˜ao Paulo, Instituto de Matem´atica e Estat´ıstica, 2005.

[9] A. C. Lorena e A. de Carvalho. Uma introdu¸c˜ao `as support vector machines. Revista de Inform´atica Te´orica e Aplicada. v. 14. n. 2, pp. 43-67, 2007.

[10] B. Sch¨olkopf e A. J. Smola. Learning with kernels: support vector machines, regula-rization, optimization, and beyond. MIT press, 2002.

[11] M. R. Pinheiro e C. Grande. Conjuga¸c˜ao e dualidade em programa¸c˜ao convexa. Relat´orio t´ecnico, 1984.

[12] C. Chang e C. Lin. {LIBSVM}: a Library for Support Vector Machines (Version

2.3), 2001.

[13] H. Andrews e C. Patterson.Singular value decomposition (SVD) image coding. IEEE transactions on Communications. v. 24. n. 4, pp. 425-432, 1976.

[14] A. A. Ribeiro e E. W. Karas. Otimiza¸c˜ao Cont´ınua: Aspectos te´oricos e computaci-onais. Cengage Learning, Brasil, 2013.

[15] N. Cristianini e J. Shawe-Taylor. An introduction to support vector machines and other kernel-based learning methods. Cambridge University Press, 2000.

[16] N. Cristianini e J. Shawe-Taylor. Kernel methods for pattern analysis. Cambridge University Press, 2004.

[17] A. Izmailov e M. Solodov. Otimiza¸c˜ao: Condi¸c˜oes de Otimalidade, Elementos de An´alise Convexa e Dualidade. v. 1. IMPA, Rio de Janeiro, 2005.

[18] M. Frank e P. Wolfe. An Algorithm for Quadratic Programming. Naval Research Logistics Quarterly. v. 3. pp. 95-110, 1956.

[19] J. Nocedal e S. J. Wright. Numerical Optimization. Springer Series in Operations Research. Springer-Verlag, 2nd edition, 2006.

[20] I. Griva e S. Nash. Linear and nonlinear optimization. SIAM, 2009.

[21] C. Cortes e V. N. Vapnik. Support-vector networks. Machine learning. Springer. v. 20. n. 3, pp. 273-297, 1995.

[22] I. M. Guyon e V. N. Vapnik. A training algorithm for optimal margin classifiers. Proceedings of the fifth annual workshop on Computational learning theory. ACM. pp. 144-152, 1992.

[23] E. Blum e W. Oettli. Technical Note – Direct proof of the Existence Theorem for Quadratic Programming. Operations Research. v. 20. n. 1, pp. 165-167, 1972.

[24] A. C. Lorena et al. Inteligˆencia Artificial: Uma abordagem de aprendizado de m´aquina. Rio de Janeiro: LTC, v. 2. pp. 192, 2011.

[25] C. J. C. Burges et al. Uniqueness of the SVM Solution. NIPS. v. 99, pp. 223-229, 1999.

[26] A. Friedlander. Elementos de Programa¸c˜ao N˜ao-Linear. Unicamp, 1994.

[27] Chih-Wei et al Hsu.A practical guide to support vector classification. Taipei, Taiwan, 2003.

[28] A. R. G. Lima. M´aquinas de vetores suporte na classifica¸cao de impressoes digitais. Universidade Federal do Cear´a, Fortaleza, 2002.

[29] J. M. Mart´ınez. Otimiza¸c˜ao pr´atica usando o Lagrangiano Aumentado. Departa-mento de Matem´atica Aplicada, Universidade Estadual de Campinas, Brasil, 2006. [30] J. D. do Nascimento. Detec¸c˜ao e reconhecimento de placa automotiva com baixo

custo. Monografia. Centro Universit´ario de Bras´ılia, 2012.

[31] R. Penachi et al. Uma introdu¸c˜ao `a otimiza¸c˜ao n˜ao linear e a solu¸c˜ao de problemas sim´etricos via ALGENCAN. Campinas - SP, 2015.

[32] V. L. Rodrigues. Reconhecimento facial usando SVM. Pontif´ıcia Universidade Cat´olica do Rio de Janeiro. Departamento de Inform´atica, 2007.

[33] R. A. Scarpel. Utiliza¸c˜ao de Support Vector Machine em previs˜ao de insolvˆencia de empresas. Anais do XXXVII Simp´osio Brasileiro de Pesquisa Operacional. pp. 671-677, 2005.

[34] V. N. Vapnik. Pattern recognition using generalized portrait method. Automation and remote control. v. 24. pp. 774-780, 1963.

[35] A. Verd´erio. Sobre o uso de regress˜ao por vetores suporte para a constru¸c˜ao de modelos em um m´etodo de regi˜ao de confian¸ca sem derivadas. Tese de Doutorado. Universidade Federal do Paran´a, Curitiba, 2015.

Documentos relacionados