110
Programació d’un Graphical User Interface (GUI) per a la Classificació mitjançant Support Vector Machines Enginyeria en Automàtica i Electrònica Industrial AUTORA: Montse GalofrØ DIRECTOR: Eduard Llobet DATA: Abril 2007

Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Programació d’un Graphical User Interface (GUI) per a la Classificació mitjançant Support Vector Machines

Enginyeria en Automàtica i Electrònica Industrial

AUTORA: Montse Galofré

DIRECTOR: Eduard Llobet

DATA: Abril 2007

Page 2: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

2

Índex 1 Objectiu del Projecte ............................................................................................. 9

2 Introducció........................................................................................................... 10

3 Support Vector Machine per a la Classificació ................................................... 11

3.1 Aprenentatge amb Kernels .......................................................................... 11

3.2 Tipus de Classificació.................................................................................. 13

3.2.1 Classificació Linealment Separable..................................................... 13

3.2.2 Classificació no Linealment Separable................................................ 17

3.3 Mètodes de Classificació ............................................................................. 19

3.3.1 Classificació amb Dues Classes .......................................................... 20

3.3.2 Classificació Multi Classe ................................................................... 27

4 Eina d�Utilització del Toolbox de SVM�s........................................................... 30

4.1 Introducció al Graphical User Interface (GUI)............................................ 30

4.2 Introducció a l�Eina Programada amb GUI................................................. 30

4.3 Instalació de l�Eina ...................................................................................... 30

4.4 Pantalla Principal......................................................................................... 31

4.5 Opcions de l�Eina ........................................................................................ 32

4.5.1 Conversió de Dades a Format Intel·ligible de l�Eina.......................... 32

4.5.2 Projecte Nou (New Project)................................................................. 35

4.5.3 Carregar Projecte (Load Project) ......................................................... 49

4.5.4 Salvar Projecte (Save Project) ............................................................. 49

4.5.5 Salvar Projecte Com (Save Project As)............................................... 49

4.5.6 Tancar Projecte (Close Project) ........................................................... 50

4.5.7 Sortir (Exit).......................................................................................... 51

5 Joc de Proves ....................................................................................................... 52

5.1 Linsep.mat ................................................................................................... 52

5.1.1 Test1: linsep......................................................................................... 52

5.1.2 Test2: linsep......................................................................................... 59

5.1.3 Test3: linsep......................................................................................... 63

5.1.4 Test4: linsep......................................................................................... 63

5.2 Test del Iris .................................................................................................. 72

5.2.1 Test 1: Classe 1 contra classes 2 i 3..................................................... 73

5.2.2 Test 2: Classe 2 contra classes 1 i 3..................................................... 82

Page 3: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

3

5.2.3 Test 3: Classe 3 contra classes 1 i 2..................................................... 84

5.2.4 Test 4: Classe 1 contra classe 2 ........................................................... 85

5.2.5 Test 5: Classe 2 contra classe 3 ........................................................... 86

5.2.6 Test 6: Classe 1 contra classe 3 ........................................................... 87

5.2.7 Test 7: Classificació de Mostres. ......................................................... 88

6 Manual User�s Guide........................................................................................... 91

6.1 How to Install and Start the Tool................................................................. 91

6.2 Data Available for the Tool ......................................................................... 93

6.3 Tool Options ................................................................................................ 95

6.3.1 New Project ......................................................................................... 95

6.3.2 Load Project....................................................................................... 103

6.3.3 Save Project ....................................................................................... 103

6.3.4 Save Project As.................................................................................. 104

6.3.5 Close Project...................................................................................... 104

6.3.6 Exit..................................................................................................... 105

7 Comandes Útils de Matlab ................................................................................ 106

7.1 Com Entrar i Sortir de Matlab ................................................................... 106

7.2 Variables i el Workspace........................................................................... 106

7.2.1 Definició de Nombres i Caràcters ..................................................... 106

7.2.2 Examinar Nombres i Caràcters.......................................................... 106

7.2.3 Comandes de Workspace................................................................... 107

7.3 Funcions Matemàtiques............................................................................. 107

7.3.1 Funcions Matemàtiques Bàsiques ..................................................... 107

7.4 Treballar amb Matrius ............................................................................... 107

8 Glossari.............................................................................................................. 109

9 Referències ........................................................................................................ 110

Page 4: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

4

Índex de Figures Figura 1. Dades linealment separables en l�espai de les entrades.............................. 11

Figura 2. Dades no linealment separables en l�espai de les entrades......................... 11

Figura 3. Transformació de dades a l�espai de les característiques ........................... 12

Figura 4. Cas linealment separable ............................................................................ 13

Figura 5. Diferents hiperplans que separen les dades ................................................ 14

Figura 6. Hiperplà òptim, marge màxim.................................................................... 14

Figura 7. Vectors de suport ........................................................................................ 15

Figura 8. Punts del pla positiu i punts del plà negatiu ............................................... 15

Figura 9. Cas linealment no separable ....................................................................... 17

Figura 10. Cas linealment no separable portat a un espai de dimensió més gran ...... 17

Figura 11. Projecció en un espai de dimensions més gran......................................... 18

Figura 12. Cas no separable, variables d�error........................................................... 18

Figura 13. Dimensió variable C ................................................................................. 19

Figura 14. Exemple amb Kernel lineal, mostres 1-100 entrenament ......................... 21

Figura 15. Exemple amb Kernel polinomial, mostres 1-100 entrenament ................ 22

Figura 16. Exemple amb Kernel polinomial, p1=2, mostres 21-120 entrenament .... 23

Figura 17. Exemple amb Kernel Rbf, p1=2, mostres 1-100 entrenament.................. 24

Figura 18. Exemple amb Kernel Spline, mostres 1-100 entrenament........................ 24

Figura 19. Exemple amb Kernel Spline, mostres 21-120 entrenament...................... 25

Figura 20. Exemple amb Kernel Spline, C=1, mostres 1-100 entrenament............... 26

Figura 21. Exemple amb Kernel Spline, C=1000, mostres 1-100 entrenament......... 26

Figura 22. Pantalla presentació programa.................................................................. 31

Figura 23. Pantalla principal programa...................................................................... 32

Figura 24. Format correcte dades............................................................................... 33

Figura 25. Matriu X de característiques..................................................................... 33

Figura 26. Matriu Y de classes................................................................................... 33

Figura 27. Selecció columna ...................................................................................... 34

Figura 28. canviar número de columnes .................................................................... 34

Figura 29. Pegar columna de les classes .................................................................... 34

Figura 30. Projecte Nou ............................................................................................. 35

Figura 31. Selecció dades........................................................................................... 36

Figura 32. Matriu de dades......................................................................................... 36

Figura 33. Pantalla Import Wizard............................................................................. 37

Page 5: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

5

Figura 34. Pantalla selecció matriu de dades sense dades a seleccionar................... 38

Figura 35. Pantalla selecció matriu de dades amb dades a seleccionar ..................... 38

Figura 36. Pantalla preparada per poder treballar ...................................................... 39

Figura 37. Tipus de Kernels a utilitzar....................................................................... 40

Figura 38. Selecció característiques del test .............................................................. 41

Figura 39. Selecció tipus de test a realitzar................................................................ 42

Figura 40. Execució i Plot.......................................................................................... 42

Figura 41. Run exemple 5 classes .............................................................................. 43

Figura 42. Carregar dades noves................................................................................ 44

Figura 43. Classificació de dades noves .................................................................... 44

Figura 44. Indicador d�espera .................................................................................... 47

Figura 45. Opcions elegides, mètode un contra un, exemple_5_classes ................... 48

Figura 46. Opció Salvar Projecte ............................................................................... 49

Figura 47. Opció Salvar Projecte Com ...................................................................... 50

Figura 48. Opció Tancar Projecte .............................................................................. 50

Figura 49. Opció Tancar Projecte_Yes ...................................................................... 51

Figura 50. Opció Sortir .............................................................................................. 51

Figura 51. Linsep prova 1 .......................................................................................... 53

Figura 52. Linsep prova 2 .......................................................................................... 54

Figura 53. Linsep prova 3 .......................................................................................... 55

Figura 54. Linsep prova 4 .......................................................................................... 56

Figura 55. Linsep prova 5 .......................................................................................... 57

Figura 56. Linsep prova 6 .......................................................................................... 58

Figura 57. Linsep prova 7 .......................................................................................... 59

Figura 58. Linsep prova 8 .......................................................................................... 60

Figura 59. Linsep prova 9 .......................................................................................... 61

Figura 60. Linsep prova 10 ........................................................................................ 62

Figura 61. Linsep prova 11 ........................................................................................ 63

Figura 62. Linsep prova 12 ........................................................................................ 72

Figura 63. Iris, Kernel linial, classe 1 contra la resta................................................. 74

Figura 64. Iris, Kernel polinomial de grau 2, classe 1 contra la resta........................ 75

Figura 65. Iris, Kernel polinomial de grau 2, C=10, classe 1 contra la resta ............. 76

Figura 66. Iris, Kernel rbf amb p1=1, classe 1 contra la resta ................................... 77

Figura 67. Iris, Kernel rbf amb p1=2, classe 1 contra la resta ................................... 78

Figura 68. Iris, Kernel spline, classe 1 contra la resta................................................ 79

Page 6: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

6

Figura 69. Iris, Kernel bspline, classe 1 contra la resta.............................................. 80

Figura 70. Iris, Kernel erbf, classe 1 contra la resta................................................... 81

Figura 71. Iris, Kernel anova, classe 1 contra la resta................................................ 82

Figura 72. Iris, Kernel linial, classe 2 contra la resta................................................. 83

Figura 73. Iris, Kernel polinomial, classe 2 contra la resta........................................ 84

Figura 74. Iris, Kernel linial, classe 3 contra la resta................................................. 85

Figura 75. Iris, Kernel linial, classe 1 contra la 2 ...................................................... 86

Figura 76. Iris, Kernel linial, classe 2 contra la 3 ...................................................... 87

Figura 77. Iris, Kernel linial, classe 1 contra la 3 ...................................................... 88

Figura 78. Iris, Kernel spline, classificació de dades................................................. 90

Figura 79. Principal Program Screen ........................................................................ 92

Figura 80. Main Program Screen ............................................................................... 92

Figura 81. Data right format....................................................................................... 93

Figura 82. Data from iris1v23 example ..................................................................... 93

Figura 83. Class from iris1v23 example .................................................................... 94

Figura 84. Select class from iris1v23 example .......................................................... 94

Figura 85. Change number of columns from iris1v23 example................................. 94

Figura 86. Paste the class from iris1v23 example...................................................... 95

Figura 87. New Project Screen................................................................................... 96

Figura 88. Selecció dades........................................................................................... 96

Figura 89. Import Wizard Screen............................................................................... 97

Figura 90. Select Data Matrix Screen ........................................................................ 97

Figura 91. Options enabled after loading data ........................................................... 98

Figura 92. Different Kernels to use............................................................................ 99

Figura 93. Test Features selection............................................................................ 100

Figura 94. Kind of test to do selection ..................................................................... 100

Figura 95. Program execution .................................................................................. 101

Figura 96. Load new data......................................................................................... 101

Figura 97. New Data Classification ......................................................................... 102

Figura 98. Waiting indicator .................................................................................... 103

Figura 99. Save Project Option ................................................................................ 103

Figura 100. Save Project As Option......................................................................... 104

Figura 101. Close Option Project............................................................................. 104

Figura 102. Close Project Option Yes...................................................................... 105

Figura 103. Exit Option............................................................................................ 105

Page 7: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

7

Índex de Taules Taula 1. Exemple amb dues mostres.......................................................................... 20

Taula 2. Característiques Test 1 ................................................................................. 21

Taula 3. Característiques Test 2 ................................................................................. 22

Taula 4. Característiques Test 3 ................................................................................. 22

Taula 5. Característiques Test 4 ................................................................................. 23

Taula 6. Característiques Test 5_1 ............................................................................. 24

Taula 7. Característiques Test 5_2 ............................................................................. 25

Taula 8. Mètode deixar un fora (�leave one out�) ...................................................... 27

Taula 9. Agrupació de classes mètode d�un contra tots ............................................. 27

Taula 10. Classificació d�una dada de la Classe 3 mètode d�un contra tots .............. 28

Taula 11. Agrupació de classes mètode d�un contra un............................................. 28

Taula 12. Classificació d�una dada de la Classe 3 mètode d�un contra un ............... 29

Taula 13. Kernels i paràmetres.................................................................................. 41

Taula 14. Dades exemple_5_classes ......................................................................... 45

Taula 15. Interpretació eina de les dades exemple_5_classes_1............................... 45

Taula 16. Interpretació eina de les dades exemple_5_classes_2............................... 46

Taula 17. Matriu de dades a classificar..................................................................... 46

Taula 18. Interpretació eina de les dades exemple_5_classes_2............................... 46

Taula 19. Dades exemple_5_classes mètode un contra un ....................................... 48

Taula 20. Interpretació eina de les dades exemple_5_classes_1, un contra un......... 49

Taula 21. Dades exemple linsep................................................................................ 52

Taula 22. linsep prova 1 ............................................................................................ 53

Taula 23. linsep prova 2 ............................................................................................ 54

Taula 24. linsep prova 3 ............................................................................................ 55

Taula 25. linsep prova 4 ............................................................................................ 56

Taula 26. linsep prova 5 ............................................................................................ 57

Taula 27. linsep prova 6 ............................................................................................ 58

Taula 28. linsep prova 7 ............................................................................................ 59

Taula 29. linsep prova 8 ............................................................................................ 60

Taula 30. linsep prova 9 ............................................................................................ 61

Taula 31. linsep prova 10 .......................................................................................... 61

Taula 32. linsep prova 11 .......................................................................................... 62

Page 8: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Índex

8

Taula 33. Train and Test Data................................................................................... 63

Taula 34. linsep prova 12 .......................................................................................... 71

Taula 35. Dades exemple iris .................................................................................... 73

Taula 36. Iris, Kernel linial, classe 1 contra la resta. ................................................ 74

Taula 37. Iris, Kernel polinomial, classe 1 contra la resta. ....................................... 75

Taula 38. Iris, Kernel polinomial de grau 2, C=10, classe 1 contra la resta. ............ 76

Taula 39. Iris, Kernel rbf amb p1=1, classe 1 contra la resta.................................... 77

