Post on 04-Nov-2021
Máquinas de Vetores SuporteVisão Computacional
Introdução• Máquinas de Vetores de Suporte (MVS)
• Criada por (VAPNIK, 1998) é um método de aprendizagem supervisionado usado para estimar uma função que classifique dados de entrada em duas classes (normalmente, mas é multiclasses)
• O objetivo do treinamento através de MVS é a obtenção de hiperplanos que dividam as amostras de tal maneira que sejam otimizados os limites de generalização.
2
Introdução• Os algoritmos de treinamento das MVS possuem forte
influência da teoria de otimização e de aprendizagem estatística
• Resultados normalmente melhores comparado a redes neurais• Bons exemplos de aplicações em processamento de
imagens, bioinformática, categorização de textos, análise se solo .....
3
Representação AM
4
Teoria de Aprendizado Estatístico• Seja f um classificador e F o conjunto de todos os
classificadores que um determinado algoritmo de AMpode gerar.
• Esse algoritmo, durante o processo de aprendizado, utiliza um conjunto de treinamento T, composto de n pares (xi, yi), para gerar um classificador particular f’ϵ F.
5
Teoria de Aprendizado Estatístico
6Funções representadas pelas curvas de decisãoConjunto de treinamento binário
Qual classificador f’ escolher?• Sendo todos dados do domínio gerados de forma
independente e identicamente distribuídos (i.i.d)• O risco empírico de um classificador f pode ser
calculado como:
• Principio de Minimização de Risco Empírico• Nem sempre leva a um bom classificador 7
Limite do Risco Esperado• Relaciona o Risco Empírico com o Risco Esperado
• Garantido com probabilidade 1 – teta onde teta ϵ[0,1]
• h denota a dimensão Vapnik-Chervonenkis (VC)• n qtd exemplos no treinamento
8
Dimensão VC Vapnik-Chervonenkis
• A dimensão VC h mede a capacidade do conjunto de funções F.
• Quanto maior o seu valor, mais complexas são as funções de classificação que podem ser induzidas a partir de F.
• Dado um problema de classificação binário, essa dimensão é definida como o número máximo de exemplos que podem ser particionados em duas classes pelas funções contidas em F, para todas as possíveis combinações binárias desses dados. 9
Contribuição Risco Esperado• Importância de se controlar a capacidade do conjunto
de funções F do qual o classificador é extraído• Bom classificador minimiza o Risco Empírico e que
possua a uma classe de funções F com baixa dimensão VC h
• Minimização de Risco Estrutural
10
Como escolher• Divide-se inicialmente F em subconjuntos de funções com
dimensão VC crescente
Principio da Minimização do Risco Estrutural
• Introduzir uma estrutura (função de classificação) em F• Minimiza-se então o limite sobre as estruturas introduzidas.• Quanto maior a capacidade menor o risco empírico
pela complexidade das funções
11
Principio de Minimização de Risco Estrutural
12
Na prática• Útil na definição do procedimento de minimização de
risco estrutural• Mas ...
• Computar a dimensão VC de uma classe de funções geralmente não é uma tarefa trivial.
• Soma-se a isso o fato de que o valor de h poder ser desconhecido ou infinito
13
Para funções Lineares• Relacionamento do risco esperado com a margem
(distância da fronteira de decisão induzida)
14
Erro Marginal• Assim o erro marginal pode ser calculador por:
• Onde I(q) = 1 se q é verdadeiro e I(q) = 0 se q é falso.• Um p elevado implica uma menor termo de capacidade
15
Hiperplano Ótimo• Como conclusão tem-se que:
• deve-se buscar um hiperplano que tenha margem elevada
• e cometa poucos erros marginais, minimizando assim o erro sobre os dados de teste e de treinamento, respectivamente.
• Esse hiperplano é denominado ótimo
16
MVS Lineares (Rígidas)• Definem fronteiras lineares a partir de dados
linearmente separáveis• Hiperplano linear é definido por
• Onde em que w. x é o produto escalar entre os vetores w e x
• w ϵ X é o vetor normal ao hiperplano descrito • b/ ||w|| corresponde à distância do hiperplano em
relação à origem 17
MVS Lineares (Rígidas)• Função g(x) divide o espaço X em duas regiões
18
Função Objetivo• Logo para se obter maximização da margem, deve-se
minimizar a norma de w através de:
19
MVS com Margem Suave• Presença de ruídos e outliers
• Sujeito a restrição:
• Nova função objetivo:
20
MVS não Linear
21
MVS não Linear• Lidam com este problema mapeando o espaço de
treinamento para um novo espaço de maior dimensão demonado feature space
• Através de uma função Ф• Mapeamento da figura anterior realizado por:
22
Função Ф
23
Φ: x→ φ(x)
Funções Kernel Comum
24
Usando SVMnoopencv
Pacote SVMemML• Funções básicas
• train:treina SVMcomparâmetros informados
• trainAuto:descobre parâmetros para SVMetreina
• predict:realiza oteste
Videexemplos
Usando SVMcomlibsvm
LIBSVM• Biblioteca básica comimplementação doSVM(http://www.csie.ntu.edu.tw/~cjlin/libsvm/)• Java• C/C++• Depende depythonpara rodar alguns scripts
• Implementações• Classificação (C-SVC,nu-SVC)• Regressão (episolon-SVR,nu-SVR)• Estimação dedistribuição (one-classSVM)• Utilitários para facilitar oprocesso declassificação
29
Comousar?Classificação• Paraestratégia dividindo treinamento eteste (ou validação)• Colocar abasenoformato .libsvm
• Utilitários básicos (são aplicados na ordem abaixo)1. svm-scale2. subset.py3. grid.py4. svm-train5. svm-predict 30
11:0.12:2.33:1.0-11:0.22:1.33:0.511:0.32:3.33:1.2…
1)svm-scale• Servepara normalizar asvariáveis.Melhora aconvergência dométodo
• Faixas definidas pelos parâmetros –l(lower)e–u(upper)• videoutras opções desalvar…
USO:svm-scale heart_scale >heart_scale.scale
Normaliza entreafaixa -1a1,por padrão.
*https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/heart
31
2)subset.py• Fica na pastatoolsdoaplicativo• Utilizado para gerar basesdetreinamento ebasesdeteste
• deve utilizar oparâmetro –s1para garantir aleatóriedade
USO
tools/subset.py -s1 heart_scale.scale 135traintest
Geraos arquivos trainetest.Trainé usado para treinamento (gridesvm-train)Testé usado para avaliar ametodologia (svm-predict) 32
3)grid.py• Fica na pastatools• Servepara estimar os parâmetros doSVM(Cegama)quandoforutilizado onúcleo radial
USO
tools/grid.py train
33
C Gama Acc
4)svm-train• RealizaotreinamentoSVMcriandoummodelo• Porpadrãousa:
• -ssvm-type=C-SVC(paraclassificação)• -tkernel-type=radial
• DeveserinformadooCegamaobtidosnaetapaanterior• -cXXX• -gYYY
• Podeaplicar–vparavalidaçãocruzadainformandoonúmerodefolds
34
4)svm-trainUSO
svm-train-c8-g0.0078125trainmodelo
Oarquivo modelo gerado representa otreinamento doSVM 35
Representa quantosvetores foram utilizadospara o modelo detreinamento.Quanto menor, melhor(menor dimensão VC)
5)svm-predict• Apartir doarquivo demodelo,usa oarquivo detestparaavaliar ométodo
USO
svm-predicttest modelo rtest
Em rtest é gravado oresultado daclassificação 36
Arquivo rtest
37
• Usado para avaliar os resultados
• Compara cada resposta esperada, com a respost gerada
ok
erro
Quando sedeseja obterProbabilidades• Useoparâmetro –b1 nosvm-trainpara obter asprobabilidades por classe
USO
svm-train–b1-c8-g0.0078125trainmodelo
Paraoheart_scalePerceba que foram usados os mesmos parâmetros dogrid
38
Quando sedeseja obterProbabilidades• eincluir omesmo parâmetro nosvm-predict
USO
svm-predict–b1testmodelo rtest
39
Saída comprobabilidades
40
• Usado paraavaliar osresultados
• Aqui cadalinha tambémcontém o grau de pertinênciaentre classes
ok
Conjuntos desbalanceados?• Desbalanceamento:existem mais representantes daclasse 1doque daclasse 0
• SVMnão necessita deajustes para conjuntos levementedesbalanceados
• Paraconjuntos fortemenente desbalanceados é necessárioajustar aquantidade deerro que pode ser suportada• Ou para conjuntos onde existe uma necessidade maior deacertodeumconjunto em relação ao outro
• Pense:Porque? 41
Weighted SVM• Umadasmaneiras é usando oparâmetro –wi VALOR
• onde i é onúmero daclasse eVALOR aquantidade depeso
• Naprática diz ao classificador quanto irá custar amais errar(VALOR)umindivíduo daclasse I
• Oque muda?
• tools/grid.py -w15train• svm-train-c8–g0.5-w15 trainmodelo
42
Comousar?Regressão• Paraestratégia dividindo treinamento eteste (ou validação)• Colocar abasenoformato .libsvm
• Utilitários básicos (são aplicados na ordem abaixo)1. svm-scale2. subset.py3. gridregression.py4. svm-train5. svm-predict 43
11:0.12:2.33:1.0-11:0.22:1.33:0.511:0.32:3.33:1.2…
1)svm-scale• Servepara normalizar asvariáveis.Melhora aconvergência dométodo
• Faixas definidas pelos parâmetros –l(lower)e–u(upper)• videoutras opções desalvar…
USO:svm-scale body_fat >body_fat.scale
Normaliza entreafaixa -1a1,por padrão.
*https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/bodyfat
44
2)subset.py• Fica na pastatoolsdoaplicativo• Utilizado para gerar basesdetreinamento ebasesdeteste
• deve utilizar oparâmetro –s1para garantir aleatóriedade
USO
tools/subset.py -s1 body_fat.scale 125traintest
Geraos arquivos trainetest.Trainé usado para treinamento (gridregression esvm-train)Testé usado para avaliar ametodologia (svm-predict) 45
3)gridregression.py• Deve ser baixado como add-ondolibsvm• Servepara estimar os parâmetros doSVM(Cegama)quandoforutilizado onúcleo radialedoepsilonpara regressão
USO
tools/gridregression.py train
46
C Gama p mean square error
4)svm-train• Realiza otreinamento SVMcriando ummodelo• Por padrão usa:
• -ssvm-type=epsilon-SVR(para regressão)• -tkernel-type=radial
• Deve ser informado oCegama obtidos na etapa anterior• -cXXX• -gYYY• -pYYY
• Pode aplicar –vpara validação cruzada informando onúmerodefolds
47
4)svm-trainUSO
svm-train–s3 -c4.0-g0.00390625–p0.00390625trainmodelo
Oarquivo modelo gerado representa otreinamento doSVM 48
Representa quantosvetores foram utilizadospara o modelo detreinamento.Quanto menor, melhor(menor dimensão VC)
5)svm-predict• Apartir doarquivo demodelo,usa oarquivo detestparaavaliar ométodo
USO
svm-predicttest modelo rtest
Em rtest é gravado oresultado daclassificação 49
Não é possível exibir esta imagem no momento.
Arquivo rtest
50
• Usado paraavaliar osresultados
• Compara cadarespostaesperada, com a respost gerada
Usando oWeka anosso favor
51
Oque é• Softwarelivre,voltado para amineração dados• Mantenedora principal:UniversityofWaikato(http://www.cs.waikato.ac.nz/ml/weka/)
52
Weka Explorer– Usando SVM• Inicialmente deve ser linkar olibsvm comoweka
• Maneira #1:incluir noclasspath
java-classpath $CLASSPATH:weka.jar:libsvm.jarweka.gui.GUIChooser
• Maneira #2:maior partedasvezes já está incluida nopacotecompleto doweka
53
Weka Explorer
54
Filter• Filter->unsupervised->attribute->Normalize
55
Classify
56
Ajuste deParâmetros• Meta->GridSearch
57
Ajuste deParâmetros• Meta->GridSearch
• classifier:escolha libsvm• evaluation:accuracy(veja seé omelhor para você)• filer:escolha Allfilter (não vamos fazer nenhuma filtragem)
• Em:• Xexpression =pow(BASE,I)• Xmax =15• Xmin =-5• Xproperty =classifier.cost• Xstep =1• Xbase =2
• ….58
Ajuste deParâmetros• Em:
• Yexpression =pow(BASE,I)• Ymax =3.0• Ymin =-15• Yproperty =classifier.gamma• Ystep =1• Ybase =2
• ESALVE!
59
Ajuste deParâmetros
60
Ajuste opercentual!
NovoResultado
61
Parâmetros
62
Detalhe• Parafazer sucessivos treinos etestesnoWeka,combasesaleatórias:• Gerepor fora basesaleatórias para ele
• ou
• Utilizeofiltro Randomize,sempre mudando oseed!!!
63
Referências• Ana Carolina Lorena e André C. P. L. F. de Carvalho.
Uma Introdução às Support Vector Machines • C.J.C. Burges. A tutorial on support vector machines
for pattern recognition. Data Mining and Knowledge Discovery, 2(2):955-974, 1998. http://citeseer.nj.nec.com/burges98tutorial.html
• LIBSVM: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
64