Reconocimiento de Patrones Trabajo Final - Reconocimiento de LETRAS Mario Gonz´alez Olmedo 8 de diciembre de 2014

Abstract En el presente informe, se plantea el problema propuesto sobre clasificaci´on de caracteres, y la soluci´ on implementada en MATLAB utilizando principalmente las t´ecnicas de clasificaci´ on de vecinos m´as cercanos (k-NN) vistas en el curso, elegido a partir de resultados de evaluaciones de clasificaci´on realizadas inicialmente en Weka. Se estudia adem´ as una variante llamada fuzzy k-NN, y a partir de esta, se propone una modificaci´ on adaptada para el caso en que los caracteres a clasificar provienen del idioma espa˜ nol, incorporando frecuencias de aparici´on de letras (priors) para mejorar el desempe˜ no del clasificador.

1

Contents 1 Descripci´ on del 1.1 Objetivo . . 1.2 Enfoque . . 1.3 Alcance . . 1.4 Datos . . . 1.5 Software . .

proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

3 3 3 3 4 5

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

2 Trabajo realizado 2.1 Exploraci´on de los datos . . . . . 2.2 Preprocesamiento de los datos . . 2.3 Primeros resultados con k-NN . . 2.4 Fuzzy k-NN . . . . . . . . . . . . 2.5 Incorporando priors . . . . . . . . 2.6 Resultados sobre texto en espa˜ nol

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

6 . 6 . 6 . 7 . 9 . 10 . 11

3 Resultados finales y conclusiones

13

2

1

Descripci´ on del proyecto

1.1

Objetivo

El problema consistir´a en identificar letras a partir de un gran n´ umero de datos basados en im´agenes en blanco y negro de 26 letras may´ usculas del alfabeto (ver Figura 1). Se dispondr´a de un conjunto de muestras de entrenamiento (con caracter´ısticas dadas, previamente extra´ıdas) con el cual se dise˜ nar´a el clasificador, y luego se evaluar´a su desempe˜ no con un conjunto de muestras test. Los objetivos espec´ıficos del proyecto son: 1. Se desea lograr un sistema que sea capaz de clasificar correctamente, y en forma autom´atica, a qu´e letra corresponde cada vector de caracter´ısticas. El requerimiento m´ınimo a alcanzar es el de lograr que la media aritm´etica de las tasas de acierto por clase est´e por encima de 90%. Este requisito se impone para un sorteo de los vectores de test, asumiendo equiprobabilidad entre las clases. ˜ 2. Se desea construir un sistema para transcribir un texto en espa˜ nol (tomando la N como una N) a partir de los vector de caracter´ısticas de im´agenes provenientes de las letras de un texto. Se establece como nuevo objetivo que el sistema maximice su tasa de acierto, conociendo que el conjunto de testeo proviene de un texto en idioma espa˜ nol. 3. Comparar y comentar los resultados de ambos sistemas.

1.2

Enfoque

Se evaluar´a la utilizaci´on de t´ecnicas de selecci´on y extracci´on de caracter´ısticas vistas en el curso para reducir la dimensionalidad del espacio de caracter´ısticas, si fuera necesario. Para el primer objetivo, debido a que se dispone de muestras etiquetadas, se estudiar´a qu´e herramientas del aprendizaje supervisado son m´as eficaces para encarar el problema (t´ecnicas de clasificaci´on param´etricas y no param´etricas). Para el segundo objetivo, se intentar´a introducir informaci´on extra del problema concreto a resolver (informaci´on a priori) para mejorar el rendimiento del clasificador. En particular, se tratar´a de incorporar al clasificador a desarrollar, informaci´on sobre las frecuencias (probabilidades) de aparici´on de las letras en un texto en idioma espa˜ nol.

1.3

Alcance

Las im´agenes a ser utilizadas en el proyecto se generaron para 20 tipos de letra diferente y fueron aleatoriamente distorsionadas para generar 20000 im´agenes (ver Figura 1). A los efectos del proyecto, no se trabajar´a con las im´agenes sino con un conjunto de 16 caracter´ısticas extra´ıdas a partir de esas im´agenes.

