proyecto elvira - ugrleo.ugr.es/elvira/meetings/bubion2003/proyectoelvira_c... · 2003-07-08 ·...
TRANSCRIPT
![Page 1: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/1.jpg)
Proyecto Elvira
Uncertainty Treatment in Artificial Intelligence Research GroupDepartment of Computer Science and Artificial Intelligence
Granada University (Spain)
Clasificadores En Elvira (definición y validación)
Francisco Javier García Castellano
![Page 2: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/2.jpg)
Classifier
Interfaz: Classifier.java(elvira/learning/classification/ )
learn: Construye el modelo
(parámetros y estructura)
classify: Categoriza una instancia.
Métodos :
![Page 3: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/3.jpg)
Constructor
Constructor propio de cada clasificador
En el constructor se especifican la configuración a utilizar
Ejemplo:Naive_Bayes nb=new Naive_Bayes();
CMutInfTAN tan=new CMutInfTAN(casos, false);
![Page 4: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/4.jpg)
Learn
Void learn (DataBaseCases dbc, intclassnumber);
Aprende el clasificador a partir del conjunto que se le da como argumento. Se le indica también que variable es la clase.
Ejemplo:nb.learn(casos, clase);
tan.learn(casos, clase);
![Page 5: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/5.jpg)
Classify
Vector classify (configurationinstance, int classnumber)
Categoriza la instancia. Devolviendo un vector con probabilidades para cada claseEjemplo:
Vector salida=nb.learn(instancia, clase);for (int i=0;i<salida.size();i++)
System.out.printl(“Clase “+i+ “probabilidad”+((Double)salida.elementAt(i)));
![Page 6: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/6.jpg)
Validacion
Clase: ClassifierValidation.java( elvira/learning/classification)
Train & Test
K-fold Cross-validation
Leave One Out
Test de rangos con signos de Wilcoxon para muestras pareadas
Métodos de Validación:
Utiliza ConfusionMatrix.java
![Page 7: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/7.jpg)
Constructor
ClassifierValidator (Classifier c, DataBaseCases datos, int clase)validador con un clasificador no construido.
Ejemplo:
ClassifierValidator validator= new ClassifierValidator( (Classifier)nb, casos, clase);
Base de datos con todos los casos
![Page 8: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/8.jpg)
Train & TestVector trainAndTest ()
Parte los datos en : entrenamiento y test (2/3 y1/3)
Ejemplo:Vector resultv=validator.trainAndTest();
cm=(ConfusionMatrix)resultv.elementAt(1); System.out.println(“ Train Error="+cm.getError()+" Varianza:"+cm.getVariance());cm.print();cm=(ConfusionMatrix)resultv.elementAt(1); System.out.println(“ Test Error="+cm.getError()+" Varianza:"+cm.getVariance());cm.print();
Construye el clasificador y lo valida
Devuelve 2 matrices de confusión en un Vector
![Page 9: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/9.jpg)
K-foldConfusionMatrixkFoldCrossValidation (int k)
K particiones
Ejemplo:
Construye el clasificador y lo valida k veces
Devuelve una matriz de confusión
cm=validator.kFoldCrossValidation(k); cm=(ConfusionMatrix)resultv.elementAt(1); System.out.println(“ K-Fold Error="+cm.getError()+" Varianza:"+cm.getVariance());cm.print();
![Page 10: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/10.jpg)
Leave one outConfusionMatrixleaveOneOut ()
K-Fold Cross Validation con k=n, n número de casos
Ejemplo:
Devuelve una matriz de confusión
cm=validator.leavingOneOut(); cm=(ConfusionMatrix)resultv.elementAt(1); System.out.println(“ Leave One Out Error="+
cm.getError()+" Varianza:"+cm.getVariance());cm.print();
![Page 11: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/11.jpg)
WilcoxondoublewilcoxonPairedSignedRankTest(Vector lista1, Vector lista2);
El tamaño de la muestras tiene que estar entre 6 y 25, ambos incluidos.
Éste método aplica el test de signos por rangos de Wilcoxon para muestras pareadas.
Devuelve el nivel de significación (0.05, 0.02, 0.01 ó 0)
Se aplica a 2 vectores de matrices de confusión (usa sus errores).
![Page 12: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/12.jpg)
Wilcoxon 2
ClassifierValidator validator= new ClassifierValidator( (Classifier)nb, casos, clase);
Vector matricesNB=validator.kFoldCrossValidation_Vector(k);
validator.setClassifier((Classifier)tan); Vector matricesTAN=validator.kFoldCrossValidation_Vector(k);
Se hace la misma prueba para los dos clasificadores. Devolviendo Vectores.
Se cambia de clasificador
Se usa K-Fold Cross-Validation
![Page 13: Proyecto Elvira - UGRleo.ugr.es/elvira/Meetings/Bubion2003/ProyectoElvira_C... · 2003-07-08 · (Vector lista1, Vector lista2); El tamaño de la muestras tiene que estar entre 6](https://reader034.vdocuments.pub/reader034/viewer/2022050216/5f627df576cbe901016140c7/html5/thumbnails/13.jpg)
Wilcoxon 3
ConfusionMatrix mediaNB= new ConfusionMatrix((FiniteStates)casos.getVariables().elementAt(clase)); mediaNB.average(matricesNB);
ConfusionMatrix mediaTAN= new ConfusionMatrix((FiniteStates)casos.getVariables().elementAt(clase)); mediaTAN.average(matricesTAN);
double salida=validator.wilcoxonPairedSignedRankTest(matricesNB, matricesTAN);
Se realiza el test
Si el resultados es distinto de 0, los resultados son significativos
De la lista de matrices se puede sacar la matriz media