64
Máquinas de Vetores Suporte Visão Computacional

Máquinas de Vetores Suporte

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Máquinas de Vetores Suporte

Máquinas de Vetores SuporteVisão Computacional

Page 2: Máquinas de Vetores Suporte

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

Page 3: Máquinas de Vetores Suporte

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

Page 4: Máquinas de Vetores Suporte

Representação AM

4

Page 5: Máquinas de Vetores Suporte

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

Page 6: Máquinas de Vetores Suporte

Teoria de Aprendizado Estatístico

6Funções representadas pelas curvas de decisãoConjunto de treinamento binário

Page 7: Máquinas de Vetores Suporte

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

Page 8: Máquinas de Vetores Suporte

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

Page 9: Máquinas de Vetores Suporte

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

Page 10: Máquinas de Vetores Suporte

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

Page 11: Máquinas de Vetores Suporte

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

Page 12: Máquinas de Vetores Suporte

Principio de Minimização de Risco Estrutural

12

Page 13: Máquinas de Vetores Suporte

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

Page 14: Máquinas de Vetores Suporte

Para funções Lineares• Relacionamento do risco esperado com a margem

(distância da fronteira de decisão induzida)

14

Page 15: Máquinas de Vetores Suporte

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

Page 16: Máquinas de Vetores Suporte

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

Page 17: Máquinas de Vetores Suporte

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

Page 18: Máquinas de Vetores Suporte

MVS Lineares (Rígidas)• Função g(x) divide o espaço X em duas regiões

18

Page 19: Máquinas de Vetores Suporte

Função Objetivo• Logo para se obter maximização da margem, deve-se

minimizar a norma de w através de:

19

Page 20: Máquinas de Vetores Suporte

MVS com Margem Suave• Presença de ruídos e outliers

• Sujeito a restrição:

• Nova função objetivo:

20

Page 21: Máquinas de Vetores Suporte

MVS não Linear

21

Page 22: Máquinas de Vetores Suporte

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

Page 23: Máquinas de Vetores Suporte

Função Ф

23

Φ: x→ φ(x)

Page 24: Máquinas de Vetores Suporte

Funções Kernel Comum

24

Page 25: Máquinas de Vetores Suporte

Usando SVMnoopencv

Page 26: Máquinas de Vetores Suporte

Pacote SVMemML• Funções básicas

• train:treina SVMcomparâmetros informados

• trainAuto:descobre parâmetros para SVMetreina

• predict:realiza oteste

Page 27: Máquinas de Vetores Suporte

Videexemplos

Page 28: Máquinas de Vetores Suporte

Usando SVMcomlibsvm

Page 29: Máquinas de Vetores Suporte

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

Page 30: Máquinas de Vetores Suporte

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…

Page 31: Máquinas de Vetores Suporte

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

Page 32: Máquinas de Vetores Suporte

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

Page 33: Máquinas de Vetores Suporte

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

Page 34: Máquinas de Vetores Suporte

4)svm-train• RealizaotreinamentoSVMcriandoummodelo• Porpadrãousa:

• -ssvm-type=C-SVC(paraclassificação)• -tkernel-type=radial

• DeveserinformadooCegamaobtidosnaetapaanterior• -cXXX• -gYYY

• Podeaplicar–vparavalidaçãocruzadainformandoonúmerodefolds

34

Page 35: Máquinas de Vetores Suporte

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)

Page 36: Máquinas de Vetores Suporte

5)svm-predict• Apartir doarquivo demodelo,usa oarquivo detestparaavaliar ométodo

USO

svm-predicttest modelo rtest

Em rtest é gravado oresultado daclassificação 36

Page 37: Máquinas de Vetores Suporte

Arquivo rtest

37

• Usado para avaliar os resultados

• Compara cada resposta esperada, com a respost gerada

ok

erro

Page 38: Máquinas de Vetores Suporte

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

Page 39: Máquinas de Vetores Suporte

Quando sedeseja obterProbabilidades• eincluir omesmo parâmetro nosvm-predict

USO

svm-predict–b1testmodelo rtest

39

Page 40: Máquinas de Vetores Suporte

Saída comprobabilidades

40

• Usado paraavaliar osresultados

• Aqui cadalinha tambémcontém o grau de pertinênciaentre classes

ok

Page 41: Máquinas de Vetores Suporte

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

Page 42: Máquinas de Vetores Suporte

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

Page 43: Máquinas de Vetores Suporte

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…

Page 44: Máquinas de Vetores Suporte

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

Page 45: Máquinas de Vetores Suporte

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

Page 46: Máquinas de Vetores Suporte

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

Page 47: Máquinas de Vetores Suporte

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

Page 48: Máquinas de Vetores Suporte

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)

Page 49: Máquinas de Vetores Suporte

5)svm-predict• Apartir doarquivo demodelo,usa oarquivo detestparaavaliar ométodo

USO

svm-predicttest modelo rtest

Em rtest é gravado oresultado daclassificação 49

Page 50: Máquinas de Vetores Suporte

Não é possível exibir esta imagem no momento.

Arquivo rtest

50

• Usado paraavaliar osresultados

• Compara cadarespostaesperada, com a respost gerada

Page 51: Máquinas de Vetores Suporte

Usando oWeka anosso favor

51

Page 52: Máquinas de Vetores Suporte

Oque é• Softwarelivre,voltado para amineração dados• Mantenedora principal:UniversityofWaikato(http://www.cs.waikato.ac.nz/ml/weka/)

52

Page 53: Máquinas de Vetores Suporte

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

Page 54: Máquinas de Vetores Suporte

Weka Explorer

54

Page 55: Máquinas de Vetores Suporte

Filter• Filter->unsupervised->attribute->Normalize

55

Page 56: Máquinas de Vetores Suporte

Classify

56

Page 57: Máquinas de Vetores Suporte

Ajuste deParâmetros• Meta->GridSearch

57

Page 58: Máquinas de Vetores Suporte

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

Page 59: Máquinas de Vetores Suporte

Ajuste deParâmetros• Em:

• Yexpression =pow(BASE,I)• Ymax =3.0• Ymin =-15• Yproperty =classifier.gamma• Ystep =1• Ybase =2

• ESALVE!

59

Page 60: Máquinas de Vetores Suporte

Ajuste deParâmetros

60

Ajuste opercentual!

Page 61: Máquinas de Vetores Suporte

NovoResultado

61

Page 62: Máquinas de Vetores Suporte

Parâmetros

62

Page 63: Máquinas de Vetores Suporte

Detalhe• Parafazer sucessivos treinos etestesnoWeka,combasesaleatórias:• Gerepor fora basesaleatórias para ele

• ou

• Utilizeofiltro Randomize,sempre mudando oseed!!!

63

Page 64: Máquinas de Vetores Suporte

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