SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
Memoria de prácticas de Aprendizaje y Percepción (APP)
ETSINF, Universitat Politècnica de València, Junio de 2014
David Villota Beltrán
davilbel@fiv.upv.es
Resumen
En este documento se pretende exponer el trabajo
realizado en las prácticas de la asignatura de
Aprendizaje y Percepción –APP- de 4º Curso de
Ingeniería Informática. Se ha abordado la siguiente
tarea principalmente: A partir de la facilitación de
diversos archivos de características, tanto de
entrenamiento, para la construcción del clasificador,
como de test, se ha procedido a procesarlos con tres
diferentes algoritmos: k-nn (k vecinos más cercanos)
y Perceptrón, para los datos geométricos y hmm
(modelo oculto de Márkov) para los datos
estructurales con el fin de obtener resultados
concluyentes. A continuación, se muestran los
resultados obtenidos y las conclusiones a las que se
ha llegado.
K-nn | perceptron | hmm | gauss2D | ocr20x20 |
traveller | test | training | errors | graphics
1 k-nn – gauss2D
Algoritmo: k-nn
Tarea: gauss2D
Parámetros experimentales: k = 1, 5, 10, 15, 20, 25, 30.
Para llevar a cabo esta tarea he utilizado el programa
facilitado en C knnc.
Antes de nada, es necesario obviar las 5 primeras
líneas del fichero de test gauss2D.te, ya que no son
relevantes en la obtención de los datos. Lo hago del
siguiente modo:
tail –n +6 gauss2D.te | awk '{print($NF);}'
> test
A continuación, procedo a obtener la clasificación
por k-vecinos más cercanos variando k en 1, 5, 10,
15, 20, 25, 30 y comparamos el último campo del
resultado (la clase de la característica) con el fichero
de test para obtener el error pertinente. Realizo todo
ello en un solo comando de la siguiente manera:
for k in 1 5 10 15 20 25 30 ; do echo -n
"$k " ; ./knnc -k $k gauss2D.tr gauss2D.te
| paste test - | awk '{if ($1!=$2)
e++;}END{print(e*100/NR);}' ; done > result
El fichero resultante result muestra una tabla [1] con
el número de vecinos en la primera columna y la tasa
de error obtenido en la segunda:
k error (%)
1 9.6
5 8.55
10 7.8
15 7.6
20 7.45
25 7.5
30 7.65
[1] Tasa de error resultante para k
Voy a mostrarlo gráficamente [2] para que se aprecie
mejor el resultado:
[2] Tasa de error resultante para k variable
Se observa que, al aumentar el número de vecinos
más cercanos mejora ínfimamente la clasificación. Al
principio es una mejora significativa pero conforme
aumenta k a valores mayores de 20, la mejora cesa e
incluso el error aumenta. Esto puede ser debido a que
los datos de aprendizaje son lo suficientemente
relevantes y hay una ausencia de ruido, lo que
favorece la clasificación con pocos vecinos más
cercanos, y al elegir un número tan elevado de
vecinos se confunden las fronteras de decisión y se
comete un error más significativo. En este caso, por
lo tanto, nos quedaremos con k=20, lo que nos dará
una tasa de error del 7.45%.
2 perceptron – ocr20x20
Algoritmo: k-nn
Tarea: ocr20x20
Iteraciones: 20
Parámetros experimentales:
α = 1, 0.1, 0.01,
β = 1, 1e-10, 1e-30.
Para llevar a cabo esta tarea he utilizado el script
facilitado en octave percep.m, modificando las líneas
marcadas con break ( ) en la siguiente captura [3] (se
ha obviado mostrar el bucle for, ya que es demasiado
largo):
[3] Líneas modificadas del script percep.m
Antes de nada, al igual que en la primera tarea, es
necesario deshacerse de las 5 primeras líneas del
fichero de test ocr20x20.te. Lo hago del siguiente
modo:
tail –n +6 ocr20x20.te | awk
'{print($NF);}' > test
A continuación, procedo a sacar la clase resultante
ejecutando el algoritmo perceptrón modificado y
seguidamente, vemos que es necesario borrar la
cabecera y las dos últimas líneas (que contienen
líneas vacías) del fichero generado class para así
compararlo con el fichero de test y obtener la tasa de
error pertinente. Realizo todo ello en un solo
comando del siguiente modo:
tail -n +6 class | head -n -2 | awk '{m=1;
for (i=2;i<=NF;i++) if ($i>$m) m=i;
print(m-1);}' | paste test - | awk '{if
($1!=$2) e++;} END{print(e*100/NR);}'
En este caso, el comando nos devuelve una tasa de
error de 5.5. Finalmente para continuar recibiendo
resultados, vamos cambiando los valores de α y β en
el script utilizado y obtenemos todas las tasas de
error que necesitamos para llegar a una conclusión
convincente. Ahora muestro, tanto en la tabla [4],
como en la gráfica [5], los resultados obtenidos:
α Β error (%)
1 1 5.5
0.1 1 4
0.01 1 4.75
1 1,00E-10 5.5
0.1 1,00E-10 5.5
0.01 1,00E-10 5.5
1 1,00E-30 6.875
0.1 1,00E-30 6.875
0.01 1,00E-30 5.75
0.001 1 3.625
0.0001 1 3.5
[4] Tasa de error resultante para α y β variable (tabla)
*He añadido dos pruebas complementarias para
conseguir el menor error posible, aumentando las
iteraciones a 100.
[5] Tasa de error resultante para α y β variable (gráfica)
La convergencia y calidad del algoritmo perceptrón
depende estrechamente de los valores de α y β. Alfa
determina la velocidad de aprendizaje, cuanto más
pequeña sea, más suave es la convergencia pero,
como contrapartida, el número de iteraciones será
mayor (pasamos de menos de 20 iteraciones para α >
0.01 a 100, por lo menos, para α < 0.001). Con una
beta suficientemente grande obtenemos buenos
resultados, se obtienen fronteras de decisión
centradas que minimizan el error de clasificación. En
nuestro caso, el algoritmo converge con lo que se
puede deducir que los conjuntos de entrenamiento
son linealmente separables (o, al menos en gran
medida).
Obtenemos entonces el mejor resultado con un factor
de aprendizaje de 0.01 y un margen de 1.
3 hmm – traveller
Algoritmo: hmm
Tarea: traveller
Iteraciones: 20
Parámetros experimentales:
l = 5, 10, 15, 20, 25, 30, 35, 40
Para llevar a cabo esta última tarea he utilizado la
herramienta strclass, que clasifica las muestras
haciendo uso del algoritmo de Viterbi sobre cadenas
ocultas del modelo de Márkov. Tras ejecutar el
siguiente script:
for n in 5 10 15 20 25 30 35 40
do
./strclass -n $n traveller.tr > $n.hmm
done
obtengo 8 ficheros correspondientes al número de
estados de cada hmm (5, 10, 15, 20, 25, 30, 35, 40).
Posteriormente, con el script que mostraré a
continuación comparo cada uno de los ficheros
anteriores con los ficheros de test y obtengo la tasa
de error:
rm -r ./result;
for n in 5 10 15 20 25 30 35 40
do
echo -n "$n " >> result;
./strclass -m $n.hmm traveller.te | awk
'{if ($1!=$2) e++;} END{print(e*100/NR);}
done' >> result
done
Seguidamente, muestro los datos obtenidos, tanto en
forma de tabla [6] como en forma de gráfica [7], para
una mejor percepción:
l error (%)
5 3.55677
10 2,94118
15 3,21477
20 3,07798
25 2,66758
30 3,41997
35 3,21477
40 3,14637
[6] Tasa de error resultante para l estados variable (tabla)
[7] Tasa de error resultante para l estados variable (gráfica)
El número de estados en el algoritmo de Viterbi
depende directamente de la longitud de los datos de
aprendizaje, por lo que cuanto más largas sean las
cadenas más estados se necesitarán para
representarlo. En mi caso, tengo cadenas que van
desde 10 hasta 131 símbolos, con lo cual, es de
esperar que el número de estados esté comprendido
entre estos dos valores. Una vez tenemos un número
de estados apropiado, ampliar el número de estados
no mejorará el número de aciertos. Esto es debido a
que modelos demasiado grandes no clasifican bien
las muestras más pequeñas. Para esta tarea me quedo
entonces con un modelo oculto de Márkov de 25
estados con una tasa de error del 2.66758%, aunque
seguramente si probásemos con un número de
estados un poco mayor encontraríamos una solución
más ajustada.
Referencias
[1] Material de PoliformaT.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Algoritmos secuenciales resueldos
Algoritmos  secuenciales resueldosAlgoritmos  secuenciales resueldos
Algoritmos secuenciales resueldos
 