Taula 40. Iris, Kernel rbf amb p1=2, classe 1 contra la resta.................................... 77

Taula 41. Iris, Kernel spline, classe 1 contra la resta. ............................................... 78

Taula 42. Iris, Kernel bspline, classe 1 contra la resta. ............................................. 79

Taula 43. Iris, Kernel erbf, classe 1 contra la resta. .................................................. 80

Taula 44. Iris, Kernel anova, classe 1 contra la resta. ............................................... 81

Taula 45. Iris, Kernel linial, classe 2 contra la resta. ................................................ 82

Taula 46. Iris, Kernel polinomial, classe 2 contra la resta. ....................................... 83

Taula 47. Iris, Kernel lineal, classe 3 contra la resta................................................. 84

Taula 48. Iris, Kernel lineal, classe 1 contra la 2. ..................................................... 85

Taula 49. Iris, Kernel lineal, classe 2 contra la 3. ..................................................... 86

Taula 50. Iris, Kernel lineal, classe 1 contra la 3. ..................................................... 87

Taula 51. Dades per entrenar del iris ........................................................................ 89

Taula 52. Iris, Kernel spline, classificació de dades ................................................. 89

Taula 53. Dades a classificar del iris......................................................................... 90

Taula 54. Kernels and parameters........................................................................... 100

Taula 55. Examinar nombres i caràcters .................................................................. 106

Taula 56. Comandes de Workspace ......................................................................... 107

Taula 57. Funcions Matemàtiques ........................................................................... 107

Taula 58. Treballar amb Matrius.............................................................................. 108

Taula 59. Comandes de Matlab................................................................................ 108

Page 9: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Objectiu del Projecte

9

1 Objectiu del Projecte

L�objectiu d�aquest projecte és la implementació d�una eina, programada utilitzant el Graphical User Interface que proporciona Matlab. Aquesta eina permet utilitzar el toolbox per a la classificació de Support Vector Machines (SVM�s) d�una manera ràpida, còmode i senzilla.

Aquest entorn hauria de servir per les assignatures de Sensors i Actuadors o Sistemes de Percepció del Màster de Recerca en Enginyeria Electrònica.

A més, farem una introducció a la classificació dels SVM�s amb l�objectiu de tenir uns coneixements bàsics per poder utilitzar l�eina i crearem un �Manual User�s Interface� en anglès que serà un manual d�utilització de l�eina programada.

Page 10: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Introducció

10

2 Introducció

Els Support Vector Machines són un grup de mètodes d�aprenentatge supervisats utilitzats per a la classificació i la regressió.

Van ser introduïts a mitjans dels anys 60 però no van ser considerats seriosament fins als 90 quan els resultats obtinguts van començar a ser bons. Actualment, els SVMs donen resultats comparables o inclús millors que les xarxes neuronals i que altres models estadístics.

La idea principal dels SVMs consisteix en, a partir de dues classes diferents de dades, buscar un hiperplà lineal òptim que separi les dues classes. Mentre que per classes linealment separables l�hiperplà es calcula en l�espai d�entrada original, per classes no linealment separables el SVM aplica una transformació no lineal en l�espai d�entrada i el transforma en un espai de dimensions més grans (espai de les característiques) on les dades sí són linealment separables. En aquest espai, es construeix un hiperplà òptim que separa les dues classes de manera que, els vectors que pertanyen a classes diferents es troben a diferents costats del hiperplà, i a més, la distància entre els vectors més pròxims a l�hiperplà és màxima. Aquesta transformació es pot aconseguir aplicant diferents kernels no lineals com el polinomial, el rbf o les funcions spline.

L�aprenentatge supervisat consisteix en, partint d�un conjunt de dades que pertanyen a diferents classes conegudes, trobar un algoritme que classifiqui aquestes dades, de forma que quan tenim una dada nova de la que no sabem a quina classe pertany la poguem classificar aplicant-li aquest algoritme.

Algunes de les característiques més importants dels SVMs són les següents:

• És una tècnica per a la classificació de dades.

• Existeix aprenentatge.

• És més senzill d�utilitzar que les xarxes neuronals.

• Treballen en un �espai de característiques� induït pel Kernel.

• El Kernel realitza la separació i el trasllat de les mostres a l�espai de característiques.

• Minimitzen l�error de classificació i en maximitzen el marge geomètric.

• No són paramètrics. Els paràmetres dels models no estan predefinits i el seu nombre depèn de les dades d�entrenament disponibles. El que es busca durant l�entrenament del procés és juntar la capacitat del model amb la complexitat de les dades.

• L�error d�entrenament és fix i l�interval d�estimació d�error és mínim.

• Tot i que inicialment van ser desenvolupats per solucionar problemes de classificació, els SVMs poden ser aplicats satisfactòriament en regressions.

• Existeixen pocs paràmetres a ajustar, el model només depèn de les dades amb major informació, són els anomenats vectors de suport.

Page 11: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

11

3 Support Vector Machine per a la Classificació

Podem dividir les tasques de classificació en dos grans grups:

• Tasques d�aprenentatge

� Dades inicials: partim d�un perfil definit entre dues classes diferents. Per exemple, persones sanes i persones amb grip.

� Resultats: obtenim un model que distingeix entre les dues classes (classe 1: persones sanes; classe -1: persones amb grip).

• Tasques de classificació

� Dades inicials: tenim un nou perfil que no sabem a quina de les dues classes pertany i un model d�aprenentatge.

� Resultats: obtenim la classe a la que pertany el nou perfil (si el pacient nou té la grip o no).

3.1 Aprenentatge amb Kernels Suposem que tenim un problema de classificació binaria. Quan ens arriba un nou

perfil volem saber si pertany a una de les dues possibles classes {+1,-1}.

Podem tenir dos casos:

1.- Dades linealment separables en l�espai de les entrades (espai al que pertanyen les dades inicials) com es mostra a la figura següent:

Figura 1. Dades linealment separables en l�espai de les entrades

2.- Dades no linealment separables en l�espai de les entrades com mostra la figura següent:

Figura 2. Dades no linealment separables en l�espai de les entrades

Page 12: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

12

En aquest segon cas el que fem és portar les dades a un espai de dimensions més gran anomenat espai de les característiques on les dades esdevenen linealment separables, com podem veure en la figura següent:

Figura 3. Transformació de dades a l�espai de les característiques

Aquesta transformació la farem mitjançant una funció Kernel. En termes generals la funció Kernel la podem escriure així:

)()(),( jiji xxxxK φφ ⋅= (1)

Anomenarem Kernel a una mesura de semblança entre un conjunt d�atributs.

Pensant que els valors dels atributs els podem representar amb vectors, una mesura simple de semblança podria ser el producte d�aquests vectors [ ] [ ]ii

N

ixxxx '

1', ∑ == on

[ ]ix , representa el i-èsim element del vector x.

El mètode Kernel consisteix en aplicar una funció de distància no lineal que transforma l�espai original i que permet crear hiperplans o funcions lineals que siguin capaços de discriminar les classes.

A la pràctica, és probable que no existeixi un hiperplà que separi perfectament les dues classes, possiblement degut a soroll. Per aquest motiu considerarem la variable d�holgura ξi.

Existeixen diferents tipus de kernels. S�ha estudiat que els següents kernels amb una selecció adequada de paràmetres donen SVM amb resultats molt semblants:

- Polinomial: dxxxxk ',)',( =

- Gaussià rbf: )2

'exp()',( 2

2

σxx

xxk−

−=

- Sigmoide: )',tanh()',( θ+= xxkxxk

Page 13: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

13

3.2 Tipus de Classificació Una tasca de classificació implica un entrenament i un test d�un conjunt de dades,

cadascuna de les quals conté la classe a la que pertany i diferents atributs. L�objectiu dels SVM�s és com ja hem dit anteriorment produir un model que predeeixi la classe a la que pertany una dada que conté només atributs i que no sabem a quina classe pertany.

Suposem que tenim un problema de classificació binària on les dades d�entrenament tenen el següent format:

( ) ( ) ( ),,;...;,;, 2211 pp yxyxyx ,nx ℜ∈ { }1,1 −+∈y (2)

Cadascuna d�aquestes dades d�entrenament conté dos atributs i pertany a una de les dues possibles classes, la +1 o la -1.

3.2.1 Classificació Linealment Separable

Un classificador s�anomena linealment separable quan podem trobar una funció lineal que separa les dades de cadascuna de les classes. Per exemple, en la Figura 4 observem com les dues classes es poden separar fàcilment mitjançant un hiperplà lineal.

Figura 4. Cas linealment separable

L�hiperplà de separació en l�espai d�entrada es defineix com una funció que té la següent forma:

bxwbxwhiperpla ii

n

i+∑=+⟩⟨=

=1, ℜ∈ℜ∈ bw n , (3)

Els valors dels paràmetres w i b són els que defineixen l�hiperplà i es troben durant la fase d�entrenament on es defineix el millor hiperplà de separació de les dades.

Si observem la Figura 5 veiem un exemple de diferents hiperplans que compleixen la condició de separar les dades.

Page 14: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

14

Figura 5. Diferents hiperplans que separen les dades

De totes aquestes possibles solucions ens interessa trobar l�hiperplà òptim, és a dir, l�hiperplà en el qual el marge és màxim.

Definim marge com la mínima distància entre els punts d�entrenament més pròxims i l�hiperplà.

Figura 6. Hiperplà òptim, marge màxim

Un altre concepte important a tenir en compte són els Vectors de Suport. Anomenem Vectors de Suport o �Support Vectors� als punts més pròxims a l�hiperplà de separació. La resta de punts de cadascuna de les classes no tenen influència. Observant la Figura 7 veiem que els Vectors de Suport corresponen als quadrats/cercles més grans.

Page 15: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

15

Figura 7. Vectors de suport

Tenim que l�hiperplà que ens separa les dades complirà:

Pla negatiu { }1: +=+⋅= bxwx (4)

Pla positiu { }1: −=+⋅= bxwx (5)

Les dades es classifiquen pertanyents a la Classe + 1 si:

1+≥+⋅ bxw (6)

i es classifiquen pertanyents a la Classe -1 si:

1−≤+⋅ bxw (7)

Per tant, ajuntant les equacions (6) i (7) tenim que es compleix:

11 <+⋅<− bxw (8)

Figura 8. Punts del pla positiu i punts del plà negatiu

D�aquestes equacions tenim que el vector w és perpendicular al pla positiu i al pla negatiu. Volem obtenir M en funció de w i de b.

Suposem x- un punt del pla negatiu i x+ el punt del pla positiu més pròxim al punt x-

com es mostra a la Figura 8. Llavors tenim que:

1+=+⋅ + bxw (9)

1−=+⋅ − bxw (10)

wxx ⋅+= −+ λ per algun valor de λ . (11)

Page 16: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

16

Mxx =− −+ (12)

Ara ens és fàcil obtenir M en termes de w i de b. Agafem les equacions (9) i (11) tenim que:

1)( =+⋅+⋅ − bwxw λ (13)

1=⋅⋅++⋅ − wwbxw λ (14)

11 =⋅⋅+− wwλ (15)

ww ⋅=

2λ (16)

wwwwwwwwwwxxM

⋅=

⋅⋅

=⋅=⋅=⋅=−= −+ 22λλλ (17)

Per tant, perquè el marge sigui màxim hem de minimitzar w.

wwwM 22

=⋅

= (18)

Maximitzar el marge és el mateix que minimitzar )(21 wwt ⋅ on t és l�operador

transposat. Així el problema d�aprenentatge consistirà en minimitzar )(21 wwt ⋅ .

Les dades d�entrenament que estan més pròximes a l�hiperplà de separació són els vectors de suport que satisfan:

1)( =+⋅ bxwy it

i , i=1,..., k (19)

On k és el nombre de vectors de suport. La resta de dades d�entrenament satisfan la següent inequació:

1)( >+⋅ bxwy it

i , i=1,..., l (20)

On l+k és el número total de dades d�entrenament.

Per tant el problema d�aprenentatge consisteix en minimitzar )(21 wwt ⋅ sota les

equacions (19) i (20). Això es un clàssic problema d�optimització quadràtica que es soluciona mitjançant el punt de sella de la funció de Lagrange:

[ ]∑=

−+⋅−⋅=p

ii

tii

t bxwywwbwL1

1)(21),,( αα (21)

On iα són els multiplicadors de Lagrange.

Page 17: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

17

3.2.2 Classificació no Linealment Separable En la Figura 9 veiem un clar exemple de dues classes que no es poden separar de

forma lineal.

En aquest cas, una de les dades que pertany a la Classe 1 està al costat de l�hiperplà on hi ha les dades de la Classe -1. Per tant, aquest és un cas en el que linealment no podríem trobar una solució.

Figura 9. Cas linealment no separable

Quan les classes no són linealment separables en l�espai d�entrada, hem de projectar les dades d�entrenament en un espai de dimensió més gran mitjançant una funció )(xφ i aplicar el mateix mètode d�aprenentatge descrit anteriorment. En molts casos les dades esdevenen linealment separables com podem veure en l�exemple de la Figura 10.

Figura 10. Cas linealment no separable portat a un espai de dimensió més gran

En aquests casos hem d�utilitzar diferents funcions kernels per tal de trobar una solució separable de les dades. Els kernels més utilitzats són el polinomial i el rbf (Radial Basis Function).

Així, dintre de la Classificació no lineal podem dividir els problemes en dos:

3.2.2.1 Casos Separables

Són els casos on, al canviar les dades a un espai de dimensió més gran, es pot trobar una solució lineal per la separació de les dades.

Page 18: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

18

Com més gran sigui l�espai de dimensions on treballem, més gran és la probabilitat de trobar una funció que separi les dades linealment. En la Figura 11 podem veure un altre exemple de projecció de dades en un espai de dimensions més gran.

Figura 11. Projecció en un espai de dimensions més gran

3.2.2.2 Casos no Separables

Són els casos on al canviar les dades a un espai de dimensió més gran, no trobem una solució lineal per la separació de les dades. En aquests casos associem a cada dada una variable de error ξi que indica si la dada està ben classificada o no, de forma que si ξi=0 la dada està ben classificada i en cas contrari, és a dir, quan ξi≠0 està mal classificada.

En aquests casos el plantejament és similar als dels casos separables però incloent la variable d�holgura que quantifica l�error de cadascuna de les dades.

L�objectiu és trobar el marge màxim i l�error mínim.

Per exemple, suposem el cas de Figura 12.

Figura 12. Cas no separable, variables d�error

En aquests casos el que hem de minimitzar és:

∑=

+⋅R

k

t iCww1

)(21 ξ (22)

On C és un paràmetre de penalització que permet dintre, del conjunt d�entrenament, tenir mesures mal classificades. El valor C normalment serà molt gran ja que vol dir que li demanen a la funció que sigui separable.

La diferencia entre una C gran i una C petita la podem veure a la Figura següent:

Page 19: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

19

Figura 13. Dimensió variable C

De forma que:

ibxw k ξ−≥+⋅ 1 si 1=yi (23)

ibxw k ξ+−≤+⋅ 1 si 1−=iy (24)

0≥iξ , i∀ (25)

3.3 Mètodes de Classificació Per explicar els mètodes de classificació ho farem utilitzant un exemple.

Suposem que volem classificar dos tipus de dades. Tenim 120 mostres amb dues característiques o atributs per mostra (Caract.1, Caract.2), on 77 pertanyen a la classe 1 i 43 a la classe -1 (veure Taula 1).

Dades

Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe1 3.9 1.4 -1 41 6.1 2.5 1 81 1.5 0.4 1 2 3.7 1 -1 42 1.5 0.4 1 82 1.7 0.4 1 3 4.5 1.5 -1 43 5.1 1.8 1 83 5.8 1.8 1 4 1.5 0.3 1 44 5.9 2.1 1 84 4.7 1.2 -1 5 4.5 1.5 -1 45 6 1.8 1 85 1.6 0.2 1 6 1.5 0.2 1 46 4.5 1.4 -1 86 4.6 1.5 -1 7 6 2.5 1 47 1.5 0.1 1 87 5.1 1.5 1 8 3.3 1 -1 48 4.8 1.8 -1 88 1.1 0.1 1 9 6.7 2 1 49 5.9 2.3 1 89 1.4 0.2 1

10 4.8 1.8 1 50 4 1.3 -1 90 1.7 0.3 1 11 3 1.1 -1 51 3.5 1 -1 91 1.6 0.4 1 12 4.4 1.3 -1 52 5.6 2.1 1 92 4 1 -1 13 1.5 0.2 1 53 4.9 1.4 -1 93 4 1.3 -1 14 1.9 0.2 1 54 5.1 2 1 94 5.7 2.1 1 15 1.3 0.3 1 55 1.5 0.4 1 95 6.7 2.2 1 16 1.5 0.2 1 56 6.1 2.3 1 96 4.4 1.2 -1 17 5 1.9 1 57 1.6 0.2 1 97 4.5 1.6 -1 18 4 1.3 -1 58 5.2 2 1 98 6.3 1.8 1 19 1.4 0.3 1 59 4.1 1.3 -1 99 5.3 1.9 1 20 5.8 2.2 1 60 1.5 0.1 1 100 1.5 0.2 1 21 4.3 1.3 -1 61 6.4 2 1 101 4.1 1 -1 22 5.1 2.4 1 62 4.5 1.5 -1 102 4.7 1.4 -1 23 5.1 1.6 -1 63 1.4 0.2 1 103 4 1.2 -1

Page 20: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

20

24 4.8 1.8 1 64 1.4 0.2 1 104 1.4 0.2 1 25 6.6 2.1 1 65 4.6 1.4 -1 105 1.6 0.2 1 26 5.1 1.9 1 66 5.5 1.8 1 106 4.9 1.5 -1 27 5.6 1.4 1 67 1.4 0.2 1 107 1.9 0.4 1 28 5 1.7 -1 68 4.7 1.4 -1 108 5.6 2.4 1 29 1.7 0.5 1 69 1.7 0.2 1 109 1.4 0.2 1 30 1.5 0.2 1 70 4.7 1.6 -1 110 1.2 0.2 1 31 1.3 0.2 1 71 1.5 0.2 1 111 5.6 2.2 1 32 1.6 0.2 1 72 4.8 1.4 -1 112 4.9 1.8 1 33 4.5 1.5 -1 73 3.5 1 -1 113 4.7 1.5 -1 34 1.4 0.2 1 74 4.5 1.7 1 114 4.1 1.3 -1 35 5.6 2.4 1 75 1.4 0.1 1 115 1.6 0.2 1 36 1.6 0.6 1 76 6.1 1.9 1 116 4.9 1.5 -1 37 3.9 1.2 -1 77 3.9 1.1 -1 117 4.2 1.5 -1 38 1.3 0.2 1 78 5.5 2.1 1 118 5.8 1.6 1 39 5.5 1.8 1 79 1.3 0.2 1 119 5.1 2.3 1 40 3.3 1 -1 80 3.8 1.1 -1 120 4.6 1.3 -1

Taula 1. Exemple amb dues mostres

3.3.1 Classificació amb Dues Classes A l�hora de fer la classificació quan tenim dues classes podem utilitzar el mètode

d�entrenament i test, que és el més comú, o el mètode de deixar-ne un fora (�leave one out�).

3.3.1.1 Mètode d’Entrenament i Test:

Aquest mètode consisteix en fer un entrenament amb dades conegudes (dades que sabem a quina classe pertanyen), i trobar una funció de classificació de forma que quan ens arribi una nova variable que no sabem a quina classe pertany, aplicant la funció obtinguda, la podem classificar correctament.

Segons l�exemple de la Taula 1 les passes que farem seran:

1) Dividir les dades en dues parts: una contindrà el 90% de les dades i l�utilitzarem per entrenar el sistema i la resta, l�altre 10%, l�utilitzarem per fer el test.

2) Agafarem el 90% de les dades i farem l�entrenament del sistema, obtenint una funció de classificació que ens classificarà cada mostra amb la seva classe coneguda.