3

Figure 1: Ejemplos de las muestras del problema

1.4

Datos

Se dispone de un conjunto de muestras de entrenamiento previamente etiquetadas en la forma (vector de caracter´ısticas, clase). Tambi´en se dispondr´a de un conjunto de muestras de prueba para la evaluaci´on final del algoritmo, el cual ser´a entregado poco antes de la evaluaci´on final. La validaci´on del desempe˜ no de los modelos ser´a realizada en el trabajo, en base al particionado de los datos de entrenamiento. El conjunto de datos de entrenamiento consistir´a en 16000 elementos. El conjunto de ˜ como test consistir´a en 4000 elementos extra´ıdos de un texto en espa˜ nol (tomando la N una N). Las caracter´ısticas son normalizadas en un rango que var´ıa entre 0 y 15, siendo representadas con n´ umeros enteros. A efectos del entendimiento general del problema, se describe brevemente en qu´e consiste cada una de las caracter´ısticas calculadas sobre las im´agenes de las letras. Por m´as detalles se puede consultar [3]. 1. x-box posici´on horizontal del recuadro (int) 2. y-box posici´on vertical del recuadro (int) 3. width ancho del recuadro (int) 4. high altura del recuadro (int) 5. onpix n´ umero total de pixels encendidos (int) 6. x-bar media de x de pixels encendidos dentro del recuadro (int) 7. y-bar media de y de pixels encendidos dentro del recuadro (int) 8. x2bar varianza de x (int) 9. y2bar varianza de y (int) 10. xybar correlaci´on entre x e y (int) 4

11. x2ybr valor medio de x * x * y (int) 12. xy2br valor medio x * y * y (int) 13. x-ege conteo medio de bordes horizontales izq a der (int) 14. xegvy correlaci´on de bordes horizontales con y (int) 15. y-ege conteo medio de bordes verticales abajo a arriba (int) 16. yegvx correlaci´on de bordes verticales con x (int) 17. clase letras may´ usculas (26 de la A a la Z)

1.5

Software

Se trabajar´a fundamentalmente con MATLAB para la implementaci´on de los algoritmos a ser utilizados por el clasificador. Asimismo, se utilizar´a el software Weka, disponible en http://www.cs.waikato.ac.nz/ml/weka para una familiarizaci´on inicial de los datos del problema.

5

2

Trabajo realizado

2.1

Exploraci´ on de los datos

Inicialmente, se exploraron los datos en Weka para alcanzar una familiarizaci´on inicial con los mismos. A partir de ello puede observarse a primera vista, seg´ un la distribuci´on de las caracter´ısticas, que algunas de ellas sirven para discriminar bien ciertas clases de otras, mientras que no distinguen adecuadamente otras clases (ver Figura 2). En general, se observa que no hay caracter´ısticas que logren buena discriminaci´on de todas las clases del problema al mismo tiempo. Esto se debe, quiz´as, a que las caracter´ısticas fueron previamente bien elegidas, lo cual motiva a no poner mucho ´enfasis en t´ecnicas de selecci´on de caracter´ısticas en una primera instancia. Adem´as, como se ver´a despu´es, el esfuerzo puesto en la optimizaci´on de los algoritmos hace que la dimensionalidad del espacio de caracter´ısticas no sea demasiado elevado como para que los tiempos de ejecuci´on fueran prohibitivos. Para una primera aproximaci´on al problema de clasificaci´on, se aplicaron distintos clasificadores del software Weka, utilizando validaci´on cruzada (10 partes) para evaluar desempe˜ no, y los par´ametros por defecto de cada clasificador. Se obtuvieron los siguientes porcentajes de aciertos: Clasificador NaiveBayes C4.5 1-NN 3-NN SVM (lineal) SVM (RBF)

% Aciertos 64.04 86.88 95.45 95.11 81.69 88.37

A ra´ız de estos datos, se decide implementar un algoritmo de clasificaci´on basado en vecinos m´ as cercanos (k-NN).

2.2

Preprocesamiento de los datos

