Want to create interactive content? It’s easy in Genially!

Get started free

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:

Higher Education Presentation

Psychedelic Presentation

Vaporwave presentation

Geniaflix Presentation

Vintage Mosaic Presentation

Modern Zen Presentation

Newspaper Presentation

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:

  • 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

  1. Estudio del lenguaje de programación Python.
  2. Estudio de uso de bibliotecas como numpy, pandas, matplotlib y scikit-learn.
  3. Estudio de la API de scikit-learn para la creación de nuevos clasificadores.
  4. Estudio del funcionamiento de ORCA-Python.
  5. Estudio del uso de la API de Python en C y C++.

02. Objetivos

Operacionales

  1. Desarrollo de un wrapper que permita la ejecución en Python del clasificador REDSVM de la librería libsvm-rank escrito en C++.
  2. Desarrollo de un wrapper que permita la ejecución en Python del clasificador SVOREX escrito en C.
  3. 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:
    • REDSVM
  • Métodos Umbral:
    • SVOREX

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?