3) Agafarem el 10% restant de les mostres que hem aparcat per fer el test, i amb la funció obtinguda en l�entrenament (pas 2), veurem com ens classifica aquestes noves dades. Al fer el test, encara que nosaltres sabem la classe a la que pertany la dada, no la passem a la funció de classificació.

4) Com que de les dades utilitzades per fer el test coneixem la classe a la que pertanyen, podrem veure si la classificació ha estat correcte o no.

5) Per tal de buscar una bona funció de classificació farem diferents tests variant les mostres utilitzades. D�aquesta manera la funció de classificació que obtindrem serà millor.

A continuació, detallem la realització de 5 proves d�entrenament i test i els resultats obtinguts aplicant diferents kernels i variant les mostres agafades tant d�entrenament com de test.

Page 21: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

21

Test 1:

El primer test que farem consistirà en agafar les 100 primeres mostres per fer l�entrenament, i les darreres 20 per fer el test. El kernel que utilitzarem serà un kernel lineal pel qual no necessitem definir cap paràmetre apart del paràmetre C. Aquest paràmetre és un paràmetre de penalització que permet, dintre del conjunt d�entrenament, tenir mesures mal classificades. El valor C normalment serà un valor molt gran, quant més gran millor, ja que voldrà dir que li demanem a la funció que sigui separable. En aquest cas, li hem donat un valor infinit. Un resum de les condicions del test i dels resultats obtinguts el trobem a la Taula 2 i a la Figura 14.

Entrenament Mostra1 � Mostra100 Test Mostra101 � Mostra120 Tipus de Kernel Lineal Paràmetres C=inf. Classificació obtinguda 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 Error de Classificació 10 elements (de 20)

Taula 2. Característiques Test 1

Figura 14. Exemple amb Kernel lineal, mostres 1-100 entrenament

Observant els resultats i la Figura 14 podem veure que aquest kernel utilitzat no ens fa una bona classificació de les dades, ja que veiem que hi ha dades d�ambdós colors als dos costats del hiperplà, per tant, la separació de les dades la considerem dolenta.

Test 2:

En aquest segon test, descartem el Kernel lineal ja que, hem vist en el test anterior que amb les mostres que tenim, no obtenim una bona classificació i provem el polinomial, utilitzant les mateixes dades tant per l�entrenament com per el test que en el Test 1, és a dir, les 100 primeres mostres per l�entrenament i les darreres 20 pel test com indica la taula 3.

Page 22: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

22

En aquest cas, apart del paràmetre C, també hem de definir el paràmetre P1 que és un paràmetre necessari a l�utilitzar el kernel polinomial. En el Kernel polinomial, el paràmetre P1 defineix el grau del polinomi.

Entrenament Mostra1 � Mostra100 Test Mostra101 � Mostra120 Tipus de Kernel Polinomial Paràmetres C=inf. , P1 = 2 Classificació obtinguda -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 Error de Classificació Error: 0 elements (de 20)

Taula 3. Característiques Test 2

Figura 15. Exemple amb Kernel polinomial, mostres 1-100 entrenament

En aquest test podem veure que el kernel polinomial utilitzat ens classifica correctament les dades ja que obtenim un error nul en la classificació. Però per estar-ne segurs que el kernel utilitzat és bo continuem fent més tests canviant les mostres utilitzades per fer l�entrenament i el test.

Test 3:

En aquest test continuem utilitzant el kernel polinomial que de moment ens ha donat bons resultats i el que fem és canviar les mostres i variar les dades que hem agafat com entrenament i com a test. Això ho podem veure a la Taula 4.

Entrenament Mostra21 � Mostra120 Test Mostra1 � Mostra20 Tipus de Kernel Polinomial Paràmetres C=inf. , P1 = 2 Classificació obtinguda -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 Error de Classificació 2 elements (de 20)

Taula 4. Característiques Test 3

Page 23: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

23

En aquesta prova utilitzem unes dades diferents per fer l�entrenament. Podem veure que el kernel polinomial utilitzat no ens classifica correctament les dades. És important doncs, fer un bon entrenament de les dades. Si ens haguéssim quedat només amb el Test 2 pensaríem que el kernel polinomial ens donava una bona classificació, però analitzant el Test 3 veiem que no és així. Ens classifica correctament una bona part de les dades, però no totes.

Figura 16. Exemple amb Kernel polinomial, p1=2, mostres 21-120 entrenament

Test 4:

Com que no hem obtingut una bona classificació ni amb el kernel lineal ni amb el polinomial, utilitzem un altre tipus de kernel i tornem a fer l�aprenentatge de les dades com detallem en la taula 6. En aquest cas farem servir el kernel gaussià radial basis function o el que és el mateix (rbf)

Per aquest tipus de Kernel, el paràmetre P1 defineix l�amplada del rbf (radial basis function, és a dir, sigma).

Entrenament Mostra1 � Mostra100 Test Mostra101 � Mostra120 Tipus de Kernel Rbf Paràmetres C=inf., P1 = 2 Classificació obtinguda -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 Error de Classificació 2 elements (de 20)

Taula 5. Característiques Test 4

Page 24: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

24

Figura 17. Exemple amb Kernel Rbf, p1=2, mostres 1-100 entrenament

La classificació que obtenim, de moment, tampoc la podem donar com a bona ja que hi ha dos dades que no ens classifica correctament.

Test 5:

Provem ara amb un kernel Spline:

Entrenament Mostra1 � Mostra100 Test Mostra101 � Mostra120 Tipus de Kernel Spline Paràmetres C=inf. Classificació obtinguda -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 Error de Classificació 0 elements (de 20)

Taula 6. Característiques Test 5_1

Figura 18. Exemple amb Kernel Spline, mostres 1-100 entrenament

Page 25: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

25

Veiem que ens ha fet una bona classificació de totes les dades de test, per tant, de moment és una bona opció. Continuem però entrenant el sistema i comprovant si canviant les dades seguim obtenint bons resultats.

Entrenament Mostra21 � Mostra120 Test Mostra1 � Mostra20 Tipus de Kernel Spline Paràmetres C=inf. Classificació obtinguda -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 Error de Classificació 0 elements (de 20)

Taula 7. Característiques Test 5_2

Figura 19. Exemple amb Kernel Spline, mostres 21-120 entrenament

En aquest cas també ens ha classificat correctament les dades. Per tant, de moment podem dir que el kernel spline és el que ens fa una millor classificació. De totes formes, hem de continuar entrenant el sistema per veure que realment aquesta és una bona opció.

Hem pogut veure en tots els exemples que a part del paràmetre p1 també tenim el paràmetre C i, en tots els casos, a aquest li hem donat un valor infinit. La variable C és una variable de penalització per permetre dintre del conjunt d�entrenament tenir mesures mal classificades. El valor C normalment serà un valor molt gran, i quant més gran millor ja que vol dir que li demanem a la funció que sigui separable. En aquest últim cas, és a dir, si haguéssim ficat un valor petit de C, la gràfica que haguéssim obtingut és la següent:

Page 26: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

26

Figura 20. Exemple amb Kernel Spline, C=1, mostres 1-100 entrenament

Figura 21. Exemple amb Kernel Spline, C=1000, mostres 1-100 entrenament

Podem observar que en aquest cas la classificació no és tan acurada com quan C té un valor gran.

3.3.1.2 Mètode de deixar un fora (‘leave one out’)

Aquest mètode consisteix bàsicament en fer el mateix que en el mètode d�entrenament i test però utilitzant totes les dades menys una per fer l�entrenament i testejar la dada que no hem utilitzat per fer el test.

Suposem que tenim les N mostres. Els tests que faríem serien:

Page 27: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

27

Cas Mostres per l’entrenament Mostres pel test

Cas 1 Mostra1, mostra2, ... mostra N-1 Mostra N Cas 2 Mostra1, mostra2, ... mostra N-2, mostra N Mostra N-1 Cas 3 Mostra1, mostra2, ... mostra N-1, mostra N Mostra N-2 ... ... ... Cas N-1 Mostra1, mostra3, ... mostra N Mostra 2 Cas N Mostra2, mostra3, ... mostra N Mostra 1

Taula 8. Mètode deixar un fora (�leave one out�)

3.3.2 Classificació Multi Classe Els dos mètodes més utilitzats per fer la classificació quan treballem amb més de

dues classes són:

1) Un contra tots.

2) Un contra un.

3.3.2.1 Mètode d’un contra tots:

Aquest mètode consisteix en agrupar les N classes en dues i aplicar el mateix mètode que fem servir quan tenim dues classes (mètode d�entrenament i test o bé mètode de deixar un fora) de la següent forma.

Suposem que tenim N classes (classe 1, classe2, ...classe N). Podem agrupar les N classes en dues, de diferents maneres i fer la classificació per cadascuna de les diferents possibilitats.