Luego de una primera aproximaci´on a los datos del problema, se procedi´o a la implementaci´on en MATLAB. Para ello, debido a que los datos se encuentran en un formato que no es nativo de MATLAB (format .arff), se convirtieron los mismos a formato .csv, que puede utilizarse f´acilmente. Se aprovech´o este proceso adem´as para convertir la u ´ltima columna de los datos (etiquetas de los patrones) de letras a n´ umeros (del 1 al 26), que pueden usarse para trabajar mejor (por ejemplo, al indexar) en las funciones luego desarrolladas. Por otra parte, como el clasificador implementado es de la familia de los k-NN, se desarrollaron scripts1 para particionar los datos en subconjuntos m´as peque˜ nos, y de esta forma, al clasificar un patr´on dado, no se tenga que medir las distancias a cada uno de los patrones de entrenamiento, seg´ un se describe en [2], 4.5.5. As´ı, podremos m´as 1

particion optima.m, particionar.m, patrones part.m

6

Figure 2: Visualizaci´on de las caracter´ısticas adelante optimizar los tiempos de ejecuci´on del clasificador cuando es sometido a grandes cantidades de datos. Lo que logran dichos scripts es particionar el conjunto de patrones dados en 4 subconjuntos, eligiendo 2 caracter´ısticas y 2 umbrales respectivos, y tratar de que la distribuci´on sea lo m´as uniforme posible (ver Figura 3).

2.3

Primeros resultados con k-NN

A ra´ız de los resultados obtenidos en Weka, se implement´o 1-NN en MATLAB, inicialmente con c´alculo total de las distancias2 . Se consideraron varias normas para la medici´on de distancias (norma 1, norma 2, norma infinito), y la que mejor desempe˜ no mostr´o fue la norma 1 (a partir de aqu´ı se utilizar´a dicha norma). Debido a que la clasificaci´on por k-NN puede ser muy lenta si la cantidad de datos es grande, se puso empe˜ no en lograr algoritmos r´apidos de clasificaci´on, sin sacrificar significativamente el desempe˜ no de los mismos. En este sentido, primero se modific´o la funci´on anteriormente mencionada para lograr otra3 que utilice c´alculos parciales de distancias, seg´ un se detalla en [2], 4.5.5. Y adem´as de esto, acorde a lo descrito en la secci´on anterior, se implement´o una tercera funci´on4 en la cual adem´as se clasifican los patrones test usando una partici´on generada sobre los datos de entrenamiento. Se implement´o tambi´en una funci´on que arma la matriz de confusi´on5 , para poder visualizar los errores que comete el clasificador con mayor detalle. 2

k1 vecino.m k1 vecino opt.m 4 k1 vecino opt2.m 5 matriz confusion.m

3

7

Figure 3: Ejemplo de partici´on en dos variables Para comparar estas tres funciones, se evalu´o6 el desempe˜ no tomando, de las 16000 muestras disponibles, un 80% (12800 muestras) para entrenamiento y 20% (3200 muestras) para test. Los resultados7 que se obtuvieron son los siguientes8 : Funci´on % Aciertos k1 vecino.m 94.00 k1 vecino opt.m 94.09 k1 vecino opt2.m 93.44

Tiempo (seg) 81 16 6

Vemos que ya utilizando c´alculo parcial de distancias se logra reducir el tiempo de ejecuci´on a la quinta parte. Si adem´as se utilizan las particiones, se logra reducir a´ un m´as el tiempo de ejecuci´on, aunque en este caso con un peque˜ no sacrificio de rendimiento. Esta optimizaci´on ser´a valiosa m´as adelante cuando le requeriremos un poco m´as de c´alculo a nuestro clasificador, para que el tiempo de ejecuci´on no se haga excesivo. Comprobamos de esta manera adem´as, que el rendimiento de nuestro algoritmo es similar al reportado por Weka (ambos por encima al 93%). M´as adelante, se extendi´o el clasificador para considerar k vecinos: una versi´on sin utilizar particiones9 y otra versi´on usando particiones10 (ambas usan c´alculo parcial de distancias). La evaluaci´on11 de estas nuevas funciones, para varios valores de k, arroja los siguientes resultados: 6

