Beruflich Dokumente
Kultur Dokumente
DIEGO BONESSO
Prof. PhD.
Vitor Haertel
Orientador
Bonesso , Diego
Estimao dos Parmetros do Kernel em um Classificador
SVM na Classificao de Imagens Hiperespectrais em uma Abor-
dagem Multiclasse / Diego Bonesso. 2013.
108 f.
Orientador: Vitor Haertel.
Dissertao (Mestrado) Universidade Federal do Rio
Grande do Sul, Centro Estadual de Pesquisas em Sensoriamento
Remoto e Meteorologia, Programa de Ps-Graduao em Senso-
riamento Remoto, Porto Alegre, BR-RS, 2013.
1. Mquinas de Vetores de Suporte. 2. Recozimento Simu-
lado. 3. Dados de Imagens Hiperespectrais. 4. Parmetros do
Kernel. I. Haertel, Vitor, orient. II. Ttulo.
Uma teoria matemtica no deve ser considerada completa, at que voc a
tenha deixado to clara, de modo que pode ser explicada para o primeiro
homem que voc encontrar na rua.
DAVID H ILBERT
AGRADECIMENTOS
LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
RESUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2 Reconhecimento de Padres . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Estrutura da Dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2 REVISO BIBLIOGRFICA . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1 Seleo de Parmetro do Kernel . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Meta-Heurstica na Determinao de Parmetros do Kernel . . . . . . . 22
3 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1 SVM COM MARGENS RGIDAS . . . . . . . . . . . . . . . . . . . . . 27
3.2 SVM MARGEM SUAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 TRUQUE DO KERNEL . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.4 SMO (SEQUENTIAL MINIMAL OPTIMIZATION) . . . . . . . . . . 35
3.5 HEURSTICA DE ESCOLHA DOS MULTIPLICADORES . . . . . . . 37
3.6 CLASSIFICAO MLTIPLAS CLASSES . . . . . . . . . . . . . . . 38
3.7 CLASSIFICADOR DE DECISO EM RVORE . . . . . . . . . . . . . 39
3.8 RECOZIMENTO SIMULADO (SIMULATED ANNEALING) . . . . . 40
4 ALGORITMO PROPOSTO . . . . . . . . . . . . . . . . . . . . . . . . . 45
5 EXPERIMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1 AMOSTRAS DE TREINAMENTO . . . . . . . . . . . . . . . . . . . . . 52
5.2 Experimento 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3 Experimento 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.4 EXPERIMENTO 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6 CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7 ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.1 TABELA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2 CDIGO FONTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
LISTA DE ABREVIATURAS E SIGLAS
Figura 5.1: Cena captura pelo sensor AVIRIS utilizada na realizao dos experi-
mentos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Figura 5.2: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figura 5.3: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Figura 5.4: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figura 5.5: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figura 5.6: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Figura 5.7: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Figura 5.8: Comparativo de tempo do processo de busca em grade iniciando o
espao de busca em 1 e variando 0.5 at 10 para gama e C. O grfico
compara tempo do mesmo processo quando utilizado um passo de
0.1. Foram usadas 50 amostras de treinamento. . . . . . . . . . . . . 60
Figura 5.9: Comparativo de acurcia mdia do processo de busca em grade ini-
ciando o espao de busca em 1 e variando 0.5 at 10 para gama e C.
O grfico compara tempo do mesmo processo quando utilizado um
passo de 0.1. Foram usadas 50 amostras de treinamento. . . . . . . . 60
Figura 5.10: Comparativo de acurcia mdia do processo de busca em grande e
utilizao de parmetros fixos. . . . . . . . . . . . . . . . . . . . . . 61
Figura 5.11: Acurcia mdia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Figura 5.12: Acurcia mdia obtida pela utilizao de parmetros fixos, busca em
grade e recozimento simulado. . . . . . . . . . . . . . . . . . . . . . 62
Figura 5.13: Comparativo de tempo entre o mtodo de busca em grade com espao
de busca iniciando em 1 variando de 0.5 at 10 para e C e o mesmo
espao de busca utilizando algoritmo de recozimento simulado. Fo-
ram utilizadas 50, 100, 200 e 300 amostras para os mtodos de busca
em grade e recozimento simulado. . . . . . . . . . . . . . . . . . . . 63
Figura 5.14: Acurcia mdia obtida pela utilizao de parmetros fixos, busca em
grade e recozimento simulado. . . . . . . . . . . . . . . . . . . . . . 63
Tabela 3.1: Funes de kernel utilizadas com mais frequncia na literatura e seus
respectivos parmetros livres. . . . . . . . . . . . . . . . . . . . . . 35
1 INTRODUO
1.1 Objetivos
Este estudo tem por objetivo geral investigar a contribuio da seleo dos par-
metros do kernel na acurcia da imagem produzida pelo processo de classificao. So
investigados dois mtodos de seleo de parmetros, o Busca em Grade (busca exaustiva)
e uma heurstica, o Recozimento Simulado.
Tem-se, como objetivo especfico, a implementao do classificador SVM em uma
estrutura de rvore binria, na qual a seleo dos parmetros do kernel realizada em
cada n da rvore. Em geral os trabalhos na literatura abordam os parmetros do ker-
nel de forma global, ou seja, os mesmos valores para os parmetros so utilizados du-
rante todo processo de classificao. A utilizao de uma rvore binria decompe o
problema de classificao de mltiplas classes em vrios problemas de classificao bi-
nrios. Deseja-se investigar se a seleo dos parmetros do kernel, de maneira individual
para cada problema de classificao binrio, resulta em um aumento de acurcia global.
Deseja-se, alm disso, investigar a validade da aplicao de uma heurstica para esti-
mar os parmetros do kernel do classificador SVM, os quais so decisivos na obteno de
uma boa acurcia. Em geral, quando o pesquisador no possui conhecimento prvio sobre
o conjunto de dados e utiliza o classificador SVM, os parmetros do kernel so escolhidos
atravs de tentativa e erro, nem sempre produzindo bons resultados. Ou ainda, aplicado
18
um mtodo exaustivo, como a busca em grade, que pode ser demorada e necessita da
escolha de um espao de busca que seja razovel.
A validao do algoritmo Support Vector Machines Amoebasa Binary Tree (SVMBT-
AMOEBASA), baseado no classificador em rvore binria (CABSVM), proposto por
ANDREOLA; HAERTEL (2010), ser realizada atravs da confrontao dos resultados
obtidos pela utilizao de parmetros fixos do kernel para todas as classes e a abordagem
proposta. Alm disso, a heurstica proposta ser confrontada com o mtodo de Busca em
Grade.
Nas fotografias areas, que se constituem em uma das formas originais de senso-
riamento remoto, as informaes so coletadas no espectro magntico, na poro visvel
e no infravermelho prximo. Porm, o avano no desenvolvimento de sensores permitiu
a aquisio de informaes em outros comprimentos de ondas, tais como: infravermelho
mdio, termal e micro ondas. Sensores que coletam informaes em um amplo nmero
de bandas so conhecidos como multiespectrais ou hiperespectrais dependendo da quan-
tidade de bandas espectrais presentes.
No primeiro captulo feita uma introduo aos objetivos da dissertao, bem como
uma rpida exposio sobre o reconhecimento de padres em imagens digitais,caractersticas
dos dados multidimensionais e problemas encontrados na classificao de dados em alta
dimensionalidade.
No segundo captulo so apresentados os conceitos do classificador Support Vector
Machines ( SVM) bem como sua formulao matemtica e sua abordagem em estgios-
mltiplos implementada atravs de uma arvore binria. Alm disso, apresentada uma
reviso bibliogrfica sobre os problemas associados seleo dos parmetros do kernel
do SVM.
No terceiro capitulo Metodologia, aborda as heursticas envolvidas no processo de
seleo de parmetros do kernel e o algoritmo proposto, desenvolvido em forma de arvore
binria, empregado nessa dissertao. Alm disso, so abordados detalhes referentes
implementao.
No quarto capitulo so apresentados os experimentos realizados e os resultados ob-
tidos visando a validao da metodologia proposta. No quinto captulo so apresentadas
as concluses, anlise final e sugestes.
O Apndice A contm a listagem dos programas elaborados para viabilizar a pesquisa.
O Apndice B apresenta as tabelas de contingncia dos experimentos.
21
2 REVISO BIBLIOGRFICA
2003).
O processo de busca exaustiva bastante simples de ser programado e apresenta
bons resultados na busca dos melhores parmetros. Sua desvantagem o tempo de pro-
cessamento, j que faz uma busca linear no espao de parmetros. Outra questo funda-
mental no mtodo de Busca em Grade a delimitao do espao a ser investigado quando
no possumos um conhecimento prvio dos dados a serem classificado. A busca em
um espao muito amplo resulta em um tempo de processamento alto e muitas vezes com
resultados pouco efetivos.
Uma abordagem alternativa comumente encontrada na literatura a utilizao de
heursticas mais eficientes para obteno de resultados precisos com um custo computa-
cional menor. Na literatura podem ser encontrados diversos trabalhos aplicando heurs-
ticas na escolha de parmetros do kernel do SVM. Dentre as tcnicas empregadas com
frequncias podemos destacar as seguintes heursticas: Algoritmos Genticos (CARO-
LINA; CARVALHO, 2008), Recozimento Simulado (BOARDMAN, 2006) e mais recen-
temente Colnias de Formigas (SAMADZADEGAN; HASANI; SHENK, 2012).
regio de Indian Pines no noroeste do Estado de Indiana, EUA. A imagem possui dimen-
so espacial de 145 x 145 pixels, com resoluo com 20 m/pixel. A tabela 2.1 mostra os
resultados dos experimentos realizados.
l
1 X
sv
E(f ) = |yi f (xi )| + (2.1)
2l i=1 l
|S|
loo (2.2)
M
3 METODOLOGIA
A questo da generalizao pode ser mais bem avaliada para o caso de duas clas-
ses.Assumindo que as amostras de treinamento das duas classes no so linearmente se-
parveis, a funo de deciso mais adequada aquela para qual a distncia entre os con-
juntos das amostras de treinamento maximizada. O SVM um classificador que utiliza
o princpio de maximizao da margem. O princpio da margem mxima coloca a su-
perfcie de deciso exatamente entre o limite das duas classes e maximiza a distncia do
limite das classes. Segundo (HAMEL, 2009), essa abordagem reduz a probabilidade de
erro de classificao.
Em relao ao SRM Vapnik (1998), mostra que, desde que o hiperplano de separa-
o no cometa nenhum erro emprico, ou seja, separe corretamente todos os exemplos
de treinamento, maximizar a margem equivale a minimizar o limite superior do risco
esperado. Desta forma ao separar um hiperplano com margem mxima, o risco de gene-
ralizao ser minimizado.
A busca por uma superfcie de deciso com critrio timo como a margem, implica
em um problema de otimizao. Construir um classificador de margem mxima um
problema de otimizao convexa que pode ser resolvido atravs de tcnicas de programa-
o quadrtica. Problemas de otimizao so problemas nos quais desejamos a melhor
soluo em um nmero de possveis solues ou solues factveis. A meta encontrar a
soluo que maximiza ou minimiza o valor da funo objetivo. A formulao matemtica
apresentada a seguir baseada em (ABE, 2005).
27
Figura 3.1: Um hiperplano que divide a regio do espao separando as amostras em duas
regies.
sendo a uma constante (a > 0). As inequaes 3.2 podem ser rearranjadas, di-
vidindo ambos os membros por a e aplicando uma transformao de escala em w e b e
reescrevendo-a de forma mais compacta obtemos:
(
T 1 xi 1 (yi = 1)
w xi + b = (3.3)
1 xi 2 (yi = 1)
Figura 3.2: O hiperplano timo separando os dados com margem mxima . Os vetores de
suporte so as amostras que satisfazem as equaes D(x) = 1 e D(x) = 1. Adaptado
de (HAMEL, 2009).
equao:
= kxp xq k cos
w (xp xq )
=
kwk
(b + 1)(b 1)
=
kwk
2
= (3.5)
kwk
1
minimizar kwk2
W,b 2 (3.6)
sujeito yi (wT xi + b) 1, 1 i m.
Por ser um problema convexo, a resoluo de 3.6 pode ser realizada recorrendo
aos multiplicadores de Lagrange. Em 3.6, temos que w Rn com i = 1, . . . , m e
a restrio yi (wT xi + b) 1 linear. A restrio inserida para assegurar que no
existam amostras de treinamento na regio de separao entre as classes. A introduo
da restries no problema de minimizao pode ser resolvida por meio da tcnica dos
multiplicadores de Lagrange (). A nova funo objetivo dada pela diferena entre a
funo objetivo anterior e o produto das respectivas restries com os multiplicadores de
Lagrange, segue a formulao do Lagrangiano primal:
M M
1 X X
Q(w, b, ) = kwk2 i yi (wT xi + b) + i
2 i=1 i=1
(3.7)
M M
Q(w, b, ) X X
=w i yi xi = 0 w = i yi xi (3.8)
w i=1 i=1
M
Q(w, b, ) X
= i yi = 0 (3.9)
b i=1
30
yi (wT xi + b) 1 para i = 1, . . . , M, (3.10)
M M
X 1X
Q(w, b, ) = i i j yi yj xTi xj (3.11)
i=1
2 i=1
M
X
i yi xi = 0 e i 0 para i = 1, . . . , M (3.12)
i=1
Essa formulao denominada forma dual. Segundo (HAMEL, 2009), a viso dual
do problema tem consequncias interessantes. Uma das consequncias mais relevantes
que um classificador linear baseado em SVM pode ser facilmente estendido para um
classificador no linear. Na formulao dual as amostras de treinamento aparecem na
forma de produto interno xi xj .
A forma dual apresenta como coeficientes i diferentes de zero os vetores de su-
porte, isto , para os exemplos de treinamento que verificam a igualdade na equao (3.4).
Uma vez estimados os parmetros que definem o hiperplano timo, constri-se uma fun-
o de deciso:
X
i yi xTi x + bD(x) = i yi xTi x + b
P
D(x) = (3.13)
iS iS
wT xi + b 1 , xi 1 (yi = 1) (3.14)
wT xi + b 1 + , xi 2 (yi = 1) (3.15)
i 0 i (3.16)
P Para que ocorra um erro necessrio que o respectivo i seja maior que 1, assim
i o limite superior para o nmero de erros de treinamento. Agora o problema de
i
otimizao deve minimizar os erros de treinamento. Assim se modifica a funo objetivo
para minimizar:
M
1 X
Q(w, b, ) = k wk2 + C i (3.17)
2 i=1
M M M
1 X X X
Q(w, b, ) = kwk2 + C i i (yi (wT xi + b) 1 + i ) i i
2 i=1 i=1 i=1
(3.18)
onde = (1 , . . . , M )T = (1 , . . . , M )T
Q(w, b, , , )
=0 (3.19)
w
Q(w, b, , , )
=0 (3.20)
b
Q(w, b, , , )
=0 (3.21)
yi (wT xi + b) 1 0 para i = 1, . . . , M (3.22)
i i 0 para i = 1, . . . , M (3.23)
i 0, 0, 0 para i = 1, . . . , M. (3.24)
M M
1
i j yi yj xT
P P
Maximizar Q(w, b, ) = i 2 i xj
i=1 i=1
M (3.25)
P
sujeito a yi i = 0, Ci i 0 para 1 i m
i=1
Ainda segundo Abe (2005), a nica diferena entre o SVM de margem suave e o
SVM de margem rgida que i no pode exceder C. A funo de deciso a mesma
para o caso de margem rgida
X
D(x) = i yi xTi x + b (3.26)
iS
Figura 3.5: Mapeamento de dados para um espao de caractersticas de mais alta dimen-
so atravs do truque do kenel Adpatado de (PRESS et al., 2007).
Utilizando uma funo vetorial no-linear g (x) = (g1 (x) , . . . gl (x))T , que mapeia
um vetor de entrada m-dimensional para um espao de caracterstica l-dimensional, a
funo de deciso linear no espao de caractersticas dada por:
M
P
hi hj H(xi , xj ) 0 (3.28)
i,j
M
M M
T
P P P
hi hj H(xi , xj ) = hi g (xi ) hi g(xi ) 0 (3.30)
i,j i=1 i=1
0
kernel. Ao invs de utilizar a funo g(x) utilizamos H x, x , no sendo necessrio
explicitar a funo g(x).
Utilizando um kernel de Mercer, o problema dual no espao caracterstica formu-
lado como um problema de otimizao conforme se segue:
M M
1
P P
Maximizar Q() = i 2
i j yi yj K(xi , xj )
i=1 j,i=1
M
(3.31)
P
sujeito yi i = 0, 0 i C para i = 1, ...., M.
i=1
0
Segundo Abe (2005), devido H x, x , ser um kernel positivo semi-definido, o
problema de otimizao (3.30) um problema cncavo quadrtico. E, devido ao = 0
ser uma soluo vivel, o problema de otimizao tem um mnimo global. As condies
de complementariedade de KKT so dadas por
M
! !
X
i yi yi i H(xi , xj ) + b 1 + i =0 (3.32)
iS
para i = 1, ..., M (3.33)
(C i ) + i = 0 para i = 1, ..., M (3.34)
i 0, i 0 para i = 1, ..., M (3.35)
x x0
2
!
k(x, x0 ) = exp 2
(3.38)
2 2
L = max(0, 2 1 )
(3.40)
H = min(0, C 2 + 1 )
L = max(0, 2 + 1 C)
(3.41)
H = min(0, 2 + 1 )
A segunda derivada da funo objetivo ao longo da reta diagonal pode ser expressa
conforme a equao a seguir:
y2 (E1 E2 )
2novo = 2 + (3.43)
novo
H, se 2
H
2novo = novo
2 , se 2novo
<H (3.44)
L, se 2novo L
Podem, ainda, ocorrer regies inclassificveis quando mais de uma funo de de-
ciso positiva ou nenhuma das funes de deciso positiva, (ABE, 2005), gerando
uma regio sem classificao. Segundo ABE (2005) o mtodo de um-contra-um constri
n(n 1)/2 funes de deciso, onde n o nmero de classes. Cada funo de deciso
treinada com duas classes. Uma vez construdas todas as superfcies de deciso, se pode
classificar x aplicando cada uma das n(n 1)/2 superfcies de deciso, contando quantas
vezes x foi classificado em uma determinada classe. A classe que obtiver o maior nmero
de contagens considerada o rtulo para x. Caso acontea um empate entre as classes,
uma das tcnicas utilizadas para resolver esse impasse escolher a classe com menor
ndice.
A formulao seguinte baseada em uma rvore de deciso. Pode ser conside-
rada como uma variao do mtodo um-contra-todos. Determina-se a i-sima funo de
deciso gi (x) (i = 1, . . . , n 1), de modo que quando x pertence classe i
Dada uma amostra x, inicia-se a busca pelo n raiz. A amostra x avaliada pela
funo de deciso desse n, se movendo para um dos dois ns filhos, dependendo do valor
39
3. Cada um dos demais ns contm uma e apenas uma aresta de chegada, existindo
um nico caminho do n raiz aos demais ns;
Procedure SIMULATED_ANNEALING
Begin
Gera aleatoriamente uma soluo inicial;
Inicializa T;
FAA T > 0
FAA enquanto o equilbrio termal no for atingido
Gera um estado vizinho aleatoriamente;
avalia 4E;
atualiza o estado atual;
Se (4E < 0) com novo estado;
Se (4E 0) com novo estado com probabilidade
e4E/(kB T ) ;
End
Diminuir T conforme o cronograma de recozimento defi-
nido;
End
End
Onde X representa a taxa de aceitao, que foi configurada para 95%. Para um
universo de configuraes m, que calculado como 100 N , onde N o nmero de
dimenses do problema. O parmetro m1 representa o nmero de movimentos realizados
com sucesso, m2 representa o nmero de movimentos que pioraram os resultados e 4f +
representa a mdia no incremento na funo de custos para m2 .
Para que a equao (3.50) possa ser aplicada, uma temperatura inicial bastante alta
configurada, por exemplo, 105 . Essa temperatura permite que todos os movimentos
sejam inicialmente aceitos e, apenas um nmero m de movimentos, a temperatura Ti seja
utilizada para o cronograma de resfriamento.
O cronograma de resfriamento implementado atravs da equao:
Tj
T j+1 = T j ln(1+ln) (3.51)
1+ 3
4 ALGORITMO PROPOSTO
P P !
1+
P P 1 2
1 + 1
B = (1 2 )T 1 2 2
(1 2 ) + ln P 1/2 P 1/2 (4.1)
8 2 2 | | | |
1 2
3. Determinadas as classes que daro origem aos ns filhos, se faz uso do algoritmo
de Recozimento Simulado que tem por objetivo, em cada n, selecionar o conjunto
de parmetros com maior poder discriminante para este par de classes;
4. Neste ponto se usa a regra de deciso do classificador SVM, equaes(3.36) e
(3.37);
5. Utilizando-se as respectivas funes de deciso, se classificam as amostras de trei-
namento das demais classes em um dos dois ns filhos;
6. Neste ponto se utiliza o conceito de Limiar de Verossimilhana (LV), proposto por
(MORAES, 2005).Segundo MORAES (2005) o LV um parmetro introduzido no
estudo com a finalidade de definir o critrio de pertinncia de uma classe aos ns
descendentes. O LV estipula a frao dos indivduos na amostra de treinamento
que devem ser alocados em um n, para que a classe em questo seja alocada uni-
camente a este n. Caso a porcentagem de amostras de treinamento de uma dada
classe classificada em um dos ns filhos seja maior que o LV determinado pelo
usurio entre 0 e 100% todas as amostras sero atribudas a este n filho. Caso
contrrio, as amostras de treinamento desta classe so replicadas em ambos os ns
filhos.
7. Esse processo ser repetido ao longo da rvore binria at que cada n contenha
apenas uma classe (n terminal, ou n folha).
8. Na etapa final a rvore gerada salva em disco. Cada n da rvore contm a super-
fcie de deciso gerada com seus respectivos parmetros.
O algoritmo de recozimento simulado, conforme descrito na seo 3.8, foi imple-
mentado no arquivo amoebasa.m, o algoritmo responsvel por otimizar os parmetros
do classificado SVM. O parmetro gama do kernel RBF, conforme apresentado na Tabela
3.1, e o parmetro C, que controla a compensao dos erros cometidos na fase de treina-
mento, e a margem rgida, permitindo que alguns erros de classificao sejam cometidos.
O anexo 7.2 mostra o cdigo fonte da implementao. A funo de custo do algoritmo
implementada no arquivo AmoebaSaFunction.m, conforme o anexo 7.3. A funo
de custo calcula a acurcia relacionada a um par de classes e os parmetros gama e C,
fornecidos pelo processo de otimizao.
O classificador SVM foi incialmente implementado em MATLAB utilizando a ro-
tina quadprog para resolver o problema de programao quadrtica, conforme a equa-
o 3.32 e formulao de (ABE, 2005). Devido performance foi posteriormente substi-
tudo pela biblioteca desenvolvida em C libsvm, (CHIH-CHUNG; LIN, 2011), conforme
a formulao de (PLATT et al., 2000). A biblioteca libsvm foi instalada em conjunto
com o MATLAB, sendo utilizada para realizar o treinamento do classificador. O arquivo
SVMABE 7.1 implementa o classificador SVM, conforme mostrado na ver nos anexos
7.1.
O mtodo svmtrain da biblioteca libsvm usado para treinar o classificador, rece-
bendo como parmetros o tipo de kernel, o parmetro gama e o parmetro C. O kernel
utilizado o kernel RBF e os parmetros so gerados pela heurstica de recozimento simu-
lado, mtodo de busca em grade ou parmetros fixos. O svmtrain desenvolve um modelo
que posteriormente utilizado para o mtodo de classificao, nesse modelo armaze-
nada a superfcie de deciso gerada pelo classificador, os vetores de suporte e o termo
47
Uma das maiores dificuldades na seleo dos parmetros timos do SVM a de-
terminao do espao inicial de busca. Um espao de busca muito amplo implica em
um maior nmero de iterao, principalmente em algoritmos de busca exaustiva, como a
Busca em Grade.
O espao inicial de busca dos parmetros foi selecionado de acordo com resultados
obtidos em ANDREOLA; HAERTEL (2010), alm disso, foi realizado um processo de
inspeo dos resultados de vrios testes realizados na busca de parmetros timos. Duas
ferramentas foram utilizadas para inspecionar os valores dos testes realizados e estimar
um espao inicial de busca mais relevante.
Visando auxiliar na visualizao dos rvore gerada pelo software foi desenvolvida
uma rotina para gerar um grafo de visualizao da rvore construda pelo classificador.
A visualizao foi gerada pela biblioteca JGRAPHX 2.2.0.0 (2012),a biblioteca intei-
ramente escrita em linguagem JAVA. Foi desenvolvida uma classe em (MATLAB, 2012)
utilizando a biblioteca JGRAPHX 2.2.0.0 (2012) para gerar uma rvore a partir dos ns
criados pelo classificador.
Em cada n possvel visualizar a classes que geraram a superfcie de deciso
daquele n, todas as classes oriundas do n pai, o valor do parmetro gama obtido pelo
49
Figura 4.3: Ns gerados com seus respectivos parmetros, o grafo da rvore gerado
durante o processo de teste utilizando a a implementao da biblioteca Jgraph (2012) em
conjunto com o MATLAB.
Visando auxiliar a inspeo dos valores obtidos pelo processo de otimizao foi cri-
ado um conjunto de tabelas em um banco de dados relacional MYSQL (2012). O MySQL
um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL
- Linguagem de Consulta Estruturada, (Structured Query Language) como interface. O
MYSQL possui amplo suporte a linguagem JAVA possuindo interface de conexo nativa.
Isso permite que o MATLAB conecte com o banco de dados realizando operaes como
: consulta de dados, insero e excluso, alm de outros. Na implementao SVMBT-
AMOEBASA foram criadas rotinas que salvam no banco de dados os parmetros obtidos
em cada execuo do processo de otimizao.
Na Figura 4.4 possvel visualizar o diagrama das tabelas criadas no banco de dados
que armazena os experimentos. A tabela de testes armazena o data e hora de incio do
teste, a data e hora do fim do teste. A tabela parmetro armazena os parmetros obtidos
em cada iterao do algoritmo de otimizao , C, a acurcia obtida por aquele par de
classes, alm do melhor conjunto de parmetro obtido durante o processo de otimizao
50
Figura 4.4: Diagrama entidade relacionamento do banco de dados criado para armazenar
os experimentos executados.
51
5 EXPERIMENTOS
Figura 5.1: Cena captura pelo sensor AVIRIS utilizada na realizao dos experimentos.
possuem assinatura espectral bastante similar (vetores de mdios muito prximos entre
si) sendo, portanto, de difcil discriminao. As classes como soja cultivo mnimo e soja
plantio direto diferem apenas pela tcnica de cultivo, como as classes composta de milho.
Alm disso, a cena foi capturada no incio da poca de crescimento das culturas de soja
e milho. Nesta etapa apenas aproximadamente 5% da rea est efetivamente coberta
pela vegetao, sendo os restantes 95% composto por solo exposto e resduo de colheitas
anteriores. Estas condies resultam em classes espectralmente muito semelhantes entre
si, se constituindo, por esta razo, em um desafio o processo de classificao. Por se
constituir um problema desafiador de classificao, diversos trabalhos encontrados na
literatura utilizam esse conjunto de dados como base comparativa de desempenho.
Do conjunto de 220 bandas que dispe a cena AVIRIS, foram removidas as bandas
ruidosas causadas por problemas atmosfricos (vapor de gua, CO2, O3). O nmero final
de bandas espectrais a ser usada, isto , a dimensionalidade dos dados de 190, resultando
em vetores com 190 valores de contador digital para cada pixel da imagem. Para fins dos
experimentos foram selecionadas sete classes, conforme a Tabela 5.1.
Do conjunto das amostras disponveis para cada classe foram extrados dois sub-
conjuntos: um com amostras de treinamento e um segundo com amostras de teste. Com
a finalidade de capturar as variveis naturais que ocorrem ao longo da rea coberta pela
imagem, as amostras em ambos os subconjuntos foram extradas alternadamente do con-
junto das amostras disponveis nos dados de verdade terrestre. Para tornar os resultados
obtidos para as vrias classes comparveis entre si, foram utilizados subconjuntos de trei-
namento e de teste de mesmo tamanho para todas as classes em estudo: inicialmente
foram tomadas 50 amostras por classe para treinamento e 300 amostras por classe para
teste; em um segundo momento, 100 amostras para treinamento e 300 amostras para teste;
em seguida se coletaram 200 amostras para treinamento e outras 300 para fins de teste; e
finalmente um quarto conjunto, com 300 amostras de treinamento e 300 amostras de teste.
53
2. Acurcia do Usurio: estimada pela frao das amostras de teste rotuladas pelo
classificador em cada uma das classes e que efetivamente pertencem a esta classe.
Esta acurcia estima, portanto, o grau de confiana que se pode ter na imagem
temtica produzida pelo classificador.
3. Acurcia Mdia: estimada pela razo do total de amostras classificadas correta-
mente em cada classe, ou seja, a soma dos valores na diagonal principal na matriz
de contingncia, pelo nmero total das amostras de teste.
5.2 Experimento 1
5.3 Experimento 2
A Tabela 5.6 e o grfico 5.6 a seguir apresentam os resultados obtidos pelo mtodo
de busca em grade iniciando em 1 variando de 0.5 at 10 para e C.
A Tabela 5.7 e Figuras 5.7 possvel verificar os resultados para o espao de busca
ampliado, iniciando em 1 variando de 0.1 at 10 para e C. Devido ao tempo de proces-
samento elevado foram realizados testes com 50 amostras de treinamento.
59
Conforme possvel perceber pela Figura 5.8, um passo menos discreto produz um
incremento considervel no tempo de processamento. Na Figura 5.9 podemos perceber
que, ao diminuir a discretizao no espao de busca, no implica em um aumento conside-
rvel da acurcia. A determinao do espao de busca justamente o maior problema da
aplicao do mtodo de busca em grade, j que o tempo de processamento diretamente
relacionado ao passo utilizado. O espao de busca utilizado foi previamente determinado
pelo Experimento 1, ou seja, exigiu conhecimento prvio do espao de busca, porm, a
granularidade do espao de busca s pode ser determinada pela execuo do mtodo.
60
Os resultados obtidos pelo mtodo de busca em grade, o qual realiza uma busca
exaustiva no espao de variveis, so compatveis aos resultados obtidos utilizando os
parmetros fixos, confomre pode-se perceber na figura a seguir:
61
5.4 EXPERIMENTO 3
Figura 5.12: Acurcia mdia obtida pela utilizao de parmetros fixos, busca em grade
e recozimento simulado.
Conforme possvel observar nos resultados apresentados na Tabela 5.8 e nas Fi-
gura 5.11 e Figura 5.12, a heurstica de recozimento simulado obteve resultados superi-
ores em termos de acurcia em relao utilizao dos parmetros fixos e ao mtodo de
busca em grade. Alm disso, conforme apresentado na Figura 5.13, o tempo do mtodo
de recozimento simulado foi inferior ao mtodo de busca em grade.
63
Figura 5.13: Comparativo de tempo entre o mtodo de busca em grade com espao de
busca iniciando em 1 variando de 0.5 at 10 para e C e o mesmo espao de busca utili-
zando algoritmo de recozimento simulado. Foram utilizadas 50, 100, 200 e 300 amostras
para os mtodos de busca em grade e recozimento simulado.
Figura 5.14: Acurcia mdia obtida pela utilizao de parmetros fixos, busca em grade
e recozimento simulado.
6 CONCLUSO
7 ANEXOS
7.1 TABELA
69
44 labelTrainValidationCV ;
45 gamma ;
46 confMatrix ;
47 melhor ;
48 melhorC ;
49 melhorGamma ;
50 numberSamplesTrain ;
51 numberBands ;
52 kernelType ;
53
54 trainDataSA = ;
55 trainLabelSA = ;
56 testDataSA = ;
57 testLabelSA = ;
58
59 Graphic
60 Conn ;
61 Id ;
62 sa ;
63
64 number ;
65 end
66
67 methods
68 f u n c t i o n s g s = SVMABE( conn , i d , k e r n e l )
69 sgs . kernelType = kernel ;
70 sgs . biasmy = 0;
71 sgs . trainDataSA = ;
72 sgs . trainLabelSA = ;
73 sgs . testDataSA = ;
74 sgs . testLabelSA = ;
75 s g s . Conn = conn ;
76 sgs . Id = id ;
77 sgs . sa = SA ( ) ;
78
79 s g s . number = 0;
80 sgs . Graphic = 0;
81 end
82
83
84 %%G r i d S e a r c h C l a s s e s s e m t o d o chamado p e l o
treeSearch
85 function r e s u l t = g r i d S e a r c h ( sgs , c l a s s 1 , c l a s s 2 ,
Cost , Gama )
86
87 custoFinal = max ( C o s t ) ;
88 custoInicial = min ( C o s t ) ;
89 gamaFinal = max ( Gama ) ;
72
189 finalUSupportVector = 0;
190 finalC = X( 1 ) ;
191 finalGamma = X( 2 ) ;
192 finalAccuracy = Z;
193 finalB = 0;
194 sgs . accuracy = Z;
195
196 f i m = d a t e s t r ( now , yyyymmdd HH:MM: SS . FFF ) ;
197
198
199 f p r i n t f ( A c u r a c i a : %f \ n , sgs . accuracy
100) ;
200 f p r i n t f ( Gamma : %f \ n , s g s . gamma ) ;
201 f p r i n t f ( C o s t : %f \ n , s g s . s l a c k ) ;
202 %%f p r i n t f ( A l p h a s : %f \ n , svcount ) ;
203 i f ( ~ i s e m p t y ( s g s . Conn ) )
204 d a t a i n s e r t ( s g s . Conn , p a r a m e t r o , { Gamma ,
S l a c k , GammaMax , GammaMin , SlackMax , S l a c k M i n ,
C l a s s 1 , C l a s s 2 , T e s t e I D , StepMaxMin , S t e p , A c c u r a c y
, D a t a S t a r t , DataEnd } , { finalGamma , f i n a l C , 0 , 0 , 0 , 0 ,
c l a s s 1 . i d C l a s s , c l a s s 2 . i d C l a s s , s g s . Id , 0 , 0 , s g s . a c c u r a c y ,
i n i c i o , fim }) ;
205 end
206 p a r a m e t e r s . s e t D a t a ( finalGamma , f i n a l C ,
finalAccuracy , finalAlpha , finalSupportVector ,
finalUSupportVector , finalB , sgs . trainLabelSA , sgs .
t r a i n D a t a S A , model ) ;
207
208 sgs . gamma = 0;
209 sgs . slack = 0;
210 sgs . accuracy = 0;
211 sgs . alpha = 0;
212 sgs . supportVector = 0;
213 sgs . uSupportVector = 0;
214 sgs .b = 0;
215 sgs . kernelMatrix = [];
216
217
218 r e s u l t = parameters ;
219 return ;
220
221 end
222
223
224
225 %%S i m u l a t e d A n n e a l i n g
226 function r e s u l t = SA ( s g s , c l a s s 1 , c l a s s 2 , c o s t , gama ,
tfinal , tinicial )
76
227
228 s g s . number = s g s . number + 1 ;
229 parameters= data () ;
230 sgs . trainDataSA = [ class1 . getTrainData ( ) ;
class2 . getTrainData () ] ;
231 sgs . trainLabelSA = [ ones ( s i z e ( c l a s s 1 .
g e t T r a i n D a t a ( ) , 1 ) , 1 ) ; o n e s ( s i z e ( c l a s s 2 . g e t T r a i n D a t a ( )
,1) ,1) ] ;
232 sgs . testDataSA = [ class1 . getTestData () ;
class2 . getTestData () ] ;
233 sgs . testLabelSA = [ ones ( s i z e ( c l a s s 1 .
g e t T e s t D a t a ( ) , 1 ) , 1 ) ; o n e s ( s i z e ( c l a s s 2 . g e t T e s t D a t a ( )
,1) ,1) ] ;
234 i f ( ~ i s e m p t y ( s g s . Conn ) )
235 saveData =1;
236 else
237 saveData =0;
238 end
239 tradeoff = 1;
240 s g s . s a = AmoebaSA ( s g s , c l a s s 1 , c l a s s 2 , s a v e D a t a ,
s g s . Id , t r a d e o f f ) ;
241 %%M o s t r a no f o r m a t o n o c i e n t i f i c o
242 %%X = SIMPSA ( MyFunction , x0 ,[ 10 10] ,[10 1 0 ] )
;
243 %%r u n N e d e l ( s g s , f u n c O p t , X0 , lowerBound ,
upperBound , f u n c t i o n O b j e c t i v e )
244
245 X0 = [ 1 1 ] ;
246 lowerBound = [ 0 . 1 0 . 1 ]
247 upperBound = [ 1 0 0 1 0 0 ]
248 i n i c i o = d a t e s t r ( now , yyyymmdd HH:MM: SS . FFF )
;
249 [X] = s g s . s a . r u n N e d e l ( AmoebaSAFunction , X0 ,
lowerBound , upperBound )
250
251 %%V a l i d a o s p a r a m e t r o s e d e v o l v e o modelo
252 [ Z , model , t r a d e o f f , a c c t r e a d e o f f , s v s t r e a d o f f ] =
AmoebaSAFunction ( s g s , X, t r a d e o f f ) ;
253
254 f i m = d a t e s t r ( now , yyyymmdd HH:MM: SS . FFF ) ;
255
256 %%s g s . s l a c k = X ( 1 ) ;
257 %%s g s . gamma = X ( 2 ) ;
258 %%s g s . c l a s s i f y ( s g s . t r a i n D a t a S A , s g s . t e s t D a t a S A
, sgs . trainLabelSA ) ;
259 %%s g s . v a l i d i t y A c c u r a c y ( s g s . t r a i n L a b e l S A , s g s .
classSvm ) ;
77
292 p a r a m e t e r s . s e t D a t a ( finalGamma , f i n a l C ,
finalAccuracy , finalAlpha , finalSupportVector ,
finalUSupportVector , finalB , sgs . trainLabelSA , sgs .
t r a i n D a t a S A , model ) ;
293 r e s u l t = parameters ;
294
295
296 end
297
298
299
300
301
302 f u n c t i o n c l a s s l i s t = c l a s s i f y N o d e ( sgs , c l a s s 1 ,
biasClassify , alphaClassify , supportVectorClassify ,
g a m m a C l a s s i f y , c C l a s s i f y , t r a i n L a b e l , t r a i n D a t a , model )
303 %%d i s p ( nomde da c l a s s e ) ;
304 %%d i s p ( c l a s s 1 . g e t C l a s s N a m e ( ) ) ; d i s p
( nomde
305 %%da c l a s s e ) ;
306 trainDataClass = [ class1 . getTrainData () ] ;
307 classlist = [];
308 classifySvm =[];
309
310 [ p r e d i c t L a b e l , acc , d e c v a l u e s ] = s v m p r e d i c t ( z e r o s
( s i z e ( t r a i n D a t a C l a s s , 1 ) , 1 ) , t r a i n D a t a C l a s s , model ) ;
311
312 for sample = 1: s i z e ( t r a i n D a t a C l a s s , 1 )
313 c l a s s i f y S v m ( sample , 1 ) = p r e d i c t L a b e l ( s a m p l e ) ;
314 end
315
316 % f o r sample = 1: s i z e ( trainDataClass , 1 )
317 % dx =0;
318 % f o r i =1: s i z e ( s u p p o r t V e c t o r C l a s s i f y , 1 )
319 % i f ( strcmp ( sgs . kernelType , poly ) )
320 % dx = dx + a l p h a C l a s s i f y (
supportVectorClassify ( i ) ) trainLabel (
s u p p o r t V e c t o r C l a s s i f y ( i ) ) ( t r a i n D a t a C l a s s ( sample , : )
trainData ( s u p p o r t V e c t o r C l a s s i f y ( i ) , : ) + 1) ^
gammaClassify ;
321 % e l s e i f ( strcmp ( sgs . kernelType , rbf ) )
322 % d i f = t r a i n D a t a C l a s s ( sample , : )
trainData ( supportVectorClassify ( i ) ,:) ;
323 % dx = dx + a l p h a C l a s s i f y (
supportVectorClassify ( i ) ) trainLabel (
s u p p o r t V e c t o r C l a s s i f y ( i ) ) d o u b l e ( e x p ( 1/2 ( ( d i f d i f )
/ ( gammaClassify gammaClassify ) ) ) ) ;
324 %
79
325 % e l s e i f ( s t r c m p ( s g s . k e r n e l T y p e , sam ) )
326 % m u l t i = t r a i n D a t a C l a s s ( sample , : )
trainData ( supportVectorClassify ( i ) , : ) ;
327 % dx = dx + a l p h a C l a s s i f y (
supportVectorClassify ( i ) ) trainLabel (
s u p p o r t V e c t o r C l a s s i f y ( i ) ) acos ( m u l t i / ( m u l t i m u l t i ) ) ;
328 % end
329 % end
330 % dx = dx + b i a s C l a s s i f y ;
331 % i f dx >0
332 % c l a s s i f y S v m ( sample , 1 ) =1;
333 % else
334 % c l a s s i f y S v m ( sample , 1 ) =1;
335 % end
336 % end
337 c l a s s l i s t = classifySvm ;
338
339 end
340
341
342 f u n c t i o n c l a s s i f y P i x e l = c l a s s i f y P i x e l ( sgs , t e s t ,
biasClassify , alphaClassify , supportVectorClassify ,
gammaClassify , c C l a s s i f y , t r a i n L a b e l , t r a i n D a t a )
343 d i s p ( no d e v e r i a p a s s a r a q u i ) ;
344 pause ;
345 for sample = 1: s i z e ( t e s t , 1 )
346 dx = 0 ;
347 for i =1: s i z e ( s u p p o r t V e c t o r C l a s s i f y , 1 )
348 d i f = t e s t ( sample , : ) t r a i n D a t a (
supportVectorClassify ( i ) ,:) ;
349 dx = dx + a l p h a C l a s s i f y (
supportVectorClassify ( i ) ) trainLabel (
s u p p o r t V e c t o r C l a s s i f y ( i ) ) d o u b l e ( exp ( 1/2 ( ( d i f d i f
) / ( gammaClassify gammaClassify ) ) ) ) ;
350 end
351 dx = dx + b i a s C l a s s i f y ;
352 i f dx >0
353 c l a s s i f y P i x e l =1;
354 else
355 c l a s s i f y P i x e l =1;
356 end
357 end
358
359
360
361 return
362
363
80
364 end
365
366
367
368 f u n c t i o n c l a s s i f y ( sgs , data , t e s t , l a b e l )
369 d i s p ( no d e v e r i a p a s s a r a q u i ) ;
370 pause ;
371 sgs . generateKernelMatrix ( data ) ;
372 sgs . quadraProg ( data , l a b e l ) ;
373 %%s g s . c a l c u l a t e B i a s ( d a t a ) ;
374 %%%%%%%%%%%%%%%%%C a l c u l a t e B i a s
375 b i a s =0;
376 for k = 1: s i z e ( sgs . uSupportVector , 1 )
377 sum_i = 0 ;
378 for l =1: s i z e ( sgs . supportVector , 1 )
379 %%d i s p l a y ( s g s . a l p h a ( s g s . s u p p o r t V e c t o r (
l ) ) label ( sgs . supportVector ( l ) ) sgs . kernelMatrix ( sgs .
supportVector ( l ) , sgs . uSupportVector ( k ) ) ) ;
380 sum_i = sum_i + s g s . a l p h a ( s g s .
supportVector ( l ) ) l a b e l ( sgs . supportVector ( l ) ) sgs .
kernelMatrix ( sgs . supportVector ( l ) , sgs . uSupportVector ( k )
);
381 end
382 b i a s = l a b e l ( s g s . u S u p p o r t V e c t o r ( k ) )sum_i ;
383 end
384 %%d i s p ( A q u i v a i o B ) ; d i s p ( b i a s ) ;
385 bias = bias / s i z e ( sgs . uSupportVector , 1 ) ;
386 s g s . b= b i a s ;
387 sgs . generateHyperPlane ( data , t e s t , l a b e l ) ;
388 end
389
390 f u n c t i o n v a l i d i t y A c c u r a c y ( sgs , l a b e l , c l a s s i f i e d D a t a )
391 correct = 0;
392 i n c o r r e c t = 0;
393 for j =1: s i z e ( l a b e l , 1 )
394 % f i r s t column ( g r o u n d t r u t h f o r c l a s s # 1 )
395 i f ( ( l a b e l ( j ) ==1 & c l a s s i f i e d D a t a ( j ) ==1) | |
( l a b e l ( j ) ==1 & c l a s s i f i e d D a t a ( j ) ==1) )
396 c o r r e c t = c o r r e c t +1;
397 else
398 i n c o r r e c t = i n c o r r e c t +1;
399 end
400 end
401 sgs . accuracy = ( c o r r e c t / size ( label , 1 ) ) ;
402 sgs . naccuracy = ( i n c o r r e c t / size ( label , 1 ) ) ;
403 end
404
405 f u n c t i o n c o n f u s i o n M a t r i x ( sgs , c l a s s , t a r g e t )
81
527 d i f = t e s t ( sample , : ) d a t a ( s g s .
supportVector ( i ) ,:) ;
528 dx = dx + s g s . a l p h a ( s g s .
supportVector ( i ) ) l a b e l ( sgs . supportVector ( i ) ) double (
exp ( 1/2 ( ( d i f d i f ) / ( s g s . gamma s g s . gamma ) ) ) ) ;
529 e l s e i f ( strcmp ( s g s . k e r n e l T y p e , sam ) )
530 % multi =
t e s t ( sample , : ) d a t a ( s g s . s u p p o r t V e c t o r ( i ) , : ) ;
531 % dx = dx +
sgs . alpha ( sgs . supportVector ( i ) ) l a b e l ( sgs .
s u p p o r t V e c t o r ( i ) ) acos ( m u l t i / u l t i m u t l i ) ) ;
532 end
533 end
534 dx = dx + s g s . b ;
535 i f dx >0
536 s g s . c l a s s S v m ( sample , 1 ) = 1 ;
537 else
538 s g s . c l a s s S v m ( sample , 1 ) =1;
539 end
540 end
541
542 end
543
544 f u n c t i o n n o r m a l i z e D a t a S e t ( sgs , d a t a )
545 maxData = max ( max ( d a t a ) ) ;
546 minData = min ( min ( d a t a ) ) ;
547 [M N] = s i z e ( d a t a ) ;
548 f o r i = 1 :M
549 f o r j = 1 :N
550 sgs . dataSetNormalized ( i , j ) =(( data ( i , j )
minData ) / ( maxData minData ) ) ;
551 end
552 end
553
554 end
555
556
557 f u n c t i o n c a l c u l a t e B i a s ( sgs , l a b e l )
558 d i s p ( no d e v e r i a p a s s a r a q u i ) ;
559 pause ;
560 sgs . b =0;
561 for j = 1: s i z e ( sgs . uSupportVector , 1 )
562 sum_i = 0 ;
563 for i =1: s i z e ( sgs . supportVector , 1 )
564 sum_i = sum_i + s g s . a l p h a ( s g s .
supportVector ( i ) ) l a b e l ( sgs . supportVector ( i ) ) sgs .
kernelMatrix ( sgs . supportVector ( i ) , sgs . uSupportVector (1) )
;
85
565 end
566 s g s . b = l a b e l ( s g s . u S u p p o r t V e c t o r ( j ) )sum_i ;
567 end
568
569 s g s . b= s g s . b / s i z e ( s g s . u S u p p o r t V e c t o r , 1 ) ;
570 end
571 end
572 end
65 %%a l l o w a c e s s t o SVMABE m e t h o d s
66 s g s . FuncOpt = funcOpt ;
67
68
69 s g s . TEMP_START = ; %
s t a r t i n g t e m p e r a t u r e ( i f none p r o v i d e d , an o p t i m a l one
w i l l be e s t i m a t e d )
70 s g s . TEMP_END =1; %
end t e m p e r a t u r e
71 s g s . COOL_RATE =10; %
s m a l l v a l u e s ( <1) means s l o w c o n v e r g e n c e , l a r g e v a l u e s
( >1) means f a s t c o n v e r g e n c e
72 s g s . INITIAL_ACCEPTANCE_RATIO = 0 . 9 5 ;
% when i n i t i a l t e m p e r a t u r e i s e s t i m a t e d , t h i s w i l l be
t h e i n i t i a l a c c e p t a n c e r a t i o i n t h e f i r s t round
73 s g s . MIN_COOLING_FACTOR =0.9;
% minimum c o o l i n g f a c t o r ( <1)
74 s g s . MAX_ITER_TEMP_FIRST =50; %
number o f i t e r a t i o n s i n t h e p r e l i m i n a r y t e m p e r a t u r e
loop
75 s g s . MAX_ITER_TEMP_LAST =50; %
number o f i t e r a t i o n s i n t h e l a s t t e m p e r a t u r e l o o p ( p u r e
simplex )
76 s g s . MAX_ITER_TEMP =10; %
number o f i t e r a t i o n s i n t h e r e m a i n i n g t e m p e r a t u r e l o o p s
77 s g s . MAX_ITER_TOTAL =2500;
% maximum number o f i t e r a t i o n s t o u t c o u r t
78 s g s . MAX_TIME =2500;
% maximum d u r a t i o n o f o p t i m i z a t i o n
79 s g s . MAX_FUN_EVALS =2500;
% maximum number o f f u n c t i o n e v a l u a t i o n s
80 s g s . TOLX =1e 6;
% maximum d i f f e r e n c e b e t w e e n b e s t and w o r s t f u n c t i o n
evaluation in simplex
81 s g s . TOLFUN =1e 3;
% maximum d i f f e r e n c e b e t w e e n t h e c o o r d i n a t e s o f t h e
vertices
82 s g s . TEMP_LOOP_NUMBER =0;
%t e m p e r a t u r e l o o p
83 sgs . t r a d e o f f = tradeoff ;
84 end
85
86
87 function [X] = r u n N e d e l ( s g s , f u n c , X0 , l o w e r b o u n d ,
upperbound )
88
89 ndimension = l e n g t h ( X0 ) ;
90
88
91
92
93
94
95 SUCCESSFUL_MOVES = 0;
96 UNSUCCESSFUL_MOVES = 0 ;
97 UNSUCCESSFUL_COSTS = 0 ;
98
99 %%i n c i a l i z e a r r a y t o s a v e
100 sgs . costEvaluated_ith = zeros ( sgs .
MAX_ITER_TOTAL , n d i m e n s i o n + 1) ;
101 sgs . bestCostEvaluated_ith = zeros ( sgs .
MAX_ITER_TOTAL , 1 ) ;
102 sgs . temperature_ith = zeros ( sgs .
MAX_ITER_TOTAL , 1 ) ;
103 sgs . z_ith = zeros ( ndimension
+1 , n d i m e n s i o n , s g s . MAX_ITER_TOTAL ) ;
104 sgs . bestZ_ith = zeros ( sgs .
MAX_ITER_TOTAL , n d i m e n s i o n ) ;
105
106 %%s e t l o w e r bound
107 s g s . lowerBound = l o w e r b o u n d ;
108
109 %%s e t u p p e r bound
110 s g s . upperBound = u p p e r b o u n d ;
111
112
113 %%MATLAB \ F u n c t i o n s \ M a t h e m a t i c s \ A r r a y s and
M a t r i c e s \ E l e m e n t a r y M a t r i c e s and A r r a y s \ r n g
114 %%s a v e t h e c u r r e n t g e n e r a t o r s e t t i n g s i n s :
115 s = rng ;
116
117 %%e m p t y s i m p l e x m a t r i x o f c a n d i d a t e p o i n t s
118 c a n d i d a t e P o i n t s = zeros ( ndimension + 1 ,
ndimension ) ;
119
120 %%e m p t y c o s t v e c t o r
121 Z = zeros ( ndimension + 1 , 1) ;
122
123 %%s e t b e s t v e r t e x o f i n i a l s i m p l e x e q u a l t o
guess parameter
124 sgs . bestX = X0 ;
125 %% e v a l u a t e c o s t f u n c t i o n w i t h s i m p l e x g u e s s
parameter
126 %% c a l l e v a l u a t i o n f u n c t i o n o b j e c t i v e F u n c t i o n (
s g s , f u n , p o i n t , l b , up )
127 %% w i t h p a r a m e t e r s
128 %%o b j e c t i v e f u n c t i o n
89
129 %% b e s t X i n t h i s c a s e g u e s s p o i n t
130 %% l o w e r B o u n d
131 %% upperBound
132 sgs . bestZ = sgs . o b j e c t i v e F u n c t i o n ( func , sgs .
bestX , s g s . lowerBound , s g s . upperBound ) ;
133
134 s g s . TEMP_LOOP_NUMBER = 1 ;
135
136 %%s e t t e m p e r a t u r e
137 TEMPERATURE = abs ( s g s . b e s t Z ) 1 e5 ;
138
139
140
141 s g s . b e s t X = X0 ;
142
143
144 %%s t a r t i t e r a t i o n s
145 %%c o n t r o l s t o p p i n g
146 EXITFLAG = 0 ;
147 %c o u n t i t e r a t i o n number
148 numberIteration = 0;
149 %s t a r t t i m e r
150 tic
151
152 w h i l e EXITFLAG == 0
153
154 c a n d i d a t e P o i n t s ( 1 , : ) = sgs . bestX ;
155 Z(1) = sgs . objectiveFunction (
f u n c , s g s . bestX , s g s . lowerBound , s g s . upperBound ) ;
156
157 i f s g s . TEMP_LOOP_NUMBER == 1
158 MAXITERTEMP = s g s . MAX_ITER_TEMP_FIRST
ndimension ;
159 end
160
161 %%t e s t r e m a i n i n g v e r t i c e s o f s i m p l e x
162 for k = 1: ndimension
163 % c o p y f i r s t v e r t e x i n new v e r t e x
164 candidatePoints (k +1 ,:) =
candidatePoints (1 ,:) ;
165 % a l t e r new v e r t e x
166 c a n d i d a t e P o i n t s ( k +1 , k ) = l o w e r b o u n d ( k
) +rand ( u p p e r b o u n d ( k )l o w e r b o u n d ( k ) ) ;
167 % calculate the value of o b e j t i v e
f u n c t i o n a t new v e r t e x
168 Z ( k +1 ) = s g s . o b j e c t i v e F u n c t i o n ( f u n c ,
c a n d i d a t e P o i n t s ( k + 1 , : ) , lowerbound , upperbound ) ;
169 end
90
170
171
172 % i n i t i a l i z e v e c t o r COSTS , n e e d e d t o
c a l c u l a t e new t e m p e r a t u r e u s i n g c o o l i n g
173 % s c h e d u l e a s d e s c r i b e d by Cardoso e t a l .
(1996)
174 c o s t s = z e r o s ( ( n d i m e n s i o n + 1) MAXITERTEMP, 1 ) ;
175
176
177 iterationTemperature = 0;
178 % P r e s s and T e u k o l s k y ( 1 9 9 1 ) add a
positive logarithmic distributed variable ,
179 % proportional to the control
temperature T to the function value associated with
180 % every vertex of the simplex .
L i k e w i s e , t h e y s u b t r a c t a s i m i l a r random v a r i a b l e
181 % f r o m t h e f u n c t i o n v a l u e a t e v e r y new
replacement point .
182 % Thus , i f t h e r e p l a c e m e n t p o i n t
c o r r e s p o n d s t o a l o w e r c o s t , t h i s method a l w a y s
183 % a c c e p t s a t r u e down h i l l s t e p . I f ,
on t h e o t h e r hand , t h e r e p l a c e m e n t p o i n t
184 % c o r r e s p o n d s t o a h i g h e r c o s t , an
u p h i l l move may be a c c e p t e d , d e p e n d i n g on t h e
185 % r e l a t i v e COSTS o f t h e p e r t u r b e d
values .
186 % ( t a k e n f r o m Cardoso e t a l . , 1 9 9 6 )
187 % t h i s for corresponde to Nelder Mead
method
188 i n i c i o = d a t e s t r ( now , yyyymmdd HH:MM
: SS . FFF ) ;
189 for iterationTemperature = 1:
MAXITERTEMP
190 numberIteration =
numberIteration + 1;
191 % add random f l u c t u a t i o n s t o
function values of current v e r t i c e s
192 f l u c t u a t i o n Z = Z + TEMPERATURE
abs ( l o g ( rand ( n d i m e n s i o n + 1 , 1 ) ) ) ;
193
194 %r e o r d e r f l u c t u a t i o n Z , Z and P
s o t h e f i r s t row c o r r e s p o n d s t o t h e l o w e s t v e r t i c e v a l u e
195 tempMatrix = so r tr o ws ( [
fluctuationZ ,Z, candidatePoints ] ,1) ;
196 f l u c t u a t i o n Z = tempMatrix ( : , 1 ) ;
197 Z = tempMatrix ( : , 2 ) ;
198 c a n d i d a t e P o i n t s = tempMatrix
( : , 3 : end ) ;
91
227 end
228
229 i f ( n u m b e r I t e r a t i o n >= s g s .
MAX_ITER_TOTAL n d i m e n s i o n ) | | ( s g s . n u m b e r O f E v a l u a t i o n s
>= s g s . MAX_FUN_EVALS n d i m e n s i o n ( n d i m e n s i o n + 1 ) ) ,
230 d i s p ( Maximum number o f
f u n c t i o n e v a l u a t i o n s or i t e r a t i o n s reached . ) ;
231 EXITFLAG = 1 ;
232 break ;
233 end
234
235 i f t o c / 6 0 > s g s . MAX_TIME
236 d i s p ( E x c e e d e d maximum t i m e .
);
237 EXITFLAG = 1 ;
238 break ;
239 end
240 %%d i s p ( s p r i n t f ( % 5 . 0 f %5.0
f %12.6 g %15.6 g %5.0 f %5.0 f %12.6 g
, numberIteration , sgs . numberOfEvaluations , Z (1 ) , sgs .
b e s t Z , c a n d i d a t e P o i n t s ( 1 ) , c a n d i d a t e P o i n t s ( 2 ) ,TEMPERATURE )
);
241
242 % b e g i n a new i t e r a t i o n
243 %% f i r s t e x t r a p o l a t e by a f a c t o r 1
through the face of the simplex
244 %% a c r o s s f r o m t h e h i g h p o i n t , i . e . ,
r e f l e c t t h e s i m p l e x from t h e high p o i n t
245 [ zFlutuationTrial , zTrial , pointTrial ] =
Amoeba ( s g s , f u n c , c a n d i d a t e P o i n t s , 1 , s g s . lowerBound , s g s .
upperBound , n d i m e n s i o n , TEMPERATURE) ;
246
247 %% c h e c k t h e r e s u l t
248 i f z F l u t u a t i o n T r i a l <=
fluctuationZ (1) ,
249 %% g i v e s a r e s u l t b e t t e r
t h a n t h e b e s t p o i n t , s o t r y an a d d i t i o n a l
250 %% e x t r a p o l a t i o n by a
factor 2
251 [ zFlutuationTrialExtra ,
z T r i a l E x t r a , p o i n t T r i a l E x t r a ] = Amoeba ( s g s , f u n c ,
c a n d i d a t e P o i n t s , 2 , s g s . lowerBound , s g s . upperBound ,
n d i m e n s i o n , TEMPERATURE) ;
252 if zFlutuationTrialExtra <
zFlutuationTrial ,
253 c a n d i d a t e P o i n t s ( end , : )
= pointTrialExtra ;
254 Z ( end ) = zTrialExtra ;
93
255 else
256 c a n d i d a t e P o i n t s ( end , : )
= pointTrial ;
257 Z ( end ) = zTrial ;
258
259 end
260 e l s e i f z F l u t u a t i o n T r i a l >=
f l u c t u a t i o n Z ( ndimension ) ,
261 %% t h e r e f l e c t e d p o i n t i s
w o r s e t h a n t h e s e c o n d h i g h e s t , s o l o o k
262 %% f o r an i n t e r m e d i a t e
l o w e r p o i n t , i . e . , do a oned i m e n s i o n a l
263 %% c o n t r a c t i o n
264 [ zFlutuationTrialContra ,
z T r i a l C o n t r a , p o i n t T r i a l C o n t r a ] = Amoeba ( s g s , f u n c ,
c a n d i d a t e P o i n t s , 2 , s g s . lowerBound , s g s . upperBound ,
n d i m e n s i o n , TEMPERATURE) ;
265 if zFlutuationTrialContra <
f l u c t u a t i o n Z ( end ) ,
266 c a n d i d a t e P o i n t s ( end , : )
= pointTrialContra ;
267 Z ( end ) = zTrialContra
;
268 else
269 %% can t seem t o g e t
r i d o f t h a t high p o i n t , so b e t t e r c o n t r a c t
270 %% a r o u n d t h e l o w e s t (
best ) point
271 X = ones ( ndimension ,
ndimension ) diag ( c a n d i d a t e P o i n t s ( 1 , : ) ) ;
272 c a n d i d a t e P o i n t s ( 2 : end
, : ) = 0 . 5 ( c a n d i d a t e P o i n t s ( 2 : end , : ) +X) ;
273 for k =2: ndimension ,
274 Z( k ) = sgs .
o b j e c t i v e F u n c t i o n ( func , c a n d i d a t e P o i n t s ( k , : ) , lowerbound ,
upperbound ) ;
275 end
276 end
277 else
278 %% i f YTRY b e t t e r t h a n
s e c o n d h i g h e s t p o i n t , u s e t h i s p o i n t
279 c a n d i d a t e P o i n t s ( end , : ) =
pointTrial ;
280 Z ( end ) = z T r i a l ;
281 end
282
283 % the i n i t i a l temperature is
e s t i m a t e d i n t h e f i r s t loop from
94
284 % t h e number o f s u c c e s s f u l l
and u n s u c c e s f u l l moves , and t h e a v e r a g e
285 % increase in cost associated
w i t h t h e u n s u c c e s s f u l moves
286
287 i f s g s . TEMP_LOOP_NUMBER == 1 &&
i s e m p t y ( s g s . TEMP_START ) ,
288 i f Z ( 1 ) > Z ( end ) ,
289 SUCCESSFUL_MOVES =
SUCCESSFUL_MOVES+ 1 ;
290 e l s e i f Z ( 1 ) <= Z ( end ) ,
291 UNSUCCESSFUL_MOVES =
UNSUCCESSFUL_MOVES+ 1 ;
292 UNSUCCESSFUL_COSTS =
UNSUCCESSFUL_COSTS+ (Z ( end )Z ( 1 ) ) ;
293 end
294 end
295
296 i f ( s g s . s a v e D a t a == 1 )
297 f i m = d a t e s t r ( now , yyyymmdd
HH:MM: SS . FFF ) ;
298 d a t a i n s e r t ( s g s . FuncOpt . Conn ,
p a r a m e t r o , { Gamma , S l a c k , GammaMax , GammaMin ,
SlackMax , S l a c k M i n , C l a s s 1 , C l a s s 2 , T e s t e I D ,
StepMaxMin , S t e p , A c c u r a c y , D a t a S t a r t , DataEnd } , {
c a n d i d a t e P o i n t s ( 1 ) , c a n d i d a t e P o i n t s ( 2 ) , s g s . lowerBound ( 1 ) ,
s g s . upperBound ( 1 ) , s g s . lowerBound ( 2 ) , s g s . upperBound ( 2 ) ,
sgs . Class1ID , sgs . Class2ID , sgs . FtesteID , 0 ,
n u m b e r I t e r a t i o n , sgs . bestZ , i n i c i o , fim }) ;
299 end
300
301 end
302
303
304 i f i t e r a t i o n T e m p e r a t u r e < MAXITERTEMP
,
305 break ;
306 end
307 % s t o r e c o s t f u n c t i o n v a l u e s i n COSTS v e c t o r
308 c o s t s ( ( i t e r a t i o n T e m p e r a t u r e 1) n d i m e n s i o n + 1 :
i t e r a t i o n T e m p e r a t u r e n d i m e n s i o n +1 ) = Z ;
309
310 % c a l c u l a t e d i n i t i a l t e m p e r a t u r e or
recalculate temperature
311 % u s i n g c o o l i n g s c h e d u l e as
p r o p o s e d by Cardoso e t a l . ( 1 9 9 6 )
312 %
95
313
314 i f s g s . TEMP_LOOP_NUMBER == 1 &&
i s e m p t y ( s g s . TEMP_START )
315 TEMPERATURE = (
UNSUCCESSFUL_COSTS / ( SUCCESSFUL_MOVES+UNSUCCESSFUL_MOVES)
) / l o g ( ( ( SUCCESSFUL_MOVES+UNSUCCESSFUL_MOVES) s g s .
INITIAL_ACCEPTANCE_RATIOSUCCESSFUL_MOVES) /
UNSUCCESSFUL_MOVES) ;
316 e l s e i f s g s . TEMP_LOOP_NUMBER ~= 0 ,
317 STDEV_Y = s t d ( c o s t s ) ;
318 COOLING_FACTOR = 1 / ( 1 +
TEMPERATURE l o g ( 1+ s g s . COOL_RATE) / ( 3 STDEV_Y ) ) ;
319 TEMPERATURE = TEMPERATURE
min ( s g s . MIN_COOLING_FACTOR , COOLING_FACTOR) ;
320 end
321
322 % add one t o t e m p e r a t u r e l o o p
number
323 s g s . TEMP_LOOP_NUMBER = s g s .
TEMP_LOOP_NUMBER+ 1 ;
324
325 end
326 X = sgs . bestX ;
327 %
328 end
329
330
331 function [ zFlutuationTrial , zTrial , p o i n t T r i a l ] =
Amoeba ( s g s , fun , p o i n t , f a c , l b , ub , n d i m e n s i o n , TEMPERATURE)
332 % E x t r a p o l a t e s by a f a c t o r f a c t h r o u g h t h e f a c e
o f t h e s i m p l e x a c r o s s from
333 % t h e h i g h p o i n t , t r i e s i t , and r e p l a c e s t h e
h i g h p o i n t i f t h e new p o i n t i s
334 % better .
335
336 % c a l c u l a t e c o o r d i n a t e s o f new v e r t e x
337 psum = sum ( p o i n t ( 1 : n d i m e n s i o n , : ) ) / n d i m e n s i o n ;
338 p o i n t T r i a l = psum(1 f a c ) + p o i n t ( end , : ) f a c ;
339
340 % evaluate the function at the t r i a l point .
341 z T r i a l = o b j e c t i v e F u n c t i o n ( s g s , fun , p o i n t T r i a l ,
l b , ub ) ;
342 % s u b s t r a c t random f l u c t u a t i o n s t o f u n c t i o n
values of current v e r t i c e s
343 z F l u t u a t i o n T r i a l = z T r i a l TEMPERATURE abs ( l o g (
rand ( 1 ) ) ) ;
344
96
345 return
346 end
347
348
349
350 %% C o s t F u n c t i o n E v a l u a t i o n
351 f u n c t i o n [ Z e v a l u a t i o n ] = o b j e c t i v e F u n c t i o n ( s g s , fun
, p o i n t , l b , ub )
352 ndimension = length ( point ) ;
353 for i = 1: ndimension
354 i f point ( i ) < lb ( i )
355 Z e v a l u a t i o n = 1 e12 + ( l b ( i )p o i n t ( i ) )
1 e6 ;
356 return ;
357 end
358 i f p o i n t ( i ) > ub ( i )
359 Z e v a l u a t i o n = 1 e12 + ( p o i n t ( i )ub ( i ) )
1 e6 ;
360 return ;
361 end
362
363 end
364
365 %%c a l c u l a t e c o s t a s s o c i a t e d w i t h p o i n t
366 Z e v a l u a t i o n = f e v a l ( fun , s g s . FuncOpt , p o i n t , s g s .
tradeoff ) ;
367
368 sgs . numberOfEvaluations = sgs .
numberOfEvaluations + 1;
369
370 %%s a v e t h e b e s t p o i n t e v e r
371 i f Zevaluation < sgs . bestZ
372 sgs . bestZ = Zevaluation ;
373 sgs . bestX = p o i n t ;
374 end
375 end
376
377
378 end
379 end
5 svstreadoff
= 0;
6 s g s . s l a c k = X( 1 ) ;
7 s g s . gamma = X( 2 ) ;
8 p a r a m s = s p r i n t f ( s 0 t 2
c %.8 f g %.8 f , s g s . s l a c k , s g s . gamma ) ;
9 model = s v m t r a i n ( s g s .
trainLabelSA , sgs . trainDataSA , params ) ;
10 [ p r e d i c t L a b e l , acc , d e c v a l u e s
] = s v m p r e d i c t ( s g s . t e s t L a b e l S A , s g s . t e s t D a t a S A , model ) ;
11
12
13 %%d i s p l a y ( E s s e o
n mero de v e t o r e s de s u p o r t e ) ;
14 %d i s p l a y ( s v ) ;
15
16 f a t o r = s q r t ( ( model .
totalSV / length ( sgs . trainLabelSA ) ) ) ;
17 %%d i s p l a y ( E s s e o fator
de v e t o r e s de s u p o r t e ) ;
18 %%d i s p l a y ( f a t o r ) ;
19
20 i f ( t r a d e o f f == 1 )
21 Z
= (100 ( ( acc ( 1 ) / 2 ) + ( f a t o r / 2 ) ) ) /100 ;
22 acctreadeoff
= acc ( 1 ) ;
23 svstreadoff
= model . t o t a l S V ;
24 else
25 Z
= 1 ( acc ( 1 ) /100) ;
26 end
27
28
29 end
10 p r o p e r t i e s ( SetAccess = private )
11 Root = [];
12 nodeRet = [];
13 count = 0;
14 nodeID = 0;
15 listOfLeaf = ;
16 numberCorrectCount = 0;
17 numberIncorrectCount = 0;
18 numberTotalCount = 0;
19 svm = ;
20 type = ;
21 player = ;
22 gammaFix =0;
23 slackFix =0;
24 Conn =0;
25 Id =0;
26
27
28 TFinal = 0;
29 TInicial = 0;
30 iterations = 0;
31 Cost = 0;
32 Gama = 0;
33 saveDataBase = 0;
34
35
36 end
37 methods
38 f u n c t i o n t r e e = svmTree ( type , gammafix , s l a c k f i x , conn
, i d , c o s t , gama , t f i n a l , t i n i c i a l , i t e r a t i o n s , k e r n e l ,
savedatabase )
39 t r e e . l i m i a r = 99;
40 t r e e . nodeID = 0 ;
41 set (0 , RecursionLimit ,2500) ;
42 t r e e . l i s t O f L e a f = dlNode ( ) ;
43
44 tree . Conn = conn ;
45 tree . Id = id ;
46 tree . gammaFix = gammafix ;
47 tree . slackFix = slackfix ;
48 tree . Cost = cost ;
49 tree . Gama = gama ;
50 tree . TFinal = tfinal ;
51 tree . TInicial = tinicial ;
52 tree . iterations = iterations ;
53 tree . saveDataBase = savedatabase ;
54
55
99
56 i f ( t r e e . s a v e D a t a B a s e == 0 )
57 t r e e . Conn = ;
58 t r e e . Id = ;
59 end
60 t r e e . svm = SVMABE( t r e e . Conn , t r e e . Id , k e r n e l ) ;
61 t r e e . type = type ;
62 end
63
64 f u n c t i o n addNodeSVM ( t r e e , c l a s s e s , p a r e n t )
65 i f ~isempty ( p a r e n t )
66 i f ~isempty ( p a r e n t . c l a s s e s )
67 parent . classes = ;
68 end
69 end
70 i f ( c l a s s e s . getListCount ( ) > 1)
71 [ class1 class2 ] = tree . DistanceList .
calculateDistanceBetwwenClass ( classes ) ;
72 i f ( strcmp ( t r e e . type , s a ) )
73 p a r a m s = t r e e . svm . SA ( c l a s s 1 , c l a s s 2 , t r e e
. Cost , t r e e . Gama , t r e e . T F i n a l , t r e e . T I n i c i a l ) ;
74 e l s e i f ( strcmp ( t r e e . type , g r ) )
75 p a r a m s = t r e e . svm . g r i d S e a r c h ( c l a s s 1 ,
c l a s s 2 , t r e e . Cost , t r e e . Gama ) ;
76 e l s e i f ( strcmp ( t r e e . type , f x ) )
77 p a r a m s = t r e e . svm . f i x P a r a m e t e r ( c l a s s 1 ,
c l a s s 2 , t r e e . gammaFix , t r e e . s l a c k F i x ) ;
78 end
79
80 newList = dlNode ( ) ;
81 for i =1: c l a s s e s . g e t L i s t C o u n t ( )
82 dataClasses = classes . getItem ( i ) ;
83 i f ( strcmp ( c l a s s 1 . g e t C l a s s N a m e ( ) ,
d a t a C l a s s e s . g e t C l a s s N a m e ( ) ) | | strcmp ( c l a s s 2 .
getClassName ( ) , d a t a C l a s s e s . getClassName ( ) ) )
84
85 else
86 newList . i n s e r t ( d a t a C l a s s e s ) ;
87 end
88 end
89 c l a s s e s = newList ;
90
91 for k =1: c l a s s e s . g e t L i s t C o u n t ( )
92 dataClasses = classes . getItem (k) ;
93 end
94 listLeft = dlNode ( ) ;
95 listRight = dlNode ( ) ;
96 listRight . insert ( class1 ) ;
97 listLeft . insert ( class2 ) ;
100
98 for i =1: c l a s s e s . g e t L i s t C o u n t ( )
99 dataClasses = classes . getItem ( i ) ;
100 c l a s s l i s t = t r e e . svm . c l a s s i f y N o d e (
d a t a C l a s s e s , params . bi as , params . alpha , params .
s u p p o r t V e c t o r , p a r a m s . bestG , p a r a m s . b e s t C , p a r a m s .
t r a i n L a b e l , params . t r a i n D a t a , params . modelData ) ;
101 sizeOFClasses = size ( c l a s s l i s t ,1) ;
102 p o s i t i v e = find ( c l a s s l i s t > 0) ;
103 percentPositive = ( size ( positive ,1)
100) / sizeOFClasses ;
104 negative = find ( c l a s s l i s t < 0) ;
105 percentNegative = ( size ( negative ,1)
100) / sizeOFClasses ;
106 if (( percentPositive > percentNegative )
&& ( p e r c e n t P o s i t i v e > t r e e . l i m i a r ) )
107 listRight . insert ( dataClasses ) ;
108 elseif (( percentPositive <
p e r c e n t N e g a t i v e ) && ( p e r c e n t N e g a t i v e > t r e e . l i m i a r ) )
109 l i s t L e f t . insert ( dataClasses ) ;
110 else
111 listRight . insert ( dataClasses ) ;
112 l i s t L e f t . insert ( dataClasses ) ;
113 end
114 end
115 for k =1: l i s t R i g h t . g e t L i s t C o u n t ( )
116 dataClasses = l i s t R i g h t . getItem (k) ;
117 end
118
119 for k =1: l i s t L e f t . g e t L i s t C o u n t ( )
120 dataClasses = l i s t L e f t . getItem (k) ;
121 end
122 else
123 listLeft = dlNode ( ) ;
124 listRight = dlNode ( ) ;
125 l i s t R i g h t . i n s e r t ( classes . getItem (1) ) ;
126 end
127
128 i f i s e m p t y ( t r e e . Root )
129 listofClass = dlNode ( ) ;
130 listofClass = classes ;
131 listofClass . insert ( class1 ) ;
132 listofClass . insert ( class2 ) ;
133 t r e e . nodeID = t r e e . nodeID + 1 ;
134 newNode = NodeSvm ( params , c l a s s 1 , c l a s s 2 ,
l i s t o f C l a s s , , p a r e n t , t r e e . nodeID ) ;
135 p a r e n t = newNode ;
136 t r e e . Root = newNode ;
137 end
101
267 i f (~ isempty ( r o o t . r i g h t ) )
268 t r e e . sumTree ( r o o t . r i g h t , m a t r i x , p a r e n t ) ;
269 end
270 end
271
272 end
273
274
275 function [ treeWithPixel l i s t ] = runPixelTree ( tree ,
svmTree , l i s t )
276 debug = false ;
277 debugStarted = false ;
278 reply = ;
279 for c l a s s e s =1: l i s t . g e t L i s t C o u n t ( )
280 dataClasses = l i s t . getItem ( classes ) ;
281 sample = dataClasses . getTestData () ;
282 classname = d a t a C l a s s e s . getClassName ( ) ;
283 node = svmTree . Root ;
284
285 f o r i = 1 : s i z e ( sample , 1 )
286
287 p i x e l = c l a s s i f i e d P i x e l s ( classname ,
sample ( i , : ) ) ;
288 w h i l e ( strcmp ( node . i s L e a f , f a l s e ) )
289
290 %%c l a s s P i x e l = t r e e . svm .
c l a s s i f y P i x e l ( s a m p l e ( i , : ) , node . params . b i a s , node . params .
a l p h a , node . params . s u p p o r t V e c t o r , node . params . bestG , node .
params . b e s t C , node . params . t r a i n L a b e l , node . params .
trainData ) ;
291 [ c l a s s P i x e l , acc , d e c v a l u e s ] =
s v m p r e d i c t ( 0 , s a m p l e ( i , : ) , node . p a r a m s . m o d e l D a t a ) ;
292
293 i f ( c l a s s P i x e l > 0)
294 node = node . r i g h t ;
295 else
296 node = node . l e f t ;
297 end
298
299 i f ( strcmp ( node . i s L e a f , t r u e ) )
300 i f ( strcmp ( node . class1Name ,
p i x e l . className ) )
301 t r e e . numberCorrectCount =
t r e e . numberCorrectCount +1;
302 set ( pixel , isCorrect ,1) ;
303 else
304 t r e e . numberIncorrectCount =
t r e e . numberIncorrectCount +1;
105
REFERNCIAS
CHIH-CHUNG; LIN, C.-J. C. LIBSVM : a library for support vector machines. , [S.l.],
p.27:127:27, 2011.
HAMEL, L. Knowledge Discovery with Support Vector Machines. New Jersey,: John
Wiley & Sons, 2009.
HUANG, C.-J. W. C.-L. A GA-basead feature selection and parameters optimization for
support vector machines. , [S.l.], v.31, p.231240, 2006.
JGraphX 2.2.0.0. Lodon, 145-157 St John Street: JGraph Ltd 2006-2012., 2012.
107
LIEPERT, M. Topological fields chunking for German with SVMs: optimizing SVM-
parameters with GAs. In: INTERNATIONAL CONFERENCE ON RECENT ADVAN-
CES IN NATURAL LANGUAGE PROCESSING (RANLP). Proceedings. . . [S.l.: s.n.],
2003.
NELDER, J. A.; MEAD, R. A simplex method for function minimization. , [S.l.], p.308
313, January 1965.
OSUNA, E.; FREUND, R.; GIROSI, F. An improved training algorithm for support vec-
tor machines. In: NEURAL NETWORKS FOR SIGNAL PROCESSING [1997] VII.
PROCEEDINGS OF THE 1997 IEEE WORKSHOP. Anais. . . [S.l.: s.n.], 1997. p.276
285.
PAL, M.; MATHER, P. M. Support vector machines for classification in remote sensing.
, [S.l.], p.10071011, Maro 2005.
PLATT, J. et al. Large margin DAGSVMs for multiclass classification. , [S.l.], p.547
553, 2000.
PRESS, W. H. et al. Numerical Recipes 3rd Edition: the art of scientific computing.
3.ed. New York, NY, USA: Cambridge University Press, 2007.
SMOLA, A. et al. Advances in large margin classifiers. London,: MIT Press, 2000.
VAPNIK, V. N. The nature of statistical learning theory. New York, NY, USA:
Springer-Verlag New York, Inc., 1995.