Agrupem les N classes en 2 de la següent forma:

Cas Classe

Cas 1 Classe 1� = Classe 1 Classe 2� = Classe 2 + Classe 3 + � + Classe N Cas 2 Classe 1� = Classe 2 Classe 2� = Classe 1 + Classe 3 + � + Classe N Cas 3 Classe 1� = Classe 3 Classe 2� = Classe 1 + Classe 2 + Classe 4 + � + Classe N … � Cas N Classe 1� = Classe N Classe 2� = Classe 1+ Classe 2 + � + Classe (N-1)

Taula 9. Agrupació de classes mètode d�un contra tots

Per cadascun d�aquests casos obtindrem una funció de classificació diferent de forma que cadascuna ens permetrà classificar les dades pertanyents a una determinada classe. En el cas que ens arribi una mostra que pertany a una determinada classe, per classificar-la hauríem de fer l�estudi de tots els casos i veure com queda classificada. Per donar-la com a bona l�ha de classificar correctament en tots els casos.

Per exemple, si la dada pertanyés a la classe 3, llavors la classificació que hauríem d�obtenir seria la següent:

Page 28: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

28

Cas Classe Resultat

Cas 1 Classe 1� = Classe 1 Classe 2� = Classe 2 + Classe 3 + � + Classe N

Classe 2�

Cas 2 Classe 1� = Classe 2 Classe 2� = Classe 1 + Classe 3 + � + Classe N

Classe 2�

Cas 3 Classe 1� = Classe 3 Classe 2� = Classe 1 + Classe 2 + Classe 4 + � + Classe N

Classe 1�

… � � Cas N Classe 1� = Classe N Classe 2� = Classe 1+ Classe 2 + � + Classe (N-1)

Classe 2�

Taula 10. Classificació d�una dada de la Classe 3 mètode d�un contra tots

La classificació en el cas 1, al ser una dada pertanyent a la classe 3 l�hauria de ficar a la classe 2�, ja que la classe 3 està englobada dins de la classe 2�. En el cas 2, també ens l�hauria de classificar dins la classe 2� perquè la classe 3 pertany a la classe 2�. En el cas 3, en canvi, la classificació hauria de donar com a resultat la classe 1�, ja que en aquest cas, és la classe 3 la que pertany a la classe 1�. En la resta de casos, sempre hauríem d�obtenir com a resultat una classificació dins la classe 2�.

3.3.2.2 Mètode d’un contra un:

Aquest mètode consisteix en agafar les N classes i fer l�entrenament i el test de totes les combinacions de dues classes de la següent forma:

Cas Classe

Cas 1 Classe 1� = Classe 1 Classe 2� = Classe 2 Cas 2 Classe 1� = Classe 1 Classe 2� = Classe 3 Cas 3 Classe 1� = Classe 1 Classe 2� = Classe 4 … � Cas N Classe 1� = Classe (N-1) Classe 2� = Classe N

Taula 11. Agrupació de classes mètode d�un contra un

Aquest és un sistema de vot. La classificació d�una dada pertanyent a la classe 3 ens hauria de donar el següent per considerar-la com a bona:

Cas Classe Resultat

Classe 1� = Classe 1 Cas 1 Classe 2� = Classe 2

indeterminat

Cas 2 Classe 1� = Classe 1 Classe 2�

Page 29: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Support Vector Machine per a la Classificació

29

Classe 2� = Classe 3 Classe 1� = Classe 1 Cas 3 Classe 2� = Classe 4

indeterminat

… � � Classe 1� = Classe 2 Cas R Classe 2� = Classe 3

Classe 2�

Classe 1� = Classe 3 Cas R+1 Classe 2� = Classe 4

Classe 1�

Cas R+2 Classe 1� = Classe 3 Classe 2� = Classe 5

Classe 1�

... ... ... Cas N Classe 1� = Classe (N-1) Classe 2� = Classe N

indeterminat

Taula 12. Classificació d�una dada de la Classe 3 mètode d�un contra un

Page 30: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

30

4 Eina d’Utilització del Toolbox de SVM’s

4.1 Introducció al Graphical User Interface (GUI) Una GUI en Matlab està format bàsicament per dos components:

1.- Un fitxer de Matlab amb extensió *.fig que mostra l�interfície de l�usuari.

2.- Un fitxer de Matlab amb extensió *.m que executa el Gui en background.

Els fitxer *.fig i el *.m estan associats per un nom comú, com per exemple mygui.fig i mygui.m. Quan un usuari interactua amb els controls de l�interfície, Matlab busca en el fitxer associat *.m instruccions de com actualitzar la interfície.

Matlab proporciona un entorn per programar aquests GUIs, anomenat Guide. Guide té la seva pròpia terminologia. Els �sliders�, �push buttons�, �text boxes�, etc són controls d�interfície per l�usuari que determinen com l�usuari pot i no pot interactuar amb el programa en el fitxer *.m.

Un canvi en l�estat de la interfície de control de l�usuari és un event. La part de codi específic del fitxer *.m, que és el responsable d�actualitzar la interfície quan l�estat d�un control canvia, s�anomena �callback� o crida per aquest control. El fitxer *.m junta totes les crides del GUI i afegeix el codi d�inicialització.

4.2 Introducció a l’Eina Programada amb GUI

Hem creat una eina a través del Guide de Matlab. Aquesta eina ha estat programada utilitzant la versió de Matlab 6.5, per tant es podrà utilitzar en versions de Matlab 6.5 i superiors.

L�objectiu de l�eina és permetre treballar amb el toolbox de SVM d�una manera més ràpida, senzilla i còmode a l�actual. En aquests moments no hi ha cap interfície per poder treballar amb el toolbox i cada usuari ha de programar manualment els tests a realitzar. Amb aquesta eina serà molt ràpid i senzill obtenir resultats de classificació per al posterior anàlisi.

4.3 Instalació de l’Eina Tenim l�eina en format zip amb el nom SVM_Tool.zip.

Aquest zip conté les següents carpetes i fitxers:

• Carpeta svm_functions. Aquesta carpeta conté el toolbox de SVM

• Fitxers que tenen relació directa amb el GUI:

svm_gui.fig

svm_gui.m

svm_close.fig

svm_close.m

svm_exit.fig

Page 31: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

31

svm_exit.m

svm_parameters.fig

svm_parameters.m

svm_plot.fig

svm_plot.m

svm_saved.fig

svm_saved.m

svm_workspace.fig

svm_workspace.m

L�eina va acompanyada del toolbox de SVM de Matlab, per tant s�aconsella a l�hora d�instalar-la, descomprimir el zip en un directori conegut de Matlab. Seguidament executarem Matlab, anirem al directori on hem deixat l�eina més el toolbox utilitzant per exemple les comandes de Matlab (dir, cd, cd ..) i executarem el fitxer svm_gui.m.

4.4 Pantalla Principal Per començar a utilitzar l�eina s�ha d�obrir el Matlab, anar al directori on estigui

l�eina i executar svm_gui. Llavors ens apareix la pantalla principal (veure Figura 22).

Figura 22. Pantalla presentació programa

Premem el botó �Continue� de la pantalla de presentació i obtenim la pantalla principal del programa que hem realitzat.

Page 32: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

32

Figura 23. Pantalla principal programa

4.5 Opcions de l’Eina Podem observar a la Figura 23 com tot el panell està deshabilitat. Si cliquem a la

paraula File podrem carregar el projecte que volguem o crear-ne un de nou.

- New Project

- Load Project

- Save Project

- Save Project as

- Close Project

- Exit

4.5.1 Conversió de Dades a Format Intel·ligible de l’Eina En primer lloc per poder treballar amb l�eina és important que les dades estiguin en

un format que l�eina entengui. Si no és així, els resultats obtinguts no seran fiables. Per tant, si les dades de treball no estan amb el format que l�eina requereix, s�han de convertir abans de començar a treballar.

La nostra eina treballa amb una matriu que inclou les diferents característiques de cada mostra i la classe a la que pertany aquesta mostra, de forma que cada fila de la matriu conté una mostra diferent, i les N columnes es divideixen en N-1 columnes d�atributs i la darrera columna N és la classe a la que pertany. Això ho podem veure a la següent figura.

Page 33: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

33

Figura 24. Format correcte dades

En els exemples vistos fins ara ens trobem que el format de les dades d�entrada no segueix el format entenible per l�eina, sinó que divideix en dues matrius les dades. La primera matriu l�anomena X i és la matriu de les característiques i la segona l�anomena Y i és la matriu de les classes. En les dues figures següents podem veure el format normal que tenen les dades dels exemples amb els que treballem.

Figura 25. Matriu X de característiques

Figura 26. Matriu Y de classes

Page 34: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

34

Per tal d�aconseguir una matriu vàlida per l�eina només s�han de seguir les següents passes:

1) Obrir la matriu Y, seleccionar la columna de les classes i copiar-la (Ctrl + C).

Figura 27. Selecció columna

2) Obrir la matriu X i modificar el número de columnes de les que consta. En l�exemple que estem veient canviaríem el 2 per un 3. Veiem que ens crea una nova columna amb valor �0� a totes les files.

Figura 28. canviar número de columnes

3) Seleccionem la columna nova i enganxem el que havíem copiat (Ctrl+V)

Figura 29. Pegar columna de les classes

Page 35: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

35

4) Tanquem la finestra. La matriu X ara ja té el format que l�eina comprèn i per tant ja podem treballar.

5) És interessant gravar aquesta matriu nova que de moment només està al workspace, per si la necessitem en alguna altra sessió de Matlab. Per gravar-la hem d�anar a la pantalla del Matlab i posar la següent comanda: save nom.mat X

4.5.2 Projecte Nou (New Project) L�eina ens dona l�opció de crear un projecte nou. Si seleccionem aquesta opció se�ns

habilita part de la pantalla com podem veure en la Figura 30.

Figura 30. Projecte Nou

Observem que només està habilitada la importació de les dades, ja que sense dades no podem fer res.

Depenent de les opcions triades en cada pas, l�eina ens habilitarà o no les diferents opcions.

Page 36: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

36

4.5.2.1 Pas1: Select Data Matrix

El primer que hem de fer és importar les dades. Això ho podem fer de dues formes:

Figura 31. Selecció dades

1) Elegint l’opció 1a) From Mat File.

Amb aquesta opció el que fem és triar un fitxer .mat directament. Perquè l�eina treballi correctament, les dades d�aquest fitxer han d�estar en un format conegut. L�eina accepta el següent tipus de format:

Figura 32. Matriu de dades

Suposem l�exemple de la Figura 32. Es tracta d�una matriu de 10 elements amb elements pertanyents a 5 classes diferents.

Cada dada nova pertany a una fila. Cada fila es composa de x atributs (totes les columnes menys la darrera). L�última columna és la classe a la que pertany la dada. Per tant tenim:

Fila 1: mostra de la que tenim mesurades 3 característiques i que correspon a la classe -2. És a dir:

x=[10,50,100]; característiques de la mostra 1

y= -2; classe a la que pertany la mostra 1

Fila 2: mostra de la que tenim mesurades 3 característiques i que correspon a la classe -1

x=[2,22,55]; característiques de la mostra 2

y= -1; classe a la que pertany la mostra 2

Page 37: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

37

Fila 3: mostra de la que tenim mesurades 3 característiques i que correspon a la classe 3

x=[21,42,65]; característiques de la mostra 3

y= 3; classe a la que pertany la mostra 3

i així successivament fins arribar a la Fila 10.

Fila 10: mostra de la que tenim mesurades 3 característiques i que correspon a la classe -2

x=[11,51,105]; característiques de la mostra 10

y= -2; classe a la que pertany la mostra 10

2) Elegint l’opció 1a) From Matlab Import Wizard.

Amb aquesta opció el que haruem de fer és triar un fitxer en format .txt o .xls.

La pantalla que ens apareix al clicar sobre aquesta opció és la que podem veure a la Figura 33.

Seleccionem mitjançant el botó Browse un fitxer amb extensió *.xls o *.txt.

Figura 33. Pantalla Import Wizard

Amb qualsevol de les dues opcions que triem 1) o 2) el que fem és carregar en el workspace de Matlab les dades que hem anat seleccionant. El pas següent és dir-li a l�eina qué és el que volem utilitzar per treballar. Això ho fem mitjançant l�opció 1b) de la Figura 31. �Select Data Matrix�. Al seleccionar aquesta opció ens apareix la següent pantalla:

Page 38: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

38

Figura 34. Pantalla selecció matriu de dades sense dades a seleccionar

En aquesta pantalla ens apareixeran totes les variables d�entorn que té carregades el Matlab i seleccionarem la matriu amb la que volguem treballar. Suposem que les variables que tenim carregades al workspace són les de la Figura 35 i volem treballar amb l�exemple de 5 classes:

Figura 35. Pantalla selecció matriu de dades amb dades a seleccionar

Seleccionem doncs l�example_5_classes i li donem a �Ok & Close�. Un cop tenim seleccionada una dada podem veure com apareix a la part superior de la pantalla de la Figura 36 com a Data selected.

Page 39: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

39

En el cas d�haver creat variables directament sobre el matlab, amb l�opció �Update vars from workspace�, s�actualitzen dins l�eina i es poden veure a la pantalla �Select data matrix�.

En el �Log Window� podem veure un detall del que l�eina ha trobat dins de l�exemple_5_classes.mat. Ens diu que el número d�elements són 10, hi ha 5 classes diferents i ens enumera aquestes classes. Això es pot veure a la Figura 36.

També observem que s�ha habilitat gran part de la pantalla principal ja que ja disposem de dades per poder treballar.

Figura 36. Pantalla preparada per poder treballar

Com ja hem dit, és important que les dades estiguin en el format que enten l�eina. Si no és així s�hauran de convertir.

També tenim l�opció d�esborrar les variables del workspace, executant el botó �Clear workspace�.

Page 40: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

40

4.5.2.2 Pas2: Select Kernel Type and Parameters

En aquest segon pas elegim quin tipus de classificació volem fer. Per això hem de saber el tipus de Kernel que volem aplicar. Depenent del kernel que elegim s�habilitaran o deshabilitaran els paràmetres. Els diferents tipus de kernel que soporta l�eina es poden veure en el desplegable de la Figura 37.

Figura 37. Tipus de Kernels a utilitzar

