Desarrollo de una biblioteca para algoritmos de clasificación ordinal en python
Grado: Ingeniería Informática
Autor: Ángel Heredia Pérez Director: Dr. Pedro Antonio Gutierrez Peña Director: Dr. Juan Carlos Fernández Caballero
4 de junio de 2020
Índice
05. Requisitos
09. Demostración
01. Introducción
06. Análisis y Diseño
02. Objetivos
10. Conclusiones
07. Casos de Prueba
03. Antecedentes
11. Bibliografía
08. Experimentación
04. Restricciones
12. Agradecimientos
01. Introducción
Machine Learning
La información es poder
Campo de las ciencias de la computación que general modelos matemáticos capaces de predecir información.
Enormes cantidades de datos se almacenan cada día pero no son útilies por sí mismos, lo más valioso es la información que se puede extraer de ellos. La minería de datos se encarga de eso último, mientras que el machine learning, le da utilidad a la información extraida.
01. Introducción
Clasificación Ordinal
Problemas de clasificación multiclase en los que las categorías muestran una relación de orden.
Ejemplo
01. Introducción
Herramientas Limitadas
No existen muchas herramientas para trabajar con la clasificación ordinal, algunos ejemplos son:
- Weka: Actualmente solo cuenta con un algoritmo de este tipo con características algo limitadas.
- ORCA: (Ordinal Regression and Classification Algorithms) Desarrollado por el grupo AYRNA, implementa muchos algoritmos para la resolución de este tipo de problemas, diferentes métricas de rendimiento, paralelismo, y ejecuciones experimentales automáticas.
01. Introducción
ORCA-Python
Adaptación y ampliación en Python del framework ORCA realizada en un Trabajo de Fin de Grado anterior.
01. Introducción
¿Qué se quiere hacer?
- Adaptar algunos de los algoritmos disponibles en ORCA para poderlos usar en ORCA-Python.
- Tratar de mejorar el propio framework.
02. Objetivos
De Formación
Operacionales
Conocimientos que obtendrá el alumno.
Necesarios para el correcto funcionamiento de los algoritmos adaptados y las mejoras introducidas al framework:
02. Objetivos
De Formación
- Estudio del lenguaje de programación Python.
- Estudio de uso de bibliotecas como numpy, pandas, matplotlib y scikit-learn.
- Estudio de la API de scikit-learn para la creación de nuevos clasificadores.
- Estudio del funcionamiento de ORCA-Python.
- Estudio del uso de la API de Python en C y C++.
02. Objetivos
Operacionales
- Desarrollo de un wrapper que permita la ejecución en Python del clasificador REDSVM de la librería libsvm-rank escrito en C++.
- Desarrollo de un wrapper que permita la ejecución en Python del clasificador SVOREX escrito en C.
- Añadir a ORCA-Python la capacidad de estandarización y normalización de los datos de entrenamiento. Se adaptarán pertinentemente los de tests.
Antecedentes
- Python para las Ciencias de la Computación
- Regresión Ordinal
- ORCA
- REDSVM
- SVOREX
- ORCA-Python
03. Antecedentes
Librerías Python
- NumPy
- Pandas
- Matplotlib
- Scikit-Learn
10
03. Antecedentes
Regresión Ordinal
Taxonomía
- Aproximaciones Ingenuas
- Métodos de Descomposición Ordinal Binaria:
- Métodos Umbral:
Como se ha comentado...
Problemas de clasificación multiclase en los que las categorías muestran una relación de orden a tener en cuenta durante el proceso de entrenamiento. También es conocida como Clasificación Ordinal.
Referencia
11
03. Antecedentes
REDSVM
Método de descomposición ordinal binaria
Descompone el problema de regresión ordinal en máquinas de soporte vectorial binarias. Se encuentra implementado en el framework ORCA y es uno de los algoritmos que se quiere adaptar a ORCA-Python.
12
03. Antecedentes
SVOREX
Método de umbral
El algoritmo se trata de una máquina de soporte vectorial preparado para resolver problemas de regresión ordinal. Su optimización se basa en el uso de restricciones explícitas durante el aprendizaje del modelo. También se encuentra implementado en ORCA y se quiere adaptar para su ejecución desde ORCA-Python.
13
04. Restricciones
Factores Estratégicos
Factores Dato
Son inherentes a la naturaleza del Trabajo y no pueden ser modificados. Determinadas por el grupo de investigación AYRNA.
Variables de diseño en las que se deberá realizar una elección entre varias posibilidades. No se imponen de forma externa.
14
04. Restricciones
Factores Dato
- Restricciones Humanas
- Restricciones Económicas
- Restricciones Temporales
- Restricciones Hardware
- Restricciones Software
15
04. Restricciones
Factores Estratégicos
- Los algoritmos se adaptarán para ser módulos de Python.
- Las estructuras de datos de C se traducirán a diccionarios de Python y viceversa con la API de Python en C y C++.
- Se usará Visual Studio Code como editor de código.
- Para las pruebas se usará el módulo de Python unnittest.
- Los módulos de Python gc y memory-profiler se usarán para controlar el uso de memoria.
16
04. Restricciones
Factores Estratégicos
- Se usará la herramienta make para compilar el código en C y C++.
- Para la elaboración de la documentación se utilizará Latex.
- Los diferentes diagramas se crearán en la plataforma online GenMyModel.
- Las manipulaciones de imagenes se realizarán en Gimp.
17
05. Requisitos
- ORCA-Python ejecutará los procesos de entrenamiento y predicción del algoritmo REDSVM desde una clase local.
- ORCA-Python ejecutará los procesos de entrenamiento y predicción del algoritmo SVOREX desde una clase local.
- Añadir a ORCA-Python la capacidad de normalización de los datos.
- Añadir a ORCA-Python la capacidad de estandarización de los datos.
18
06. Análisis y Diseño
- Casos de Uso.
- Arquitectura del Sistema.
- Diagrama de Clases.
19
06. Análisis y Diseño
Casos de Uso
Framework para Clasificación Ordinal
Los algoritmos que se desarrollaran se utilizarán a través de la interfaz ORCA-Python y por tanto, los casos de uso del presente Trabajo coinciden con los del propio framework.
20
06. Análisis y Diseño
Arquitectura del Sistema
21
06. Análisis y Diseño
Diagrama de Clases
Clasificador SVOREX:
Clasificador REDSVM:
- Clasificador SVOREX en C.
- Wrapper para SVOREX .
- API Python para SVOREX .
- Clasificador REDSVM en C++.
- Wrapper para REDSVM.
- API Python para REDSVM.
22
06. Análisis y Diseño
Diagrama de Clases
API Python para REDSVM:
API Python para SVOREX :
23
06. Análisis y Diseño
Diagrama de Clases
Funciones de preprocesado (normalización y estandarización):
24
07. Casos de Prueba
Los test de carga detectaron un posible problema que confirmó la experimentación:
Leak de memoria en SVOREX
Leak de memoria en REDSVM
25
07. Casos de Prueba
Leak Resuelto
Tras realizar las correcciones oportunas el uso de memoria durante la experimentación es el siguiente:
Uso de memoria en SVOREX
Uso de memoria REDSVM
26
08. Experimentación
Bases de Datos de Regresión Discretizadas
Bases de Datos de Clasificación Ordinal
Problemas de regresión cuyos valores de salida han sido discretizados en 5 o 10 clases de igual frecuencia. Cada base de datos cuenta con 20 particiones.
Problemas reales de clasificación ordinal y número de patrones no es tán equilibrado. Cada base de datos cuenta con 30 particiones.
27
08. Experimentación
Diseño
A tener en cuenta...
- Proceso anidado de validación cruzada de tipo 5-fold considerando solo los datos de entrenamiento para optimizar los parámetros.
- Métricas a optimizar: MAE y MZE.
- Clasificadores a utilizar:
- REDSVM. Hiperparámetros:
- g: Valor de gamma en la función de kernel.
- c: Parámetro de coste.
- SVOREX. Hiperparámetros:
- Valor de kappa en la función de kernel
- c: Parámetro de coste.
28
08. Experimentación
Resultados
Media y desviación típica para cada método de todas las particiones de cada conjunto de datos de la métrica MAE
29
08. Experimentación
Resultados
Media y desviación típica para cada método de todas las particiones de cada conjunto de datos de la métrica MZE
30
08. Experimentación
Comparación
Comparación del MZE obtenido
Comparación del MAE obtenido
Referencia
31
Desarrollo de una biblioteca para algoritmos de clasificación ordinal en python (09. Demostración)
Grado: Ingeniería Informática
Autor: Ángel Heredia Pérez Director: Dr. Pedro Antonio Gutierrez Peña Director: Dr. Juan Carlos Fernández Caballero
4 de junio de 2020
32
10. Conclusiones
Futura Mejoras
- Migración completa de algoritmos de regresión ordinal.
- Mejora de procesamiento paralelo.
- Interfaz gráfica.
- Instalar mediante pip los módulos de los algoritmos
- Uso de más de una métrica para guiar los experimentos
- Se han adaptado los algoritmos REDSVM y SVOREX a ORCA-Python mediante wrappers.
- Se mantiene la facilidad de uso de ORCA-Python gracias a los makefiles.
- Capacidad de normalización y estandarización añadida a ORCA-Python.
- Se han desarrollado casos de prueba para comprobar funcionamiento de los algoritmos adaptados
- Se han comparado los resultados de los algoritmos adaptados con la implementación original
33
11. Bibliografía
- Pedro Antonio Gutiérrez, María Pérez-Ortiz, Javier Sánchez-Monedero, Francisco Fernández Navarro, and César Hervás Martínez. Ordinal regression methods: Surveyand experimental study. IEEE Transactions on Knowledge and DataEngineering, 28(1):127–146, 2016
- Mark Hall, Eibe Frank, Geoffrey Holmes, Bernhard Pfahringer, Peter Reutemann, and Ian H. Witten. The weka data mining software: anupdate. SIGKDD Explorations, 11, pages 10–18, 2009
- Javier Sánchez Monedero, Pedro Antonio Gutiérrez, and María Pérez Ortiz. Orca: A matlab/octave toolbox for ordinal regression. Journal of Machine Learning Research, 20, pages 1–4, 2019.
- MATLAB. version 9.0 (R2016a). The MathWorks Inc., Natick, Massachusetts, 2016.
- John W. Eaton. Gnu Octave 4.2 Reference Manual. Samurai MediaLimited, London, GBR, 2017.
34
11. Bibliografía
11. Bibliografía
- Iván Bonaque Muñoz, Pedro Antonio Gutiérrez Peña, and Javier Sánchez Monedero. Framework en python para problemas de clasificación ordinal, 2019.
- G. van Rossum. Python tutorial. Technical Report CS-R9526, Centrumvoor Wiskunde en Informatica (CWI). 5 1995.
- Sitio oficial de numpy. https://numpy.org/. [Online. Última consulta: 02-12-2019].
- Sitio oficial de pandas. https://pandas.pydata.org/. [Online. Última consulta: 02-12-2019].
- Sitio oficial de matplotlib. https://matplotlib.org/. [Online. Última consulta: 02-12-2019].
- Sitio oficial de scikit-learn. https://scikit-learn.org/stable/. [Online. Última consulta: 02-12-2019].
35
11. Bibliografía
11. Bibliografía
- Developing scikit-learn estimators. https://scikit-learn.org/stable/developers/develop.html. [Online. Última consulta: 25-04-2020].
- Python/c api reference manual. https://docs.python.org/3/c-api/index.html. [Online. Última consulta: 14-04-2020].
- Brian Kernighan and Dennis Ritchie. The C Programming Language. Prentice Hall; Primera edición, 1978.
- Bjarne Stroustrup. The C++ Programming Language. Addison WesleyPub Co; Tercera edición, 2 2000.
- Hsuan Tien Lin and Ling Li. Reduction from cost-sensitive ordinal ranking to weighted binary classification. Neural Computation, 24(5):1329–1367, 2012.
- Ling Li and Hsuan-Tien Lin. Ordinal regression by extended binaryclassification. Annual Conference on Neural Information Processing Systems, 19:865–872, 01 2006.
36
11. Bibliografía
11. Bibliografía
- Pedro Antonio Gutiérrez, María Pérez Ortiz, Javier Sánchez Monedero, Francisco Fernández Navarro, and César Hervás Martínez. Ordinal regression methods: Survey and experimental study. IEEE Transactions on Knowledge and Data Engineering, 28(1):127–146, 2016.
- Wei Chu and Sathiya Keerthi. Support vector ordinal regression and its solution. 2004.
- Wei Chu and Sathiya Keerthi. Support vector ordinal regression. Neural Computation, 19(3):792–815, 2007.
- Sitio oficial de visual studio code. https://code.visualstudio.com/. [Online. Última consulta: 27-05-2020].
- Unit testing framework. https://docs.python.org/3/library/unittest.html. [Online. Última consulta: 22-04-2020].
- Garbage collector interface. https://docs.python.org/3/library/gc.html. [Online. Última consulta: 01-05-2020]
37
11. Bibliografía
11. Bibliografía
- Memory-profiler. https://pypi.org/project/memory-profiler/. [Online. Última consulta: 01-05-2020].
- Gnu make. https://www.gnu.org/software/make/manual/make.html. [Online. Última consulta: 22-04-2020]
- Sitio oficial de overleaf. https://es.overleaf.com/. [Online. Últimaconsulta: 27-05-2020]
- Sitio oficial de genmymodel. https://www.genmymodel.com/. [Online. Última consulta: 27-05-2020]
- Ordinal regression with svm. http://www.work.caltech.edu/~htlin/program/libsvm/. [Online. Última consulta: 22-04-2020].
- Chih Chung Chang and Chih-Jen Lin. LIBSVM: A library for supportvector machines. ACM Transactions on Intelligent Systems and Techno-logy, 2:27:1–27:27, 2011. Software available at http://www.csie.ntu.edu.tw/~cjlin/libsvm
38
Gracias por su atención
¿Alguna pregunta?
Desarrollo de una Biblioteca para Algoritmos de Clasificación Ordinal en Python
Anthares101
Created on June 9, 2020
Defensa TFG
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Higher Education Presentation
View
Psychedelic Presentation
View
Vaporwave presentation
View
Geniaflix Presentation
View
Vintage Mosaic Presentation
View
Modern Zen Presentation
View
Newspaper Presentation
Explore all templates
Transcript
Desarrollo de una biblioteca para algoritmos de clasificación ordinal en python
Grado: Ingeniería Informática
Autor: Ángel Heredia Pérez Director: Dr. Pedro Antonio Gutierrez Peña Director: Dr. Juan Carlos Fernández Caballero
4 de junio de 2020
Índice
05. Requisitos
09. Demostración
01. Introducción
06. Análisis y Diseño
02. Objetivos
10. Conclusiones
07. Casos de Prueba
03. Antecedentes
11. Bibliografía
08. Experimentación
04. Restricciones
12. Agradecimientos
01. Introducción
Machine Learning
La información es poder
Campo de las ciencias de la computación que general modelos matemáticos capaces de predecir información.
Enormes cantidades de datos se almacenan cada día pero no son útilies por sí mismos, lo más valioso es la información que se puede extraer de ellos. La minería de datos se encarga de eso último, mientras que el machine learning, le da utilidad a la información extraida.
01. Introducción
Clasificación Ordinal
Problemas de clasificación multiclase en los que las categorías muestran una relación de orden.
Ejemplo
01. Introducción
Herramientas Limitadas
No existen muchas herramientas para trabajar con la clasificación ordinal, algunos ejemplos son:
01. Introducción
ORCA-Python
Adaptación y ampliación en Python del framework ORCA realizada en un Trabajo de Fin de Grado anterior.
01. Introducción
¿Qué se quiere hacer?
02. Objetivos
De Formación
Operacionales
Conocimientos que obtendrá el alumno.
Necesarios para el correcto funcionamiento de los algoritmos adaptados y las mejoras introducidas al framework:
02. Objetivos
De Formación
02. Objetivos
Operacionales
Antecedentes
03. Antecedentes
Librerías Python
10
03. Antecedentes
Regresión Ordinal
Taxonomía
Como se ha comentado...
Problemas de clasificación multiclase en los que las categorías muestran una relación de orden a tener en cuenta durante el proceso de entrenamiento. También es conocida como Clasificación Ordinal.
Referencia
11
03. Antecedentes
REDSVM
Método de descomposición ordinal binaria
Descompone el problema de regresión ordinal en máquinas de soporte vectorial binarias. Se encuentra implementado en el framework ORCA y es uno de los algoritmos que se quiere adaptar a ORCA-Python.
12
03. Antecedentes
SVOREX
Método de umbral
El algoritmo se trata de una máquina de soporte vectorial preparado para resolver problemas de regresión ordinal. Su optimización se basa en el uso de restricciones explícitas durante el aprendizaje del modelo. También se encuentra implementado en ORCA y se quiere adaptar para su ejecución desde ORCA-Python.
13
04. Restricciones
Factores Estratégicos
Factores Dato
Son inherentes a la naturaleza del Trabajo y no pueden ser modificados. Determinadas por el grupo de investigación AYRNA.
Variables de diseño en las que se deberá realizar una elección entre varias posibilidades. No se imponen de forma externa.
14
04. Restricciones
Factores Dato
15
04. Restricciones
Factores Estratégicos
16
04. Restricciones
Factores Estratégicos
17
05. Requisitos
18
06. Análisis y Diseño
19
06. Análisis y Diseño
Casos de Uso
Framework para Clasificación Ordinal
Los algoritmos que se desarrollaran se utilizarán a través de la interfaz ORCA-Python y por tanto, los casos de uso del presente Trabajo coinciden con los del propio framework.
20
06. Análisis y Diseño
Arquitectura del Sistema
21
06. Análisis y Diseño
Diagrama de Clases
Clasificador SVOREX:
Clasificador REDSVM:
22
06. Análisis y Diseño
Diagrama de Clases
API Python para REDSVM:
API Python para SVOREX :
23
06. Análisis y Diseño
Diagrama de Clases
Funciones de preprocesado (normalización y estandarización):
24
07. Casos de Prueba
Los test de carga detectaron un posible problema que confirmó la experimentación:
Leak de memoria en SVOREX
Leak de memoria en REDSVM
25
07. Casos de Prueba
Leak Resuelto
Tras realizar las correcciones oportunas el uso de memoria durante la experimentación es el siguiente:
Uso de memoria en SVOREX
Uso de memoria REDSVM
26
08. Experimentación
Bases de Datos de Regresión Discretizadas
Bases de Datos de Clasificación Ordinal
Problemas de regresión cuyos valores de salida han sido discretizados en 5 o 10 clases de igual frecuencia. Cada base de datos cuenta con 20 particiones.
Problemas reales de clasificación ordinal y número de patrones no es tán equilibrado. Cada base de datos cuenta con 30 particiones.
27
08. Experimentación
Diseño
A tener en cuenta...
28
08. Experimentación
Resultados
Media y desviación típica para cada método de todas las particiones de cada conjunto de datos de la métrica MAE
29
08. Experimentación
Resultados
Media y desviación típica para cada método de todas las particiones de cada conjunto de datos de la métrica MZE
30
08. Experimentación
Comparación
Comparación del MZE obtenido
Comparación del MAE obtenido
Referencia
31
Desarrollo de una biblioteca para algoritmos de clasificación ordinal en python (09. Demostración)
Grado: Ingeniería Informática
Autor: Ángel Heredia Pérez Director: Dr. Pedro Antonio Gutierrez Peña Director: Dr. Juan Carlos Fernández Caballero
4 de junio de 2020
32
10. Conclusiones
Futura Mejoras
33
11. Bibliografía
34
11. Bibliografía
11. Bibliografía
35
11. Bibliografía
11. Bibliografía
36
11. Bibliografía
11. Bibliografía
37
11. Bibliografía
11. Bibliografía
38
Gracias por su atención
¿Alguna pregunta?