evaluacion1.m resultados/resultados evaluacion1.m 8 En todas las ejecuciones, la m´ aquina utilizada fue un Core i3, 4 GB de RAM 9 kk vecino.m 10 kk vecino2.m 11 evaluacion2.m 7

8

kk vecino.m % Aciertos k=2 92.59 k=3 94.25 k=4 93.86 k=5 94.09 kk vecino2.m % Aciertos k=2 91.38 k=3 93.00 k=4 92.03 k=5 92.18

2.4

Tiempo (seg) 175 185 193 196 Tiempo (seg) 53 55 57 59

Fuzzy k-NN

Luego se estudi´o una variante de k-NN llamado fuzzy k-NN, siguiendo [4], la cual se explica a continuaci´on. La idea principal en la clasificaci´on cl´asica de k-NN (la considerada anteriormente) es la siguiente: dado un patr´on a clasificar, al considerar los k vecinos m´as cercanos de entre los patrones de entrenamiento disponibles, cada uno “vota” a su clase para, al final de la votaci´on, clasificar a dicho patr´on como perteneciente a la clase m´as votada. En este caso, todos los votos de los k vecinos tienen el mismo peso. En la variante que consideraremos a partir de ahora, ponderamos el voto de cada uno de los k vecinos m´as cercanos seg´ un a qu´e distancia se encuentren del patr´on a clasificar. Concretamente, dado un patr´on x a clasificar, y suponiendo que x1 , . . . , xk son los k vecinos m´as cercanos a x, entonces cada vecino xj aporta un voto equivalente a 1/kx − xj k2 uj (x) = Pk 2 i=1 1/kx − xi k

(1)

De esta forma, los vecinos m´as cercanos al patr´on x (m´as “parecidos”, seg´ un la m´etrica utilizada) tienen un voto mayor que los vecinos m´as lejanos (menos “parecidos”). El denominador se incorpora para que la totalidad de votos de los k vecinos sea 1. Notar que en este caso, fuzzy 1-NN coincide con 1-NN cl´asico, as´ı que reci´en para k ≥ 2 esta variante tiene sentido. Luego de realizada la votaci´on de los k vecinos, podemos seleccionar la clase m´as votada seg´ un estos pesos. Adem´as, contamos con una medida de seguridad sobre la clasificaci´on de dicho patr´on (pertenencia difusa a la clase arrojada por el clasificador), ya que a mayor voto de la clase seleccionada (es decir, suma de votos cercano a 1) habr´a mayor seguridad de clasificar correctamente, y si tenemos por ejemplo dos clases con votaciones 0.45 y 0.55, tendremos m´as incertidumbre y podremos entonces incorporar alguna otra informaci´on para ayudar a la clasificaci´on (por ejemplo, informaci´on a priori, clasificaci´on de otros clasificadores, etc). Se incluye la implementaci´on de la funci´on12 correspondiente a esta variante, ya in12

fuzzy kk.m

9

cluyendo todas las optimizaciones antes mencionadas para mejorar tiempos de ejecuci´on (notar que esta nueva funci´on requiere m´as computaciones que las anteriores). Se clasificaron13 los patrones test antes considerados, ahora con este nuevo clasificador (con votos ponderados) para varios valores de k (cantidad de vecinos), y se obtuvieron los siguientes resultados (sobre las mismas muestras de entrenamiento y test anteriores): fuzzy kk % Aciertos k=2 93.47 k=3 93.84 k=4 93.84 k=5 93.59

Tiempo (seg) 52 55 58 59