Del toolbox hem extret la informació necessària dels Kernels que té implementats i quins paràmetres són necessaris per cadascun d�ells. Amb aquesta informació hem omplert la següent taula:

Kernel Fòrmula P1 P2 C

Linial k = u*v' - - Polinomial k = (u*v' + 1)^p1 Grau del polinomi -

Rbf k = exp(-(u-v)*(u-v)'/(2*p1^2)); Amplada rbf (sigma) -

Sigmoid k = tanh(p1*u*v'/length(u) + p2); Escala Offset

Spline z = 1 + u.*v + (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3; k = prod(z);

- -

Variable penalització

Page 41: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

41

Bspline

z = 0; for r = 0: 2*(p1+1) z = z + (-1)^r*binomial(2*(p1+1),r)*(max(0,u-v + p1+1 - r)).^(2*p1 + 1); end k = prod(z);

Grau del bspline -

Erbf k=exp(-sqrt((u-v)*(u-v)')/(2*p1^2)); Amplada rbf (sigma) -

Anova z = 1 + u.*v + u.*v.*min(u,v) - ((u+v)/2).*(min(u,v)).^2 + (1/3)*(min(u,v)).^3; Màxim ordre termes -

Taula 13. Kernels i paràmetres

4.5.2.3 Pas3: Select Test Features Aquí el que ens permet l�eina és triar de les dades que utilitzem per treballar, quines

volem utilitzar com entrenament i quines com a test.

Figura 38. Selecció característiques del test

En el primer camp (% Train / Test Data) marquem quin percentatge de mostres volem utilitzar per entrenar i quin percentatge per fer el test. El segon camp (Train Data Start Point) és un marcador que ens diu a partir de quina dada comença a agafar les dades d�entrenament. D�aquesta manera, amb el mateix conjunt de dades podem fer diferents tipus de proves elegint diferents dades per fer l�entrenament i el test.

L�eina no deix agafar un valor superior de mostres pel test que per l�entrenament. Si intentem moure la barra de �% Train / Test Data� cap al 0, la barra ens tornarà automàticament al valor de 50% de dades per l�entrenament i 50% pel test, ja que no té sentit tenir més dades de test que d�entrenament.

De la mateixa manera l�eina ens obliga a tenir com a mínim una dada per test. No podem agafar un 100% de dades d�entrenament i cap de test.

Un cop tenim clar aquests passos ja podem elegir el tipus de test a realitzar. Tenim dues opcions:

- un contra tots (one versus all)

- un contra un (one versus one)

Si treballem només amb dues classes, l�eina ens mantindrà deshabilitada aquesta opció (Additional options for more than 2 classes) ja que no té sentit la seva utilització. Només té sentit si treballem amb més de dues classes. Per tant, com l�exemple que hem triat és de 5 classes, sí que tenim habilitada aquesta opció.

Page 42: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

42

Figura 39. Selecció tipus de test a realitzar

Amb l�opció un contra tots (One versus all), hem de seleccionar quina és la classe que volem classificar, la resta de classes s�ajuntaran formant la segona classe. En l�exemple que estem tractant, hem de triar una de les 5 classes possibles.

Amb l�opció un contra un hem de seleccionar les dos classes que volem confrontar.

Un cop tenim clar què és el que volem analitzar i hem triat les opcions dins l�eina ja podem donar-li al botó RUN.

Figura 40. Execució i Plot

Si ho fem utilitzant l�exemple de les 5 classes obtenim el següent resultat:

Page 43: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

43

Figura 41. Run exemple 5 classes

La informació que ens facilita l�eina la dividim en 4 parts:

1) Informació del test (Test information): informació sobre el test que s�ha realitzat, ens diu quines són les opcions que s�han triat per fer el test (paràmetres, tipus de kernel, quines dades s�han agafat per l�entrenament i el test i el tipus de test que s�ha fet: u contra tots o un contra un i també la classe que s�ha fixat).

2) Classificació de les dades (Support Vector Classification): aquí l�eina ens dona els valors que ha calculat al aplicar la funció kernel triada i que són dades a tenir en compte al fer l�anàlisi de la classificació.

3) Predicció (Predicted Classification): en aquest apartat l�eina ens diu a quina classe classifica les dades utilitzades per fer el test.

4) Error de Classificació (Classification error): en aquest apartat l�eina compara el valor que ha predit amb la classe real a la que pertanyen les dades, i ens diu si coincideix o si hi ha hagut errors en la classificació.

Tenim també l�opció de plotejar el resultat si seleccionem la casella PLOT.

Page 44: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

44

4.5.2.4 Pas5: Select Data Matrix for Data Classification

En primer lloc cal dir que aquest pas és opcional.

En aquest apartat, a partir de dades on no coneixem a quina classe pertanyen, aplicar la funció que acabem d�entrenar i les classifiquem. Per fer això necessitem en primer lloc carregar les dades que volem analitzar.

Figura 42. Carregar dades noves

La idea és la mateixa que en el pas 1, però en aquest cas la matriu de dades no contindrà la classe a la que pertanyen les dades.

Un cop seleccionada la matriu s�habilitarà el botó �CLASSIFY�.

Figura 43. Classificació de dades noves

Page 45: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

45

Podem observar al log Window que ens ha classificat les dades en dos classes, les que pertanyen a la classe -2 i les que pertanyen a la resta de classes que les interpreta com la classe 0.

L�eina ens classifica les dades sempre tenint en compte l�últim estudi realitzat d�entrenament.

Cal tenir en compte que a l�elegir les dades per fer la classificació s�han d�elegir dades coherents a l�entrenament fet anteriorment. En cas contrari, la solució que donaria l�eina no seria correcte.

Analitzant aquest exemple veiem que en la primera prova que hem fet d�entrenament i test hem partit de les dades següents:

Dades

Mostres Atribut 1 Atribut 2 Atribut 3 Classe1 10 50 100 -2 2 2 22 55 -1 3 21 42 65 3 4 33 66 94 2 5 1 31 101 1 6 2 33 105 1 7 31 62 95 2 8 24 45 61 3 9 3 23 50 -1

10 11 51 105 -2

Taula 14. Dades exemple_5_classes

Hem demanat un tipus de test �One versus all�, de forma que la classe que hem fixat ha estat la -2. Hem fet l�entrenament de 8 dades i el test de les dues restants començant a comptar les dades d�entrenament a partir de la posició 1. Aixó vol dir que l�eina ha interpretat el següent:

Dades Inicials Dades Eina

Mostres Atribut 1 Atribut 2 Atribut 3 Classe Nova Classe Entrenament / Test Predicció 1 10 50 100 -2 -2 Entrenament 2 2 22 55 -1 0 Entrenament 3 21 42 65 3 0 Entrenament 4 33 66 94 2 0 Entrenament 5 1 31 101 1 0 Entrenament 6 2 33 105 1 0 Entrenament 7 31 62 95 2 0 Entrenament 8 24 45 61 3 0 Entrenament 9 3 23 50 -1 Test Test 0

10 11 51 105 -2 Test Test -2

Taula 15. Interpretació eina de les dades exemple_5_classes_1

Per tant veiem que la predicció de les dades de test que hem obtingut ha sigut correcte. L�eina ens ha classificat la dada pertanyent a la classe -1, com una dada que pertany a la suma de les classes que no hem fixat anomenada classe 0 i la dada pertanyent a la classe -2, que és la classe que havíem fixat, com una dada pertanyent a la classe -2.

Page 46: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

46

Si fem el mateix canviant el punt on comencen a comptar les dades per l�entrenament �Train Data Start Point�, considerant per exemple que comencen a partir de la quarta dada, obtenim el següent:

Dades Inicials Dades Eina Mostres Atribut 1 Atribut 2 Atribut 3 Classe Nova Classe Entrenament / Test Predicció

1 10 50 100 -2 -2 Entrenament 2 2 22 55 -1 Test Test 0 3 21 42 65 3 Test Test 0 4 33 66 94 2 0 Entrenament 5 1 31 101 1 0 Entrenament 6 2 33 105 1 0 Entrenament 7 31 62 95 2 0 Entrenament 8 24 45 61 3 0 Entrenament 9 3 23 50 -1 0 Entrenament

10 11 51 105 -2 -2 Entrenament

Taula 16. Interpretació eina de les dades exemple_5_classes_2

Veiem que també ens classifica correctament les dues dades de Test en aquest cas.

Suposem ara que volem fer una classificació amb dades que no coneixem a quina classe pertanyen, per tant, suposem que tenim aquesta matriu de dades a classificar:

Dades

Mostres Atribut 1 Atribut 2 Atribut 3 1 10 56 100 2 4 22 55 3 21 42 65 4 33 66 94 5 1 31 105 6 2 33 105 7 34 62 95 8 24 44 61 9 3 23 50

10 11 51 105

Taula 17. Matriu de dades a classificar

El que fem és seleccionar aquesta matriu en l�apartat 5 de l�eina i prémer el botó �CLASSIFY�. Obtenim els següents resultats:

Dades

Inicials Dades Eina

Mostres Atribut 1 Atribut 2 Atribut 3 Entrenament / Test Predicció 1 10 56 100 Entrenament -2 2 4 22 55 Test 0 3 21 42 65 Test 0 4 33 66 94 Entrenament 0 5 1 31 105 Entrenament 0 6 2 33 105 Entrenament 0 7 34 62 95 Entrenament 0 8 24 44 61 Entrenament 0 9 3 23 50 Entrenament 0

10 11 51 105 Entrenament -2

Taula 18. Interpretació eina de les dades exemple_5_classes_2

Page 47: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

47

Podem assegurar que ens ha classificat les dades correctament ja que, encara que no sapiguem a quina classe pertany cada dada, les modificacions sobre la matriu original han estat petites i per tant, la classificació ha de ser la mateixa que la de la matriu de dades inicial.

Un cop realitzats tots els passos, l�usuari pot jugar amb els controls de l�eina com desitgi, canviant el kernel, carregant noves dades, etc... Els resultats es seguiran mostrant a la pantalla del �log window�. D�aquesta manera, l�usuari podrà fer totes les proves que vulgui d�una forma ràpida i amb la possibilitat d�anar guardant els resultats obtinguts.

Al treballar amb exemples reals ens trobem que el nombre de dades de la matriu d�entrada és normalment bastant elevat. Si a més li sumem que els paràmetres que elegim del kernel són alts, és probable que l�eina estigui una bona estona realitzant càlculs abans de donar els resultat. Per tal de que l�usuari no es pensi que l�eina va malament, s�ha incorporat el comentari �Calculating, please wait...� com es pot veure en el Log Window de la figura següent:

Figura 44. Indicador d�espera

Page 48: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

48

Suposem que en lloc d�haver seleccionat l�opció un contra tots (one versus all), seleccionem l�opció un contra un (one versus one), elegint les classes a confrontar com les -2 i -1 . En aquest cas i utilitzant el mateix exemple que en el cas anterior tenim que l�eina ens agafa per fer el test la següent matriu de dades, que són les dades que pertanyen a les dues classes que volem testejar.

Dades

Mostres Atribut 1 Atribut 2 Atribut 3 Classe1 10 50 100 -2 2 2 22 55 -1 3 3 23 50 -1 4 11 51 105 -2

Taula 19. Dades exemple_5_classes mètode un contra un

D�aquestes 4 dades, agafo les opcions que mostra la figura següent que són les 3 primeres dades per fer l�entrenament i la darrera per fer el test, i obtinc els següents resultats:

Figura 45. Opcions elegides, mètode un contra un, exemple_5_classes

Page 49: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

49

Dades Inicials Dades Eina

Mostres Atribut 1 Atribut 2 Atribut 3 Classe Nova Classe Entrenament / Test Predicció 1 10 50 100 -2 -2 Entrenament 2 2 22 55 -1 0 Entrenament 9 3 23 50 -1 0 Entrenament

10 11 51 105 -2 Test Test -2

Taula 20. Interpretació eina de les dades exemple_5_classes_1, un contra un

Per tal de treballar més còmodament amb l�opció un contra un, després d�executar-se la funció, es salva com a variable de workspace la matriu resultant d�esborrar les classes no elegides. El nom de la variable del workspace és: m_one_vs_one. Aquesta variable si es vol guardar s�ha de fer abans d�executar un altre test diferent amb l�opció un contra un.

4.5.3 Carregar Projecte (Load Project) Aquesta opció ens permet carregar un projecte anteriorment salvat i continuar fent

més tests amb ell.

4.5.4 Salvar Projecte (Save Project) Amb aquesta opció salvem el projecte en el que estem treballant per poder continuar

més endavant treballant amb ell.

Si no l�hem salvat anteriorment ens demana donar-li un nom i dir-li on el volem guardar. És a dir, actúa com el �Save Project as�.

En el cas d�haver-lo salvat anteriorment, haver-lo modificat i tornat a voler guardar, un cop ha acabat, el document ens avisa amb la següent pantalla.

Figura 46. Opció Salvar Projecte

4.5.5 Salvar Projecte Com (Save Project As) Aquesta opció ens permet gravar el projecte donant-li el nom que volguem. Ens

demana el nom que li volem donar i on volem gravar-lo. Ens apareix la següent pantalla:

Page 50: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

50

Figura 47. Opció Salvar Projecte Com

4.5.6 Tancar Projecte (Close Project) Aquesta opció ens permet tancar el projecte. Després de seleccionar l�opció ens

pregunta mitjançant la següent pantalla si realment estem segurs de voler-ho tancar.

Figura 48. Opció Tancar Projecte

Si elegim l�opció No, ens manté la pantalla on estavem treballant.

En cas contrari, elegint l�opció Yes, ens tanca la finestra i ens apareix la següent pantalla on podem començar un projecte nou. S�ha de tenir en compte que les dades es perdran en el cas de no haver gravat anteriorment el projecte.

Page 51: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Eina d�Utilització del Toolbox de SVM�s

51

Figura 49. Opció Tancar Projecte_Yes

4.5.7 Sortir (Exit) En el cas d�optar per l�opció Sortir, ens apareix la següent pantalla que ens pregunta

si n�estem segurs o no.

Figura 50. Opció Sortir

En el cas de seleccionar �No� ens manté on estàvem. En el cas d�optar per l�opció �Yes�, ens tanca el programa.

Cal tenir en compte que perdrem les dades que no haguem gravat anteriorment en el cas d�elegir l�opció �Yes�.

Page 52: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

52

5 Joc de Proves

S�ha utilitzat el programa amb exemples reals disponibles de dades. Els exemples amb el que s�ha realitzat el joc de proves són:

1) linsep.mat