Metodo del eslabón
Metodo del eslabónMetodo del eslabón
Metodo del eslabón
 
Leccion evaluativa 2
Leccion evaluativa 2Leccion evaluativa 2
Leccion evaluativa 2
 
Ejercicios condicionales simples
Ejercicios condicionales simplesEjercicios condicionales simples
Ejercicios condicionales simples
 
Problemas propuestos clase 0-1
Problemas propuestos  clase 0-1Problemas propuestos  clase 0-1
Problemas propuestos clase 0-1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Io 3ra modelo de transporte
Io 3ra modelo de transporteIo 3ra modelo de transporte
Io 3ra modelo de transporte
 
Nancy carrillo perdomo
Nancy carrillo perdomoNancy carrillo perdomo
Nancy carrillo perdomo
 
Guia 2nd o & 3er
Guia 2nd o & 3erGuia 2nd o & 3er
Guia 2nd o & 3er
 
Ejercicios de estructura secuencial
Ejercicios de estructura secuencialEjercicios de estructura secuencial
Ejercicios de estructura secuencial
 
Trabajo final programacion
Trabajo final programacionTrabajo final programacion
Trabajo final programacion
 
Matlab graficos
Matlab graficosMatlab graficos
Matlab graficos
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
 
Ejemplos en PSeint
Ejemplos en PSeintEjemplos en PSeint
Ejemplos en PSeint
 