Puede verse que este nuevo clasificador obtiene mejores resultados al considerar m´as vecinos que en el caso k-NN cl´asico, que a su vez constituyen una mejora con respecto a los resultados obtenidos anteriormente. Adem´as de los resultados de clasificaci´on, esta funci´on fue dise˜ nada para que devuelva una matriz con las distancias totales por clase en la votaci´on interna, para cada patr´on. Con esta informaci´on, podemos revisar qu´e tipo de errores se cometi´o: cu´antos de ellos fueron en aquellos patrones en donde la seguridad del clasificador es alta (suma de votos cercano a uno) o en los dem´as, as´ı como cu´antos patrones se clasificaron correctamente, pero con poca seguridad. El an´alisis de esta matriz nos proporciona la siguiente tabla (3200 patrones clasificados usando 12800 como patrones de entrenamiento): fuzzy kk k=2 k=3 k=4 k=5 Errores con seguridad > 0.75 57 19 34 23 Aciertos con seguridad < 0.75 191 333 282 362 Conclu´ımos esta secci´on comentando que consideraremos de ahora en m´as al clasificador fuzzy 3-NN (3 vecinos) como nuestro clasificador fuzzy predilecto, tanto por su desempe˜ no en la clasificaci´on, como por poseer la m´ınima cantidad de patrones errores en aquellos patrones en los que estaba considerablemente seguro (en nuestro an´alisis, por encima del 0.75% de seguridad). En la siguiente secci´on trataremos de ayudar al clasificador fuzzy en aquellos casos donde la seguridad es baja, incorporando informaci´on a priori de clases.

2.5

Incorporando priors

Otra ventaja de las pertenencias difusas de la variante fuzzy k-NN, es que pueden incorporarse f´acilmente algunos tipos de informaci´on a priori, como por ejemplo la frecuencia de aparici´on de las letras, es decir, la probabilidad a priori de cada una de las clases del problema considerado. 13

evaluacion3.m

10

Proponemos a su vez una variante del clasificador anterior, en la cual ponderamos los votos antes considerados y sustitu´ımos el voto de la ecuaci´on (1) por: αj /kx − xj k2

uj (x) = Pk

i=1

αi /kx − xi k2

(2)

donde αj = α + (1 − α)P (ωj ) con α ∈ [0, 1], y P (ωj ) es la probabilidad a priori de la clase de xj . La motivaci´on para considerar esta variante es la siguiente: usando la ecuaci´on (1), para cada vecino se utilizaban votos que depend´ıan de la distancia al patr´on a clasificar, sin considerar la probabilidad de la clase de dicho vecino. En la nueva variante, dicho voto se pondera por el factor αj = α + (1 − α)P (ωj ) que consiste en un valor base α m´as otro que depende de la probabilidad de la clase del vecino de donde proviene el voto. As´ı, un vecino de una clase muy probable (P (ωj ) ' 1) aportar´a el voto completo (seg´ un su distancia al patr´on), un vecino de una clase poco probable (P (ωj ) ' 0) aportar´a s´olo el voto base, y los votos de vecinos de clases con probabilidades intermedias se ponderan proporcionalmente. El par´ametro α modera la importancia que le damos a las priors. Por ejemplo, el valor α = 1 nos lleva al caso anterior (ecuaci´on (1)), o sea, no le damos importancia a las priors. El valor α = 0 pondera completamente el voto por las priors, y valores intermedios ponderan proporcionalmente (dan una base α al voto, y el resto seg´ un priors). El efecto que producir´a esta ponderaci´on es la de desequilibrar la balanza para las clases m´as probables cuando la seguridad del clasificador es baja (varias clases con pertenencias difusas similares), y para patrones donde el clasificador ya tiene una seguridad casi completa, esta ponderaci´on (para ciertos valores del par´ametro α a determinar) no influye demasiado en el resultado de la clasificaci´on. Se incluye la implementaci´on de la funci´on que clasifica seg´ un esta nueva variante14 . En la siguiente secci´on, describiremos c´omo se generaron patrones provenientes de un texto en espa˜ nol para poner a prueba este u ´ltimo clasificador.

2.6

Resultados sobre texto en espa˜ nol