2) Test del iris: iris1v23.mat, iris2v13.mat i iris3v12.mat

3) example_5_classes

5.1 Linsep.mat

Dades Mostres Atribut 1 Atribut 2 Classe

1 1 1 -1 2 3 3 1 3 1 3 1 4 3 1 -1 5 2 2.5 1 6 3 2.5 -1 7 4 3 -1

Taula 21. Dades exemple linsep

El joc de proves que realitzarem consistirà en provar totes i cadascuna de les funcions que ens permet l�eina. Dividirem les proves en tests.

5.1.1 Test1: linsep Els passos que seguim per fer el test són:

1) Obrim un projecte nou.

2) Carreguem les dades de l�exemple linsep.mat. Aquestes dades venen amb un format que l�eina no entén, per que les dades están dividides. Per un costat està definida la matriu de característiques X, que és on estan les mostres i, per una altra banda, la matriu de classes Y. Per tant, el primer que fem és juntar-les com s�ha explicat a l�apartat 4.3.1.

3) Seleccionem un kernel linial i executem RUN. Obtenim el següent resultat en la pantalla Log Window

RESULTS LOG

Start logging 11-Apr-2007

File open: linsep.mat

Page 53: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

53

Parameters in the data matrix <X>:

Number of data elements: 7

Number of classes: 2

Classes found: -1 1

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 1.7778

Margin: 1.5

Sum alpha: 1.7778

Support Vectors: 3 (60%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)<

Taula 22. linsep prova 1

Figura 51. Linsep prova 1

Page 54: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

54

4) Canviem el tipus de Kernel ficant un Kernel polinomial, amb P1=2 i C=inf, i premem Run.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <poly> with p1=2 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.87528

Margin: 2.1377

Sum alpha: 0.87528

Support Vectors: 2 (40%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 23. linsep prova 2

Figura 52. Linsep prova 2

5) Canviem el tipus de Kernel ficant un Kernel rbf, amb P1=2 i C=inf, i premem Run.

Calculating, please wait...

Page 55: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

55

############## TEST INFORMATION ###############

Executing <rbf> with p1=2 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 8.7215

Margin: 0.67723

Sum alpha: 8.7215

Support Vectors: 3 (60%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 24. linsep prova 3

Figura 53. Linsep prova 3

6) Canviem el tipus de Kernel ficant un Kernel spline, amb P1=2 i C=inf, i premem Run.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <spline> with C:Inf

Page 56: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

56

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.87349

Margin: 2.1399

Sum alpha: 0.87349

Support Vectors: 3 (60%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 25. linsep prova 4

Figura 54. Linsep prova 4

7) Canviem el tipus de Kernel ficant un Kernel bspline, amb P1=2 i C=inf, i premem Run.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <bspline> with p1:2 and C:Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Page 57: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

57

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.27878

Margin: 3.7879

Sum alpha: 0.27878

Support Vectors: 5 (100%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 26. linsep prova 5

Figura 55. Linsep prova 5

8) Canviem el tipus de Kernel ficant un Kernel erbf, amb P1=2 i C=inf, i premem Run.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <erbf> with p1=1 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Page 58: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

58

Status: OPTIMAL_SOLUTION

|w0|^2: 5.942

Margin: 0.82047

Sum alpha: 5.942

Support Vectors: 5 (100%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 27. linsep prova 6

Figura 56. Linsep prova 6

9) Canviem el tipus de Kernel ficant un Kernel anova, amb P1=2 i C=inf, i premem Run.

############## TEST INFORMATION ###############

Executing <anovaspline1> with p1=2 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.87349

Margin: 2.1399

Sum alpha: 0.87349

Support Vectors: 3 (60%)

Page 59: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

59

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 28. linsep prova 7

Figura 57. Linsep prova 7

5.1.2 Test2: linsep Aquí provarem de canviar els paràmetres p1, p2 i C en alguns exemples per veure

que funcionen correctament.

1) Kernel polinomial, p1=3, C= inf.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <poly> with p1=3 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.16572

Margin: 4.913

Sum alpha: 0.16572

Support Vectors: 2 (40%)

Page 60: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

60

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 29. linsep prova 8

Figura 58. Linsep prova 8

2) Kernel rbf, p1=3, C= inf.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <rbf> with p1=3 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 17.5457

Margin: 0.47747

Sum alpha: 17.5457

Support Vectors: 3 (60%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Page 61: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

61

Taula 30. linsep prova 9

Figura 59. Linsep prova 9

3) Kernel erbf, p1=3, C= inf.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <erbf> with p1=3 and C=Inf

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 32.1265

Margin: 0.35286

Sum alpha: 32.1265

Support Vectors: 5 (100%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 31. linsep prova 10

Page 62: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

62

Figura 60. Linsep prova 10

4) Kernel anova, p1=3, C= 10.

Calculating, please wait...

############## TEST INFORMATION ###############

Executing <anovaspline1> with p1=3 and C=10

Total number of elements in the test: 7

Train elems: 5 Test elems: 2

Train elems start at row 1 in the data matrix

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 0.87349

Margin: 2.1399

Sum alpha: 0.87349

Support Vectors: 3 (60%)

########## PREDICTED CLASSIFICATION ###########

1 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 2)

Taula 32. linsep prova 11

Page 63: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

63

Figura 61. Linsep prova 11

5.1.3 Test3: linsep

En aquest test provarem que l�eina agafi bé les dades per l�entrenament i pel test.

% Train / Test Data Train Data Start Point Number of elements to train Number of elements to test

50 / 50 1 3 4 75 / 25 1 5 2 90 / 10 1 6 1 50 / 50 2 3 4 75 / 25 2 5 2 90 / 10 2 6 1 50 / 50 3 3 4 75 / 25 3 5 2 90 / 10 3 6 1 50 / 50 4 3 4 75 / 25 4 5 2 90 / 10 4 6 1 50 / 50 5 3 4 75 / 25 5 5 2 90 / 10 5 6 1 50 / 50 6 3 4 75 / 25 6 5 2 90 / 10 6 6 1 50 / 50 7 3 4 75 / 25 7 5 2 90 / 10 7 6 1

Taula 33. Train and Test Data

5.1.4 Test4: linsep

En aquest test provarem que l�eina gravi i esborri bé el Log file.

Li donem al botó Save Log, li donem el nom log1.log i salvem.

L�obrim desde el word per exemple i obtenim tots els tests que hem fet.

Page 64: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

64

RESULTS LOG Start logging 11-Apr-2007 File open: linsep.mat Parameters in the data matrix <X>: Number of data elements: 7 Number of classes: 2 Classes found: -1 1 Calculating, please wait... ############## TEST INFORMATION ############### Executing <linear> with C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 1.7778 Margin: 1.5 Sum alpha: 1.7778 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=2 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.87528 Margin: 2.1377 Sum alpha: 0.87528 Support Vectors: 2 (40 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <spline> with C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.87349

Page 65: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

65