MÁ X I M O S Y MÍ N I M O S
MÁ X I M O S  Y  MÍ N I M O SMÁ X I M O S  Y  MÍ N I M O S
MÁ X I M O S Y MÍ N I M O S
 
Laboratorio 1 koshy_en_maxima
Laboratorio 1 koshy_en_maximaLaboratorio 1 koshy_en_maxima
Laboratorio 1 koshy_en_maxima
 
Funciones con vectores
Funciones con vectoresFunciones con vectores
Funciones con vectores
 
Matlab
MatlabMatlab
Matlab
 
Distribuciones comúnmente usadas
Distribuciones comúnmente usadasDistribuciones comúnmente usadas
Distribuciones comúnmente usadas
 
Matlab (1)
Matlab (1)Matlab (1)
Matlab (1)
 

Similar a Aprendizaje y percepción - memoria de prácticas

Similar a Aprendizaje y percepción - memoria de prácticas (20)

Deber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-niseDeber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-nise
 
Matlab principios
Matlab principiosMatlab principios
Matlab principios
 
Int_Octave_II_2021.pptx
Int_Octave_II_2021.pptxInt_Octave_II_2021.pptx
Int_Octave_II_2021.pptx
 
Computacion
ComputacionComputacion
Computacion
 
laboratorio1 de diniz
laboratorio1 de dinizlaboratorio1 de diniz
laboratorio1 de diniz
 
Programación en matlab
Programación en matlabProgramación en matlab
Programación en matlab
 
Simulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funcionesSimulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funciones
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
 
DATOS AGRUPADOS.pptx
DATOS AGRUPADOS.pptxDATOS AGRUPADOS.pptx
DATOS AGRUPADOS.pptx
 
Solución de Problemas de Ingeniería con MATLAB
Solución de Problemas de Ingeniería con MATLABSolución de Problemas de Ingeniería con MATLAB
Solución de Problemas de Ingeniería con MATLAB
 
RESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porrasRESOLUCION Capitulo4 soria porras
RESOLUCION Capitulo4 soria porras
 
Clase 10
Clase 10Clase 10
Clase 10
 
MN01_-_Introduccion_Matlab.pdf
MN01_-_Introduccion_Matlab.pdfMN01_-_Introduccion_Matlab.pdf
MN01_-_Introduccion_Matlab.pdf
 
Matlab
MatlabMatlab
Matlab
 
Tarea fra.docx
Tarea fra.docxTarea fra.docx
Tarea fra.docx
 

Último

Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxChristopherOlave2
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)ssuser563c56
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolicalf1231
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricoalexcala5
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 

Último (20)

Clase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptxClase 2 Revoluciones Industriales y .pptx
Clase 2 Revoluciones Industriales y .pptx
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)Voladura Controlada  Sobrexcavación (como se lleva a cabo una voladura)
Voladura Controlada Sobrexcavación (como se lleva a cabo una voladura)
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
07 MECANIZADO DE CONTORNOS para torno cnc universidad catolica
 
hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
presentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctricopresentacion medidas de seguridad riesgo eléctrico
presentacion medidas de seguridad riesgo eléctrico
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 

Aprendizaje y percepción - memoria de prácticas

  • 1. Memoria de prácticas de Aprendizaje y Percepción (APP) ETSINF, Universitat Politècnica de València, Junio de 2014 David Villota Beltrán davilbel@fiv.upv.es Resumen En este documento se pretende exponer el trabajo realizado en las prácticas de la asignatura de Aprendizaje y Percepción –APP- de 4º Curso de Ingeniería Informática. Se ha abordado la siguiente tarea principalmente: A partir de la facilitación de diversos archivos de características, tanto de entrenamiento, para la construcción del clasificador, como de test, se ha procedido a procesarlos con tres diferentes algoritmos: k-nn (k vecinos más cercanos) y Perceptrón, para los datos geométricos y hmm (modelo oculto de Márkov) para los datos estructurales con el fin de obtener resultados concluyentes. A continuación, se muestran los resultados obtenidos y las conclusiones a las que se ha llegado. K-nn | perceptron | hmm | gauss2D | ocr20x20 | traveller | test | training | errors | graphics 1 k-nn – gauss2D Algoritmo: k-nn Tarea: gauss2D Parámetros experimentales: k = 1, 5, 10, 15, 20, 25, 30. Para llevar a cabo esta tarea he utilizado el programa facilitado en C knnc. Antes de nada, es necesario obviar las 5 primeras líneas del fichero de test gauss2D.te, ya que no son relevantes en la obtención de los datos. Lo hago del siguiente modo: tail –n +6 gauss2D.te | awk '{print($NF);}' > test A continuación, procedo a obtener la clasificación por k-vecinos más cercanos variando k en 1, 5, 10, 15, 20, 25, 30 y comparamos el último campo del resultado (la clase de la característica) con el fichero de test para obtener el error pertinente. Realizo todo ello en un solo comando de la siguiente manera: for k in 1 5 10 15 20 25 30 ; do echo -n "$k " ; ./knnc -k $k gauss2D.tr gauss2D.te | paste test - | awk '{if ($1!=$2) e++;}END{print(e*100/NR);}' ; done > result El fichero resultante result muestra una tabla [1] con el número de vecinos en la primera columna y la tasa de error obtenido en la segunda: k error (%) 1 9.6 5 8.55 10 7.8 15 7.6 20 7.45 25 7.5 30 7.65 [1] Tasa de error resultante para k Voy a mostrarlo gráficamente [2] para que se aprecie mejor el resultado: [2] Tasa de error resultante para k variable Se observa que, al aumentar el número de vecinos más cercanos mejora ínfimamente la clasificación. Al principio es una mejora significativa pero conforme aumenta k a valores mayores de 20, la mejora cesa e incluso el error aumenta. Esto puede ser debido a que los datos de aprendizaje son lo suficientemente relevantes y hay una ausencia de ruido, lo que favorece la clasificación con pocos vecinos más cercanos, y al elegir un número tan elevado de vecinos se confunden las fronteras de decisión y se comete un error más significativo. En este caso, por lo tanto, nos quedaremos con k=20, lo que nos dará una tasa de error del 7.45%.
  • 2. 2 perceptron – ocr20x20 Algoritmo: k-nn Tarea: ocr20x20 Iteraciones: 20 Parámetros experimentales: α = 1, 0.1, 0.01, β = 1, 1e-10, 1e-30. Para llevar a cabo esta tarea he utilizado el script facilitado en octave percep.m, modificando las líneas marcadas con break ( ) en la siguiente captura [3] (se ha obviado mostrar el bucle for, ya que es demasiado largo): [3] Líneas modificadas del script percep.m Antes de nada, al igual que en la primera tarea, es necesario deshacerse de las 5 primeras líneas del fichero de test ocr20x20.te. Lo hago del siguiente modo: tail –n +6 ocr20x20.te | awk '{print($NF);}' > test A continuación, procedo a sacar la clase resultante ejecutando el algoritmo perceptrón modificado y seguidamente, vemos que es necesario borrar la cabecera y las dos últimas líneas (que contienen líneas vacías) del fichero generado class para así compararlo con el fichero de test y obtener la tasa de error pertinente. Realizo todo ello en un solo comando del siguiente modo: tail -n +6 class | head -n -2 | awk '{m=1; for (i=2;i<=NF;i++) if ($i>$m) m=i; print(m-1);}' | paste test - | awk '{if ($1!=$2) e++;} END{print(e*100/NR);}' En este caso, el comando nos devuelve una tasa de error de 5.5. Finalmente para continuar recibiendo resultados, vamos cambiando los valores de α y β en el script utilizado y obtenemos todas las tasas de error que necesitamos para llegar a una conclusión convincente. Ahora muestro, tanto en la tabla [4], como en la gráfica [5], los resultados obtenidos: α Β error (%) 1 1 5.5 0.1 1 4 0.01 1 4.75 1 1,00E-10 5.5 0.1 1,00E-10 5.5 0.01 1,00E-10 5.5 1 1,00E-30 6.875 0.1 1,00E-30 6.875 0.01 1,00E-30 5.75 0.001 1 3.625 0.0001 1 3.5 [4] Tasa de error resultante para α y β variable (tabla) *He añadido dos pruebas complementarias para conseguir el menor error posible, aumentando las iteraciones a 100. [5] Tasa de error resultante para α y β variable (gráfica) La convergencia y calidad del algoritmo perceptrón depende estrechamente de los valores de α y β. Alfa determina la velocidad de aprendizaje, cuanto más pequeña sea, más suave es la convergencia pero, como contrapartida, el número de iteraciones será mayor (pasamos de menos de 20 iteraciones para α > 0.01 a 100, por lo menos, para α < 0.001). Con una beta suficientemente grande obtenemos buenos resultados, se obtienen fronteras de decisión centradas que minimizan el error de clasificación. En nuestro caso, el algoritmo converge con lo que se puede deducir que los conjuntos de entrenamiento son linealmente separables (o, al menos en gran medida). Obtenemos entonces el mejor resultado con un factor de aprendizaje de 0.01 y un margen de 1.
  • 3. 3 hmm – traveller Algoritmo: hmm Tarea: traveller Iteraciones: 20 Parámetros experimentales: l = 5, 10, 15, 20, 25, 30, 35, 40 Para llevar a cabo esta última tarea he utilizado la herramienta strclass, que clasifica las muestras haciendo uso del algoritmo de Viterbi sobre cadenas ocultas del modelo de Márkov. Tras ejecutar el siguiente script: for n in 5 10 15 20 25 30 35 40 do ./strclass -n $n traveller.tr > $n.hmm done obtengo 8 ficheros correspondientes al número de estados de cada hmm (5, 10, 15, 20, 25, 30, 35, 40). Posteriormente, con el script que mostraré a continuación comparo cada uno de los ficheros anteriores con los ficheros de test y obtengo la tasa de error: rm -r ./result; for n in 5 10 15 20 25 30 35 40 do echo -n "$n " >> result; ./strclass -m $n.hmm traveller.te | awk '{if ($1!=$2) e++;} END{print(e*100/NR);} done' >> result done Seguidamente, muestro los datos obtenidos, tanto en forma de tabla [6] como en forma de gráfica [7], para una mejor percepción: l error (%) 5 3.55677 10 2,94118 15 3,21477 20 3,07798 25 2,66758 30 3,41997 35 3,21477 40 3,14637 [6] Tasa de error resultante para l estados variable (tabla) [7] Tasa de error resultante para l estados variable (gráfica) El número de estados en el algoritmo de Viterbi depende directamente de la longitud de los datos de aprendizaje, por lo que cuanto más largas sean las cadenas más estados se necesitarán para representarlo. En mi caso, tengo cadenas que van desde 10 hasta 131 símbolos, con lo cual, es de esperar que el número de estados esté comprendido entre estos dos valores. Una vez tenemos un número de estados apropiado, ampliar el número de estados no mejorará el número de aciertos. Esto es debido a que modelos demasiado grandes no clasifican bien las muestras más pequeñas. Para esta tarea me quedo entonces con un modelo oculto de Márkov de 25 estados con una tasa de error del 2.66758%, aunque seguramente si probásemos con un número de estados un poco mayor encontraríamos una solución más ajustada. Referencias [1] Material de PoliformaT.