Como probabilidades a priori de las clases (frecuencias de letras en el idioma espa˜ nol), se tomaron los datos que se encuentran en Wikipedia: http://es.wikipedia.org/wiki/Frecuencia de aparici%C3%B3n de letras Luego se tom´o un texto en espa˜ nol al cual se le quitaron los signos de puntuaci´on y ˜ espacios (y se cambiaron las N por N), y a partir de eso se tomaron, de entre las muestras dadas, vectores de caracter´ısticas aleatorios, uno correspondiente a cada letra del texto mencionado, obteniendo as´ı un total de 1573 vectores de caracter´ısticas test a clasificar. 14

fuzzy kk priors.m

11

Luego se utilizaron otros 12800 patrones (diferentes a los utilizados para generar las muestras del texto en espa˜ nol) como muestras de entrenamiento. Para estimar el valor o´ptimo del par´ametro α de la ecuaci´on (2), conjuntamente con la cantidad de vecinos k a considerar, se utiliz´o una heur´ıstica grid-search15 sobre los datos antes mencionados. Se obtuvieron los siguientes resultados de clasificaci´on:

k k k k

=2 =3 =4 =5

α = 0.60 α = 0.65 α = 0.70 α = 0.75 92,75 92,75 92,75 92,75 93,51 93,58 93,64 93,70 93,64 93,64 93,45 92,88 93,45 93,58 93,20 92,69

Marcados est´an los dos mejores resultados, que se dan para k = 3 vecinos, y par´ametro α = 0.70 y α = 0.75. Para comparar el desempe˜ no del nuevo clasificador utilizando estos par´ametros, se clasificaron los mismos patrones con el clasificador anterior fuzzy k-NN (ecuaci´on (1). Los resultados obtenidos son los siguientes (se marcan en negro los mejores resultados por clasificador): k 2 3 4

fuzzy k-NN 89.83 88.74 88.37

c/priors, α = 0.70 c/priors, α = 0.75 — — 93,64 93,70 — —

Se observa que la incorporaci´on de las priors constituye una mejora significativa del desempe˜ no del clasificador. Por lo tanto, nuestra soluci´on para el problema de maximizar la tasa de aciertos sabiendo que el texto proviene del idioma espa˜ nol, es el modelo antes descrito (fuzzy k-NN con priors), utilizando los par´ametros k = 3 y α = 0.75.

15

grid search.m

12

3

Resultados finales y conclusiones

Para finalizar, evaluaremos el desempe˜ no de los tres clasificadores anteriormente descritos (k-NN cl´asico, fuzzy k-NN y fuzzy k-NN con priors) sobre los dos juegos de datos proporcionados para test16 . Los resultados de dicha evaluaci´on son los siguientes: • Primer juego de datos: Letras equiprobables (16000 entrenamiento, 2600 test) Clasificador % Aciertos 1-NN 98.5 fuzzy 3-NN 98.19

Tiempo (seg) 4.5 53.7

• Segundo juego de datos: Texto en espa˜ nol (16000 entrenamiento, 5000 test) Clasificador % Aciertos 1-NN 96.46 fuzzy 3-NN 96.2 fuzzy 3-NN (α = 0.75) 97.94

Tiempo (seg) 9.6 107 102

Es importante notar que en este caso, el clasificador fuzzy 3-NN no logr´o un desempe˜ no mayor que el logrado en instancias anteriores. Pero a´ un as´ı, la variante fuzzy 3-NN con priors logr´o una mejora significativa dentro de los m´argenes posibles de mejora (casi 1.5% mejor), considerando que el rendimiento de los clasificadores estudiados ya de por s´ı son buenos.

16

evaluacion final.m

13

References [1] Bishop, C. M; Pattern Recognition and Machine Learning, Springer (ISBN-139780387310732)-2006 [2] Duda, Hart and Stork; Pattern Classification, John Wiley & Sons (ISBN-100471056693)-2001 [3] Frey, Peter W y David J Slate (1991). “Letter Recognition Using Holland-Style Adaptive Classifiers”. En: Machine Learning 6, p´ag. 161. [4] Keller, J.M.; Gray, M.R.; Givens, J.A., “A fuzzy K-nearest neighbor algorithm,” Systems, Man and Cybernetics, IEEE Transactions on , vol.SMC-15, no.4, pp.580,585, July-Aug. 1985

14