Margin: 2.1399 Sum alpha: 0.87349 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <spline> with C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.87349 Margin: 2.1399 Sum alpha: 0.87349 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <bspline> with p1=1 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.27878 Margin: 3.7879 Sum alpha: 0.27878 Support Vectors: 5 (100 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <erbf> with p1=1 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 5.942 Margin: 0.82047 Sum alpha: 5.942 Support Vectors: 5 (100

Page 66: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

66

########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait...

############## TEST INFORMATION ############### Executing <anovaspline1> with p1=2 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.87349 Margin: 2.1399 Sum alpha: 0.87349 Support Vectors: 3 (60%) ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <anovaspline1> with p1=3 and C=10 Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.87349 Margin: 2.1399 Sum alpha: 0.87349 Support Vectors: 3 (60%) ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.16572 Margin: 4.913 Sum alpha: 0.16572 Support Vectors: 2 (40 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait...

Page 67: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

67

############## TEST INFORMATION ############### Executing <rbf> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 17.5457 Margin: 0.47747 Sum alpha: 17.5457 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <rbf> with p1=4 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 29.9675 Margin: 0.36535 Sum alpha: 29.9675 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=4 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.038966 Margin: 10.1318 Sum alpha: 0.038966 Support Vectors: 2 (40 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=10 and C=Inf

Page 68: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

68

Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 2.5491e-005 Margin: 396.1289 Sum alpha: 2.549e-005 Support Vectors: 1 (20 ########## PREDICTED CLASSIFICATION ########### -1 1 ############ CLASSIFICATION ERROR ############# Error: 1 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <bspline> with p1=2 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.0009792 Margin: 63.9139 Sum alpha: 0.00097919 Support Vectors: 5 (100 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <bspline> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 7.2214e-007 Margin: 2353.531 Sum alpha: 7.2167e-007 Support Vectors: 0 (0 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <bspline> with p1=2 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix

Page 69: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

69

######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.0009792 Margin: 63.9139 Sum alpha: 0.00097919 Support Vectors: 5 (100 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <rbf> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 17.5457 Margin: 0.47747 Sum alpha: 17.5457 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <rbf> with p1=3 and C=10 Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 17.5457 Margin: 0.47747 Sum alpha: 17.5457 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.16572

Page 70: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

70

Margin: 4.913 Sum alpha: 0.16572 Support Vectors: 2 (40 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <poly> with p1=3 and C=10 Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 0.16572 Margin: 4.913 Sum alpha: 0.16572 Support Vectors: 2 (40 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <erbf> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 32.1265 Margin: 0.35286 Sum alpha: 32.1265 Support Vectors: 5 (100 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <erbf> with p1=3 and C=10 Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 32.1265 Margin: 0.35286 Sum alpha: 32.1265 Support Vectors: 5 (100

Page 71: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

71

########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <anova> with p1=3 and C=Inf Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 16000017344.2717 Margin: 1.5811e-005 Sum alpha: 16000032418.9765 Support Vectors: 5 (100 ########## PREDICTED CLASSIFICATION ########### -1 -1 ############ CLASSIFICATION ERROR ############# Error: 0 elements (of 2) Calculating, please wait... ############## TEST INFORMATION ############### Executing <anova> with p1=3 and C=10 Total number of elements in the test: 7 Train elems: 5 Test elems: 2 Train elems start at row 1 in the data matrix ######## SUPPORT VECTOR CLASSIFICATION ######## Status: OPTIMAL_SOLUTION |w0|^2: 1.4444 Margin: 1.6641 Sum alpha: 14.7778 Support Vectors: 3 (60 ########## PREDICTED CLASSIFICATION ########### 1 1 ############ CLASSIFICATION ERROR ############# Error: 2 elements (of 2)

Taula 34. linsep prova 12

Ara fem un clear Log i s�esborra el log Window.

Page 72: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

72

Figura 62. Linsep prova 12

5.2 Test del Iris Tenim les següents dades pertanyents a 3 classes diferents de mostres de iris.

Dades

Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe1 3.9 1.4 1 41 6.1 2.5 1 81 1.5 0.4 2 2 3.7 1 1 42 1.5 0.4 2 82 1.7 0.4 2 3 4.5 1.5 1 43 5.1 1.8 3 83 5.8 1.8 3 4 1.5 0.3 2 44 5.9 2.1 3 84 4.7 1.2 1 5 4.5 1.5 1 45 6 1.8 3 85 1.6 0.2 2 6 1.5 0.2 2 46 4.5 1.4 1 86 4.6 1.5 1 7 6 2.5 3 47 1.5 0.1 2 87 5.1 1.5 3 8 3.3 1 1 48 4.8 1.8 1 88 1.1 0.1 2 9 6.7 2 3 49 5.9 2.3 3 89 1.4 0.2 2

10 4.8 1.8 3 50 4 1.3 1 90 1.7 0.3 2 11 3 1.1 1 51 3.5 1 1 91 1.6 0.4 2 12 4.4 1.3 1 52 5.6 2.1 3 92 4 1 1 13 1.5 0.2 2 53 4.9 1.4 1 93 4 1.3 1 14 1.9 0.2 2 54 5.1 2 3 94 5.7 2.1 3 15 1.3 0.3 2 55 1.5 0.4 2 95 6.7 2.2 3

Page 73: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

73

16 1.5 0.2 2 56 6.1 2.3 3 96 4.4 1.2 1 17 5 1.9 3 57 1.6 0.2 2 97 4.5 1.6 1 18 4 1.3 1 58 5.2 2 3 98 6.3 1.8 3 19 1.4 0.3 2 59 4.1 1.3 1 99 5.3 1.9 3 20 5.8 2.2 3 60 1.5 0.1 2 100 1.5 0.2 2 21 4.3 1.3 1 61 6.4 2 3 101 4.1 1 1 22 5.1 2.4 3 62 4.5 1.5 1 102 4.7 1.4 1 23 5.1 1.6 1 63 1.4 0.2 2 103 4 1.2 1 24 4.8 1.8 3 64 1.4 0.2 2 104 1.4 0.2 2 25 6.6 2.1 3 65 4.6 1.4 1 105 1.6 0.2 2 26 5.1 1.9 3 66 5.5 1.8 3 106 4.9 1.5 1 27 5.6 1.4 3 67 1.4 0.2 2 107 1.9 0.4 2 28 5 1.7 1 68 4.7 1.4 1 108 5.6 2.4 3 29 1.7 0.5 2 69 1.7 0.2 2 109 1.4 0.2 2 30 1.5 0.2 2 70 4.7 1.6 1 110 1.2 0.2 2 31 1.3 0.2 2 71 1.5 0.2 2 111 5.6 2.2 3 32 1.6 0.2 2 72 4.8 1.4 1 112 4.9 1.8 3 33 4.5 1.5 1 73 3.5 1 1 113 4.7 1.5 1 34 1.4 0.2 2 74 4.5 1.7 3 114 4.1 1.3 1 35 5.6 2.4 3 75 1.4 0.1 2 115 1.6 0.2 2 36 1.6 0.6 2 76 6.1 1.9 3 116 4.9 1.5 1 37 3.9 1.2 1 77 3.9 1.1 1 117 4.2 1.5 1 38 1.3 0.2 2 78 5.5 2.1 3 118 5.8 1.6 3 39 5.5 1.8 3 79 1.3 0.2 2 119 5.1 2.3 3 40 3.3 1 1 80 3.8 1.1 1 120 4.6 1.3 1

Taula 35. Dades exemple iris

Amb aquestes dades realitzarem els següents tests:

5.2.1 Test 1: Classe 1 contra classes 2 i 3 1) Obrim un projecte nou.

2) Carreguem les dades de l�exemple iris_Test.mat. Aquestes dades consisteixen en un fitxer excel (*.xls) que conté 3 columnes, les dues primeres d�atributs de les mostres i la darrera la classe a la que pertany cada mostra que pot ser la classe 1, 2 o 3.

3) El primer que farem serà seleccionar el tipus de kernel que volem executar (linial en aquest cas), seleccionem el % de dades a entrenar i a testejar i el tipus de test un contra tots on la classe que fixem serà la 1. A continuació executem RUN i PLOT. Obtenim el següent resultat en la pantalla Log Window:

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Page 74: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

74

Status: OPTIMAL_SOLUTION

|w0|^2: 789465905931.997

Margin: 2.2509e-006

Sum alpha: 789486453046.007

Support Vectors: 96 (100%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1

############ CLASSIFICATION ERROR #############

Error: 10 elements (of 24)

Taula 36. Iris, Kernel linial, classe 1 contra la resta.

Figura 63. Iris, Kernel linial, classe 1 contra la resta

4) Canviem el tipus de Kernel i fem el mateix test utilitzant un Kernel polinomial de grau 2.

############## TEST INFORMATION ###############

Executing <poly> with p1=2 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 62222016547.0783

Margin: 8.0179e-006

Sum alpha: 62190412894.7519

Page 75: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

75

Support Vectors: 11 (11.4583

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 37. Iris, Kernel polinomial, classe 1 contra la resta.

Figura 64. Iris, Kernel polinomial de grau 2, classe 1 contra la resta

5) Utilitzant el mateix Kernel, polinomial, fixem la variable p1 =2 i C=10.

############## TEST INFORMATION ###############

Executing <poly> with p1=2 and C=10

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 83.6422

Margin: 0.21868

Sum alpha: 175.7569

Support Vectors: 21 (21.875

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0

Page 76: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

76

0 0 0 0 0 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 38. Iris, Kernel polinomial de grau 2, C=10, classe 1 contra la resta.

Figura 65. Iris, Kernel polinomial de grau 2, C=10, classe 1 contra la resta

6) Canviem el tipus de Kernel posant un Kernel Rbf, amb P1=1 i C=inf, i li donem a Run.

############## TEST INFORMATION ###############

Executing <rbf> with p1=1 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 26666707047.6834

Margin: 1.2247e-005

Sum alpha: 26666707047.711

Support Vectors: 10 (10.4167%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 1 elements (of 24)

Page 77: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

77

Taula 39. Iris, Kernel rbf amb p1=1, classe 1 contra la resta.

Figura 66. Iris, Kernel rbf amb p1=1, classe 1 contra la resta

7) Amb el mateix kernel rbf, canviem els paràmetres P1=2 i C=inf, i li donem a Run.

############## TEST INFORMATION ###############

Executing <rbf> with p1=2 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 26667318948.1928

Margin: 1.2247e-005

Sum alpha: 26667315667.2643

Support Vectors: 96 (100%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 2 elements (of 24)

Taula 40. Iris, Kernel rbf amb p1=2, classe 1 contra la resta.

Page 78: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

78

Figura 67. Iris, Kernel rbf amb p1=2, classe 1 contra la resta

8) Canviem el kernel a spline

############## TEST INFORMATION ###############

Executing <spline> with C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: ITERATION_LIMIT

|w0|^2: 26696096697.5774

Margin: 1.2241e-005

Sum alpha: 26689575690.3956

Support Vectors: 19 (19.7917%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 41. Iris, Kernel spline, classe 1 contra la resta.

Page 79: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

79

Figura 68. Iris, Kernel spline, classe 1 contra la resta

9) Canviem el kernel a bspline

############## TEST INFORMATION ###############

Executing <bspline> with p1=1 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 26667021629.3369

Margin: 1.2247e-005

Sum alpha: 26667021629.3368

Support Vectors: 13 (13.5417%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 1 elements (of 24)

Taula 42. Iris, Kernel bspline, classe 1 contra la resta.

Page 80: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

80

Figura 69. Iris, Kernel bspline, classe 1 contra la resta

10) Canviem el kernel a erbf

############## TEST INFORMATION ###############

Executing <erbf> with p1=1 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 26666619736.7082

Margin: 1.2247e-005

Sum alpha: 26666657883.6638

Support Vectors: 27 (28.125%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 43. Iris, Kernel erbf, classe 1 contra la resta.

Page 81: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

81

Figura 70. Iris, Kernel erbf, classe 1 contra la resta

11) Canviem el kernel a anova

############## TEST INFORMATION ###############

Executing <anovaspline1> with p1=1 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: ITERATION_LIMIT

|w0|^2: 26709792419.8763

Margin: 1.2238e-005

Sum alpha: 26690238580.2672

Support Vectors: 19 (19.7917%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 44. Iris, Kernel anova, classe 1 contra la resta.

Page 82: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

82

Figura 71. Iris, Kernel anova, classe 1 contra la resta

5.2.2 Test 2: Classe 2 contra classes 1 i 3 1) En aquest cas farem un test d�un contra tots però la classe fixada serà la 2.

2) Pel primer test agafarem un Kernel linial.

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 2

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 1.9992

Margin: 1.4145

Sum alpha: 1.9992

Support Vectors: 3 (3.125

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 0 0 0 2 0 0 0 2 2 0 2 0 2 2 0 0 0 0 2 0 0 0 0 0

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 45. Iris, Kernel linial, classe 2 contra la resta.

Page 83: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

83

Figura 72. Iris, Kernel linial, classe 2 contra la resta

3) Canviem a un Kernel polinomial.

############## TEST INFORMATION ###############

Executing <poly> with p1=2 and C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 2

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 1.2027

Margin: 1.8237

Sum alpha: 1.2027

Support Vectors: 3 (3.125%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 0 0 0 2 0 0 0 2 2 0 2 0 2 2 0 0 0 0 2 0 0 0 0 0

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 46. Iris, Kernel polinomial, classe 2 contra la resta.

Page 84: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

84

Figura 73. Iris, Kernel polinomial, classe 2 contra la resta

5.2.3 Test 3: Classe 3 contra classes 1 i 2

1) En aquest cas farem un test d�un contra tots però la classe fixada serà la 3.

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 120

Train elems: 96 Test elems: 24

Train elems start at row 1 in the data matrix

One vs all, fixed class 3

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 100344797574.83

Margin: 6.3137e-006

Sum alpha: 100342953419.03

Support Vectors: 19 (19.7917%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 0 3 3 0 0 0 0 0 0 0 0 3 0 0 3 3 0 0 0 0 0 3 3 0

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 24)

Taula 47. Iris, Kernel lineal, classe 3 contra la resta.

Page 85: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

85

Figura 74. Iris, Kernel linial, classe 3 contra la resta

5.2.4 Test 4: Classe 1 contra classe 2 1) En aquest cas farem un test d�un contra un entre els elements de la classe 1 i

la classe 2.

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 83

Train elems: 66 Test elems: 17

Train elems start at row 1 in the data matrix

One vs one, fixed classes 1 and 2

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 1.9992

Margin: 1.4145

Sum alpha: 1.9992

Support Vectors: 3 (4.5455%)

########## PREDICTED CLASSIFICATION ###########

1 2 1 1 1 2 2 1 2 2 2 1 1 2 1 1 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 17)

Taula 48. Iris, Kernel lineal, classe 1 contra la 2.

Page 86: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

86

Figura 75. Iris, Kernel linial, classe 1 contra la 2

5.2.5 Test 5: Classe 2 contra classe 3 1) En aquest cas farem un test d�un contra un entre els elements de la classe 2 i

la classe 3.

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 77

Train elems: 61 Test elems: 16

Train elems start at row 4 in the data matrix

One vs one, fixed classes 2 and 3

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 587890911732.533

Margin: 2.6084e-006

Sum alpha: 587891311093.223

Support Vectors: 61 (100

########## PREDICTED CLASSIFICATION ###########

2 3 3 2 2 3 2 3 2 2 2 2 3 3 2 3

############ CLASSIFICATION ERROR #############

Error: 8 elements (of 16)

Taula 49. Iris, Kernel lineal, classe 2 contra la 3.

Page 87: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

87

Figura 76. Iris, Kernel linial, classe 2 contra la 3

5.2.6 Test 6: Classe 1 contra classe 3

1) En aquest cas farem un test d�un contra un entre els elements de la classe 1 i la classe 3.

############## TEST INFORMATION ###############

Executing <linear> with C=Inf

Total number of elements in the test: 80

Train elems: 64 Test elems: 16

Train elems start at row 1 in the data matrix

One vs one, fixed classes 1 and 3

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 101045019006.679

Margin: 6.2918e-006

Sum alpha: 101042759667.349

Support Vectors: 15 (23.4375%)

########## PREDICTED CLASSIFICATION ###########

3 3 1 1 1 1 3 3 3 1 1 1 1 3 3 1

############ CLASSIFICATION ERROR #############

Error: 0 elements (of 16)

Taula 50. Iris, Kernel lineal, classe 1 contra la 3.

Page 88: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

88

Figura 77. Iris, Kernel linial, classe 1 contra la 3

5.2.7 Test 7: Classificació de Mostres.

Per tal de testejar la part de classificació de l�eina, hem dividit les 120 dades de l�iris en dos matrius diferents. La primera conté els 100 primers elements amb la classe a la que pertanyen i la segona conté els 20 darrers sense la classe a la que pertanyen.

El primer que hem de fer és classificar la primera matriu que consta de les següents dades:

Dades

Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe Mostres Atribut 1 Atribut 2 Classe1 3.9 1.4 1 41 6.1 2.5 1 81 1.5 0.4 2 2 3.7 1 1 42 1.5 0.4 2 82 1.7 0.4 2 3 4.5 1.5 1 43 5.1 1.8 3 83 5.8 1.8 3 4 1.5 0.3 2 44 5.9 2.1 3 84 4.7 1.2 1 5 4.5 1.5 1 45 6 1.8 3 85 1.6 0.2 2 6 1.5 0.2 2 46 4.5 1.4 1 86 4.6 1.5 1 7 6 2.5 3 47 1.5 0.1 2 87 5.1 1.5 3 8 3.3 1 1 48 4.8 1.8 1 88 1.1 0.1 2 9 6.7 2 3 49 5.9 2.3 3 89 1.4 0.2 2

10 4.8 1.8 3 50 4 1.3 1 90 1.7 0.3 2 11 3 1.1 1 51 3.5 1 1 91 1.6 0.4 2 12 4.4 1.3 1 52 5.6 2.1 3 92 4 1 1 13 1.5 0.2 2 53 4.9 1.4 1 93 4 1.3 1 14 1.9 0.2 2 54 5.1 2 3 94 5.7 2.1 3 15 1.3 0.3 2 55 1.5 0.4 2 95 6.7 2.2 3 16 1.5 0.2 2 56 6.1 2.3 3 96 4.4 1.2 1 17 5 1.9 3 57 1.6 0.2 2 97 4.5 1.6 1 18 4 1.3 1 58 5.2 2 3 98 6.3 1.8 3 19 1.4 0.3 2 59 4.1 1.3 1 99 5.3 1.9 3 20 5.8 2.2 3 60 1.5 0.1 2 100 1.5 0.2 2 21 4.3 1.3 1 61 6.4 2 3 22 5.1 2.4 3 62 4.5 1.5 1 23 5.1 1.6 1 63 1.4 0.2 2 24 4.8 1.8 3 64 1.4 0.2 2 25 6.6 2.1 3 65 4.6 1.4 1

Page 89: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

89

26 5.1 1.9 3 66 5.5 1.8 3 27 5.6 1.4 3 67 1.4 0.2 2 28 5 1.7 1 68 4.7 1.4 1 29 1.7 0.5 2 69 1.7 0.2 2 30 1.5 0.2 2 70 4.7 1.6 1 31 1.3 0.2 2 71 1.5 0.2 2 32 1.6 0.2 2 72 4.8 1.4 1 33 4.5 1.5 1 73 3.5 1 1 34 1.4 0.2 2 74 4.5 1.7 3 35 5.6 2.4 3 75 1.4 0.1 2 36 1.6 0.6 2 76 6.1 1.9 3 37 3.9 1.2 1 77 3.9 1.1 1 38 1.3 0.2 2 78 5.5 2.1 3 39 5.5 1.8 3 79 1.3 0.2 2 40 3.3 1 1 80 3.8 1.1 1

Taula 51. Dades per entrenar del iris

Per tant el que fem és importar les dades mitjançant el �From Matlab Import Wizard� i tot seguit demanar, per exemple, que mitjançant un Kernel spline ens classifiqui les dades, tenint en compte que volem fer un test d�un contra tots fixant la classe 1.

############## TEST INFORMATION ###############

Executing <spline> with C=Inf

Total number of elements in the test: 100

Train elems: 80 Test elems: 20

Train elems start at row 1 in the data matrix

One vs all, fixed class 1

######## SUPPORT VECTOR CLASSIFICATION ########

Status: OPTIMAL_SOLUTION

|w0|^2: 26668254354.6678

Margin: 1.2247e-005

Sum alpha: 26668254354.587

Support Vectors: 10 (12.5%)

########## PREDICTED CLASSIFICATION ###########

(0 means "all") 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0

############ CLASSIFICATION ERROR #############

Error: 1 elements (of 20)

Taula 52. Iris, Kernel spline, classificació de dades

Page 90: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Joc de Proves

90

Figura 78. Iris, Kernel spline, classificació de dades

Ara fem la classificació de les següents dades que no sabem a quina classe pertanyen i l�eina les classifica segons la columna �Classe Predeïda�. Com realment sí coneixem la classe a la que pertanyen aquestes dades podem veure si ha predit correctament les dades o no, i veiem clarament que sí ho ha fet correctament.

Mostres Atribut 1 Atribut 2 Classe Predeida

Classe correcta

