• No se han encontrado resultados

Simulación del sistema con 289 sujetos y AC/LDA

Este apartado rompe con los esquemas de los apartados anteriores y del apartado posterior, ya que durante el proceso de simular este algoritmo se ha encontrado un problema muy importante al que se llama: Problema de imprecisión numérica y que se explica en este apartado. No se va a realizar unas medidas de rendimiento exhaustivas como en los anteriores casos ya que encontrar la solución a este problema ha supuesto la adición de un nuevo algoritmo al proyecto fin de grado que no se esperaba en ningún momento.

Antes de realizar las medidas de los pasos que se han seguido en los apartados anteriores se procedió a realizar una medida con los parámetros mostrados en la Tabla 48 y se obtuvieron los resultados de la Tabla 49. Como se puede observar se consigue una tasa de TPR del 65%. Este valor, es muy malo ya que las tasas cercanas al 50% hacen que el comportamiento del sistema sea prácticamente aleatorio.

Parámetro Valor óptimo

Coeficientes de AC 400

Dimensiones a reducir con LDA 288

Porcentaje de entreno 70

K vecinos 1

Tabla 48 – Parámetros para AC/LDA para una prueba antes de las medidas de rendimiento.

Parámetro de rendimiento Valor

TPR 65.8857%

TNR 99.8815%

FNR 34.1142%

FPR 0.118452

ACC 99.7639%

Tabla 49 – Medidas de rendimiento de una prueba en el sistema con los valores de la Tabla 48.

Además, surge un problema añadido que se ha respondido en cierta medida. Las medidas que ofrecen dos ordenadores distintos son distintas en un 10%. Esto ocurre cuando se procede, de casualidad, a probar el algoritmo en 2 ordenadores. Estas medidas se muestran en las Tablas 50 y 51:

Ordenador A

Parámetro de rendimiento Valor

TPR 75.6954%

TNR 99.9156%

FNR 24.30%

FPR 0.0843%

ACC 99.8318%

Ordenador B

Parámetro de rendimiento Valor

TPR 65.8857%

TNR 99.8815%

FNR 34.1142%

FPR 0.118452

ACC 99.7639%

Tabla 51 – Medidas de rendimiento obtenidas por el ordenador B. Estos resultados nos llevan a analizar 2 posibles errores:

§ Una mala programación del sistema: el error podría estar originado en el desarrollo del código del sistema.

§ La forma de entrenar al clasificador: la forma de elegir el porcentaje de entrenamiento. Recordemos que se hacía de forma aleatoria permutando las filas con la función randperm

de MATLAB y eligiendo un tanto por ciento de ellas al azar.

Se procede a revisar el código de cada bloque que compone el sistema no encontrando ningún error. Y también se procede a cambiar la semilla aleatoria de MATLAB por defecto en los dos ordenadores para que generen los mismos números aleatorios, no encontrando ningún indicio de que esto pueda causar el error.

Tras analizar los casos más comunes en los que nos podemos haber equivocado, se procede a realizar una ejecución en paralelo con los dos ordenadores intercambiando los datos del ordenador A con los datos del ordenador B y viceversa en cada bloque y observando si las salidas en ambos casos son distintas. Si esto sucede el error no estará en ese bloque, ya que ante entradas distintas las salidas son distintas, por lo que fijaremos en el bloque anterior, es decir, recorrer bloque a bloque desde el final al principio del sistema con los datos intercambiados y observando las salidas de ambos. Si la salida produce el mismo resultado o muy parecido el error está en ese bloque. Esto se detalla en la Figura 84:

Figura 84 – Prueba de errores por bloque entre dos ordenadores. Los pasos a seguir en cada bloque son los siguientes:

§ Se ejecuta el sistema con los parámetros de la Tabla 48 en el ordenador A y se observa la salida en el bloque correspondiente.

§ Se ejecuta el sistema con los parámetros de la Tabla 48 en el ordenador B, pero al llegar a la salida del bloque anterior se introducen los datos en el bloque del ordenador A.

§ Se repite los mismo, pero intercambiando los ordenadores.

Esta idea es difícil de explicar sin ningún esquema, por lo que se procede a comprobar el posible error en el bloque del clasificador. Los esquemas que describen este procedimiento vienen en las Figuras 85 y 86 y los resultados obtenidos vienen en las Tablas 52 y 53. Observando estas tablas vemos que la diferencia del 10% se sigue manteniendo, es decir, el bloque del clasificador ante una entrada distinta, responde con resultados distintos y además con el mismo margen. Lo que quiere decir que la entrada es distinta. Si la entrada es distinta, se debe mirar en el bloque anterior, que en este caso es LDA.

Figura 85 – Prueba de error en el bloque del clasificador ordenador A.

Resultados del ordenador A con datos de A

Resultados del ordenador A con datos

de B Parámetro de rendimiento Valor

TPR 66.8228% 75.4319%

TNR 99.8848% 99.9146%

FNR 33.1771% 24.56808%

FPR 0.115198 0.0853%

ACC 99.7704% 99.8299%

Tabla 52 – Prueba de error en el bloque del clasificador en el ordenador A.

Resultados del ordenador B con datos de B

Resultados del ordenador B con datos

de A Parámetro de rendimiento Valor

TPR 74.2313% 66.6471%

TNR 99.9105% 99.8841%

FNR 25.7686% 33.3528%

FPR 0.0894% 0.1158%

ACC 99.8216% 99.7691%

Tabla 53 – Prueba del error en el bloque del clasificador en el ordenador B.

Por suerte, se descubre que el error estaba en el bloque de LDA ya que ante entradas distintas producía el mismo resultado, lo cual indica que de alguna forma los datos no se están tratando correctamente en ese bloque. El problema se dedujo a consecuencia de estudiar la matriz de transformación a una dimensión menor (W)5. En ambos ordenadores esta matriz, devuelta por LDA, tiene números complejos. Se deduce que el hecho de que haya números complejos en esa matriz viene determinado por errores de imprecisión en el cálculo de la invertibilidad de Sw y cada ordenador devuelve una matriz W distinta. Se pueden observar unas columnas de la matriz W cuando se utiliza AC/LDA y AC/PCA-LDA en los Anexos E y F, y ver que en este sistema LDA devuelve números complejos y PCA-LDA no.

Esta desventaja que posee el propio algoritmo de LDA ya se mencionó en apartados anteriores. Y es que, a veces, la matriz Sw, no es invertible. A esto se le conoce como Small Sample Size problem

(SSS) [60]. Para que Sw sea invertible su determinante debe ser distinto de cero lo que implica que todas las filas o columnas sean vectores linealmente independientes, o desde otro punto de vista, que el rango de la matriz coincida con la dimensión de la matriz. Además, según Tharwat [60] una posible solución a este problema, es la de utilizar la combinación de PCA-LDA, solo que en este trabajo fin de grado se han realizado unos pequeños ajustes a lo que propuso Tharwat [60], y es, no reducir dimensiones en PCA para mantener toda la información discriminante posible6. La justificación matemática de como resuelve PCA-LDA el problema de LDA con la invertibilidad de Sw, no se ha conseguido averiguar, pero se ha probado como se verá en el apartado siguiente, que su rendimiento para este sistema biométrico es muy interesante abriendo nuevas puertas a futuras investigaciones.