101 4.1 1 1 1 102 4.7 1.4 1 1 103 4 1.2 1 1 104 1.4 0.2 0 2 105 1.6 0.2 0 2 106 4.9 1.5 1 1 107 1.9 0.4 0 2 108 5.6 2.4 0 3 109 1.4 0.2 0 2 110 1.2 0.2 0 2 111 5.6 2.2 0 3 112 4.9 1.8 0 3 113 4.7 1.5 1 1 114 4.1 1.3 1 1 115 1.6 0.2 0 2 116 4.9 1.5 1 1 117 4.2 1.5 1 1 118 5.8 1.6 0 3 119 5.1 2.3 0 3 120 4.6 1.3 1 1

Taula 53. Dades a classificar del iris

Page 91: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

91

6 Manual User’s Guide

6.1 How to Install and Start the Tool The complete tool is available in the zip file SVM_Tool.zip.

This zip file contains the following folders and files:

• Folder svm_functions. This folder contains the SVM toolbox

• Files that make the GUI working:

svm_gui.fig

svm_gui.m

svm_close.fig

svm_close.m

svm_exit.fig

svm_exit.m

svm_parameters.fig

svm_parameters.m

svm_plot.fig

svm_plot.m

svm_saved.fig

svm_saved.m

svm_workspace.fig

svm_workspace.m

So the tool have already the SVM toolbox inside, it�s not necessary to add anything else, so the recommended installation is just to unzip the tool in a known Matlab folder.

To start the tool, just go to the installation folder (for example using the commands dir, cd, cd .. or navigating via the Current Directory window) and execute svm_gui.

The following screen appears:

Page 92: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

92

Figura 79. Principal Program Screen

Pressing the �Continue� button the following screen appears:

Figura 80. Main Program Screen

Page 93: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

93

6.2 Data Available for the Tool It�s mandatory for the imported data to be in the format that the tool understands.

Otherwise, they have to be modified.

Our tool works with a single matrix which includes the data plus the class, as it�s shown in the figure below:

Figura 81. Data right format

It is easy to modify in Matlab the data type. Let�s suppose we are working with example iris1v23.mat. The data that give us this example have in different matrix the data and the class as it�s shown in below Figures.

Figura 82. Data from iris1v23 example

Page 94: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

94

Figura 83. Class from iris1v23 example

In order to include the class into the data matrix the steps to follow are:

6) Open Y matrix and select the column of the class and do a Copy (Ctrl + C) of this column.

Figura 84. Select class from iris1v23 example

7) Open X matrix and modify the number of column from 2 to 3. A new column with 0�s appears.

Figura 85. Change number of columns from iris1v23 example

8) Do a paste (Ctrl+V) and the data copied is pasted

Page 95: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

95

Figura 86. Paste the class from iris1v23 example

9) Close the window. The matrix X now has the right format that the tool understands.

6.3 Tool Options Before beginning to work, the panel shown in figure 57 all is disabled. First, we have

to select what we want to do in the Menu File. The options are:

- New Project

- Load Project

- Save Project

- Save Project as

- Close Project

- Exit

6.3.1 New Project

To create a New Project, we select in File the option �New Project�. The screen we get is:

Page 96: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

96

Figura 87. New Project Screen

From here the steps to follow to work with the tool are:

6.3.1.1 Step 1: Select data matrix

First of all, we have to import the data to work with. If the data we want to work with is in a mat file (*.mat), then, the option to select is the button �From MAT File�.

Figura 88. Selecció dades

In case that data were in excel or text file (*.xls, *.txt) the option to select would be �From Matlab Import Wizard�.

Page 97: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

97

Figura 89. Import Wizard Screen

In both cases the data selected is loaded in Matlab Workspace.

Next step is select the data we want to use for our tests. So, we have to press the button �Select Data Matrix� from Figure 79. The following screen appears.

Figura 90. Select Data Matrix Screen

In this screen it will appear all variables loaded in Matlab. There are several possibilities:

1) Update vars from workspace: this option is used in case that we have created some variables in the Matlab workspace and the tool does not have included them yet.

Page 98: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

98

2) Clear workspace: this option allow us to delete all workspace variables in Matlab.

3) Ok & Close: once we have selected the data to work with, we have to press this option to close the dialog.

4) Cancel: cancels the operation.

Usually we will select the option we want and press �Ok &Close� button.

Once selected the data the panel is enabled with more options as we can see in the following Figure.

Figura 91. Options enabled after loading data

In the Log Window appears a summary of the data found in the data matrix we have selected.

Page 99: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

99

6.3.1.2 Step 2: Select kernel type and parameters

Depending on the classification we want to do, we select the Kernel type. The different Kernels to select are: linear, polinomial, rbf, spline, bspline, erbf and anova. Depending on the Kernel selected we will have to define the parameters P1 and C.

Figura 92. Different Kernels to use

Depending on the Kernel selected, it will be necessary to specify the value of parameters P1, P2 and C. These parameters have different meaning depending on the Kernel. A summary table is the following:

Kernel Fòrmula P1 P2 C

Lineal k = u*v' - - Polinomial k = (u*v' + 1)^p1 Polynomial degree - Rbf k = exp(-(u-v)*(u-v)'/(2*p1^2)); Width of rbf (sigma) - Sigmoid k = tanh(p1*u*v'/length(u) + p2); Scale Offset

Spline z = 1 + u.*v + (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3; k = prod(z); - -

Bspline z = 0; for r = 0: 2*(p1+1)

Bspline degree -

Penalisation variable

Page 100: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

100

z = z + (-1)^r*binomial(2*(p1+1),r)*(max(0,u-v + p1+1 - r)).^(2*p1 + 1); end k = prod(z);

Erbf k=exp(-sqrt((u-v)*(u-v)')/(2*p1^2)); Width of rbf (sigma) - Anova z = 1 + u.*v + u.*v.*min(u,v) - ((u+v)/2).*(min(u,v)).^2 + (1/3)*(min(u,v)).^3; Max. Order of terms -

Taula 54. Kernels and parameters

6.3.1.3 Step 3: Select test features

%Train / Test Data is used to select the percentage of data that we want to train and the percentage that we want to test, always from the data matrix.

Train Data Start Point is used to select where the train data begin. For example, if we have 100 data and we want to train 80 data and test 20 data, with this option we select which is the first sample of training data.

Figura 93. Test Features selection

If we work with more than two classes, the tool will enable the option �Additional options for more than 2 classes�. There are two more options we can choose:

- one versus all

- one versus one

Figura 94. Kind of test to do selection

With option �One versus all� we select the class we want to classify against all the other ones.

With option �One versus one� we select the two classes we want to classify.

Page 101: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

101

After having select all this options we can execute the button RUN with the option PLOT checked or not.

Figura 95. Program execution

After executing RUN in Log Window appears the information calculated by the tool. This information can be divided into 4 parts:

1) Test Information: shows the options we have select to do the test (parameters value, kernel type, percentage of training and test data and kind of test selected).

2) Support Vector Classification: the tool gives us the values calculated after applying the selected options.

3) Predicted Classification: the tool makes a prediction of the test data. It returns the class where the data is included.

4) Classification error: The tool compares the Predicted Classification with the real class that the tested data belongs to. If all of them match then the error is 0. Otherwise, the tool calculates the number of errors.

6.3.1.4 Step 5: Select data matrix for data classification

Step 5 �Select Data Matrix for Data Classification� is optional. If we have a set of unclassified data, we can try to classify it based on the last test executed with last train values.

To select this unclassified data, basically the process is the same explained for the data matrix of step 1. The only difference is that this unclassified data matrix does NOT contain the class column.

One the unclassified data matrix is selected, the �CLASSIFY� button will be enabled.

Figura 96. Load new data

Page 102: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

102

Figura 97. New Data Classification

In this example we can see in the Log Window that te tool has classified the data in 2 classes: class -2 and class 0. In one versus all mode, class 0 means the rest of the classes.

It�s important to remark that after pressing the CLASSIFY button, this data is classified based on the last training done (last RUN executed). Also if you select a data matrix to classify that is not related to the training done, you�ll get incorrect results.

It�s also possible to plot the results if the PLOT checkbox is selected.

Once all these steps have been followed, the user can play with all the enabled controls as desired: changing kernel type, loading new data matrix, etc. The results will be shown in the Log Window. In this way the user can do several tests and all of them will be recorded in the Log Window, that can be saved in a text file.

Please take into account that working with long data matrix may take some seconds to do the calculations. In the Log Window you�ll see a message:

Page 103: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

103

Figura 98. Waiting indicator

6.3.2 Load Project This option allows us to load a project saved in an old session and to continue

working with it, modifying it, including or deleting more tests.

6.3.3 Save Project With this option we save the project. In case it is the first time that we save it, it

works as a �Save Project as�.

Once it has been saved the following screen appears.

Figura 99. Save Project Option

Page 104: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

104

6.3.4 Save Project As This option allow us to save the project where we want and with the name we want.

Figura 100. Save Project As Option

6.3.5 Close Project This option allows us to close the project. After selecting this option, the tool ask us

if we are really sure by the following window:

Figura 101. Close Option Project

In case we select the option �No� we�ll back to our last screen. Otherwise, if we select �Yes� option, we will exit the program. Take into account that if we close the project before saving data, the tests done will be lost.

Page 105: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Manual User�s Guide

105

Figura 102. Close Project Option Yes

6.3.6 Exit The option Exit also ask us if we are sure to exit or not. We can lose data that not

saved before if we select option �Yes�.

Figura 103. Exit Option

Page 106: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Comandes Útils de Matlab

106

7 Comandes Útils de Matlab

7.1 Com Entrar i Sortir de Matlab Per entrar a Matlab: clickar l�icona �Matlab� si tenim un accés directe o bé anar a

buscar el fitxer matlab.exe.

Per sortir de Matlab: File ! Exit Matlab

7.2 Variables i el Workspace

7.2.1 Definició de Nombres i Caràcters

1) Definició d�un escalar

a=3

2) Definició d�un vector

v = [3 5 7 ]

3) Definició d�una matriu

M1=[1 2 3; 4 5 6]

O bé

M2=[1 2 3

4 5 6]

4) Definició de caràcters

C=�abc�

7.2.2 Examinar Nombres i Caràcters

Comanda Matlab Obtenim who Llista els noms de totes les variables que s�han definit size Size (nom) retorna la mida de la variable (nom) clear Borra els valors de totes les variables definides

Taula 55. Examinar nombres i caràcters

Page 107: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Comandes Útils de Matlab

107

7.2.3 Comandes de Workspace

Comanda Matlab

Obtenim

clear Borra el workspce clc Esborra la pantalla de comandes de Matlab diary Grava tot el que est veu en la finestra de Matlab en un fitxer de text help Llista tots els operadors i les funcions disponibles help (cmd) Llista el fitxer d�ajuda de la comanda cmd. load Carrega el workspace matlab.mat load (nom) Carrega el workspace nom.mat save Grava totes les variables definides en un workspace de Matlab anomenat

matlab.mat save (nom) Grava totes les variables definides en un workspace de Matlab anomenat

nom.mat Taula 56. Comandes de Workspace

7.2.3.1 Funció Load

La funció Load llegeix fitxers binaris que contenen matrius generades en funcions anteriors de Matlab o llegeix fitxers de text que contenen dades numèriques.

7.3 Funcions Matemàtiques

7.3.1 Funcions Matemàtiques Bàsiques

Comanda Matlab Obtenim + Operador suma - Operador resta * Operador multiplicació / Divisió de la dreta ! (b/a=b*Inv(a)) \ Divisió de l�esquerra ! (b\a=Inv(a)*b) ^ Operador exponencial

Taula 57. Funcions Matemàtiques

7.4 Treballar amb Matrius La forma més fàcil de modificar un matriu es clicant dues vegades sobre ella al

workspace, i s�obrirà una eina tipus Excel que permet afegir i esborrar files i columnes, modifcar dades, etc. A més a més Matlab proveeix d�algunes altres funcions de generació bàsica de matrius, per exemple:

Comanda Matlab Obtenim Zeros Matriu tot zeros

Page 108: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Comandes Útils de Matlab

108

Ones Matriu tot uns Rand Elements aleatoris distribuits uniformement Randn Elements aleatoris distribuits normalment

Taula 58. Treballar amb Matrius

Per exemple:

Comanda Matlab Obtenim Z = Zeros(2,4) Z =

0 0 0 0

0 0 0 0

F = 5*ones(3,3) F =

5 5 5

5 5 5

5 5 5

N = fix (10*rand(1,10)) N = 4 9 4 4 8 5 2 6 8 0

R = randn(4,4) R = -0.4326 -1.1465 0.3273 -0.5883 -1.6656 1.1909 0.1746 2.1832 0.1253 1.1892 -0.1867 -0.1364 0.2877 -0.0376 0.7258 0.1139

Taula 59. Comandes de Matlab

Page 109: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Glossari

109

8 Glossari

GUI: Graphical User Interface

Guide: Eina de Matlab per implementar Graphical User Interfaces

Función Kernel: mesura de semblança entre un conjunt d�atributs

n/a: no aplica

RBF: Radial Basis Function

SVM: Support Vector Machines

Toolbox: conjunt de rutines existents que implementen la teoria de classificació dels SVM�s

Page 110: Programació d’un Graphical User Interface (GUI) per a la …deeea.urv.cat/public/PROPOSTES/pub/pdf/1120pub.pdf · Programació d’un Graphical User Interface (GUI) per a la Classificació

Referències

110

9 Referències

[1] S.R. Gunn. Support vector machines for classification and regression. Technical Report

ISIS-1-98, Department of Electronics and Computer Science, University of Southampton, 1998.

[2] O.Gualdrón et alt., Variable Selection for support vector machine based multisensor systems, Sensors and Actuators B 122 (2007) 259-268.

[3] Cristopher J.C. Burges, A Tutorial on Support Vector Machines for Pattern Recognition, Data Min. Knowl. Disc. 2 (1998) 121-167.

[4] Vojislav Kecman, Learning and Soft Computing, Support Vector Machines, Neural Networks and Fuzzy Logic Models, The MIT Press, Cambridge, MA, USA (2001), capítol 2 i 5.

[5] Florian Markowetz, Support Vector Machines – an introduction, in: Support Vector Machines: Theory and Applications, Springer Verlag, Berlin, (2005).

[6] Andrew W. Moore, Support Vector Machines, School of Computer Science Carnegie Mellon University, (2001).

[7] Ron Meir, Support Vector Machines, an introduction. Department of Electrical Engineering Technion, Israel, (2002).

[8] Matlab Help,The Mathworks Inc., USA.