Nube de Etiquetas
(Ah?)

lunes, enero 29, 2018

Una especie de Pensum para aprender Machine Learning por tu cuenta

Digamos que deseas entrar en el campo de Data Science/Data Mining/Machine Learning, sin estudiar una Maestría o PhD. ¿Cómo hacer? Yo acá comparto una suerte de "pensum" autodidacta, basado en cursos y recursos online, que pudiera servir como camino para entrar en esta área.
Como video inspiracional, está este video en donde una chica cuenta cómo se inició como Data Scientist de forma autodidacta: 

Ahora, yendo al grano, la ruta que yo pensaría que podría ayudarles a entrar al tema es esta:
  1. Básico de Python para análisis y visualización de datos: https://www.coursera.org/specializations/introduction-scripting-in-python?siteID=.GqSdLGGurk-kvC_Sa81XIfCLUjkljxQYA&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=*GqSdLGGurk... porque primero hay que saber examinar datos y tener una idea preliminar de qué está pasando. Saber hacer esto en Python y en excel les pone a poder aplicar como Data Analyst en cualquier país del mundo, en especial si aparte de esto aprenden SQL y Hadoop/Spark.
  2. Básico de Machine Learning (por el prof. Ng, usando Octave o Matlab):https://www.coursera.org/learn/machine-learning ...Este curso es para ya adentrarse en Machine Learning. Recomendaría instalar Octave.. simplemente porque es gratis!
  3. Luego sugeriría replicar los resultados obtenidos en el curso del prof. Ng, usando Python y las librerías de machine learning (en especial Sci Kit Learn).
  4. Si les anima, pueden ver el curso de Deep Learning para poner la guinda a la torta: https://www.youtube.com/playlist?list=PLlJy-eBtNFt6EuMxFYRiNRS07MCWN5UIA  Acá está el material del curso: http://cs231n.github.io/ ...Sin embargo, a menos que vayan a trabajar con datos que son video, imágenes, o audio, o series de tiempo, no me apuraría demasiado a aprender Deep Learning. En todo caso la recomendación base es.. NO aprender Deep Learning sin haber dominado en general análisis de datos, estadística, y los métodos clásicos de Machine Learning.
Esto es una ruta sugerida, basada en aprender Octave y Python. Hay gente que recomienda R. Yo, sin embargo, a menos que ya supiese que en donde estaré trabajando, se usará R exclusivamente, preferiría Python, por ser un lenguaje de uso general, que se convertirá en una destreza transferible para otro tipo de problemas y trabajos. No es que R sea malo, es sólo que saber Python es una herramienta que es transferible a muchas otras cosas fuera del cómputo científico.

Estoy seguro de que habrá quienes tengan propuestas y recomendaciones alternativas, y me honraría que compartieran su opinión en la sección de comentarios.

Recursos para aprender Machine Learning

En esta entrada, he querido compartir una serie de recursos que quienes quieren inicarse en el área de Machine Learning podrían encontrar interesantes:

Foros de Reddit:

Artículos de ArXiv

Blogs:

Libros:

Cursos:


martes, marzo 31, 2015

Las herramientas que manejas no definen lo que eres

Con frecuencia, las personas que han incursionado en el área de minería de datos, análisis de sistemas, e investigación de operaciones, vienen de áreas muy distintas a las que los empleadores (y el público en general) creen que los expertos en estas áreas deben venir.

Los cursos de optimización en la Universidad Simón Bolívar, durante algún tiempo fueron dictadas por profesores, cuya carrera base era reflejo de esto que acabo de mencionar:

  • Una profesora egresada de Licenciatura en computación.
  • Un profesor egresado de Matemáticas Aplicadas.
  • Un profesor egresado de Ingeniería Civil.
  • Un profesor egresado de Ingeniería Eléctrica.
  • Un profesor egresado de Ingeniería de Producción.
A pesar de la diversidad de orígenes, ha habido una convergencia (en estos profesores, al menos) hacia el área de investigación de operaciones, a un nivel suficiente como para ser docentes, y en la mayoría de los casos, realizar aportes al estado del arte mediante publicaciones en revistas y conferencias científicas arbitradas.

Sin embargo, las personas que interactuan con quienes hemos hecho "vida" en el área de investigación de operaciones, minería de datos, análisis de sistemas, y máquinas de aprendizaje, suelen suponer que la carrera base es Ingeniería de Computación, o Matemáticas.

El trasfondo que implica la formación de un egresado de Computación, está lleno de una serie de herramientas y lenguajes que raras veces son dominados por especialistas de investigación de operaciones / machine learning / análisis de sistemas. Por ejemplo:
  • Lenguajes de bajo nivel (C++, por ejemplo).
  • Bases de datos (SQL, por ejemplo).
  • Arquitectura de Redes.
  • Programación de páginas web.
  • ...etc.
Sin embargo, estas no son destrezas necesariamente requeridas para que una persona sea un especialista en las áreas de las que he venido hablando.

Quienes asumen que quienes son especialistas en optimización y patrones, son necesariamente matemáticos, pues están dejando de considerar que la optimización utiliza las matemáticas como fundamento base, pero constituye más bien un uso práctico de los aspectos teóricos de las matemáticas. En muchos casos de la vida real, la investigación de operaciones está fundamentada en heurísticas, que pueden estar más fundamentadas en el sentido común, y emulación de ciertos aspectos de la naturaleza (como las colonias de hormigas, las neuronas, o los enjambres de abejas) que en teoremas fuertes matemáticos asociados a la optimalidad.

Es importante para quienes desean encontrar un profesional que resuelva un problema, con un enfoque de investigación de operaciones / análisis de sistemas / machine learning (aprendizaje artificial), deben entender que para este tipo de proyectos y problemas, es muchísimo más importante la manera de pensar (capacidad de abstracción, capacidad de análisis y síntesis, capacidad de comunicar ideas complejas, capacidad de volver cuantitativas variables subjetivas), que el manejar un lenguaje o herramienta particular.

Las herramientas y tecnologías que una persona utiliza, y la forma en que se enmarca el pensamiento, son un subproducto de los intentos que se han realizado para resolver problemas. Hay que tomar en cuenta, que para resolver un problema particular, por lo general, son válidas muchas alternativas de herramientas y tecnologías.

Ejemplo: Se necesita hacer "agrupamiento" (clustering). Esto puede hacerse en Matlab, R, Python, Lenguaje C++, Fortran, SPSS, SAS,... e incluso en Excel, programando con Visual Basic para Aplicaciones. Más importante que la herramienta a usar, es que el profesional que consigamos tenga la capacidad de analizar el problema, identificar los aspectos relevantes a considerar, e implemente la solución de forma eficiente, cumpliendo con los requerimientos exigidos. Quien sepa programar en cualquiera de estos lenguajes y herramientas, podría fácilmente aprender otro. En estos casos, lo más difícil de la programación, no es saber cómo se escribe una instrucción, sino tener claro en la cabeza qué es lo que se quiere hacer.

Es importante entonces buscar las personas con el cerebro entrenado para el tipo de problema, y no personas que sepan usar un conjunto de herramientas. El que tiene la capacidad de analizar y resolver el problema, aprenderá fácilmente la herramienta que necesite utilizar.

martes, diciembre 04, 2012

Mini-charla: Aprendizaje artificial de patrones no lineales usando modelos lineales: herramientas y usos en toma de decisiones

El viernes 30/11/2012  dicté un seminario en el Departamento de Procesos y Sistemas de la Universidad Simón Bolívar, titulado como indica arriba, orientado a un público compuesto principalmente por ingenieros, y con un enfoque principalmente a las aplicaciones.

En el seminario, posteriormente a mi ponencia, hubo una interacción muy interesante con los profesores asistentes, entre los cuales estaban los del área de Procesos Químicos, y un par de profesores del área de Optimización, Gestión y Toma de Decisiones.

Haré mención especial sobre la asistencia del Prof. Ubaldo García Palomares, quien prontamente recibirá el nombramiento de profesor emérito de esta casa de estudios.

Aprovecho este post "post-mortem" para invitarles a una próxima mini-charla que estaré dando en el marco del 2do Encuentro de la Red de Jóvenes Investigadores de Venezuela, adscrita a la Academia de Ciencias Físicas, Matemáticas y Naturales.

Mi mini-charla será a las 9:45am del viernes 7, pero les invito a presenciar todas las ponencias del evento.

viernes, mayo 04, 2012

Enfoques basados en optimización convexa para clasificación de patrones

Tal y como lo comenté anteriormente, el próximo martes 8 de mayo de 2012, en la Sala Carlos Aragone, Edf. FEI-256 (segundo piso), de la Universidad Simón Bolívar (USB), a las 2:30pm se dictará un seminario titulado:

ENFOQUES BASADOS EN OPTIMIZACION CONVEXA
PARA LA CLASIFICACION DE PATRONES

El expositor, el Prof. Orestes Manzanilla (del Dpto. Procesos y Sistemas de la USB)

Resumen

En este seminario se mostrará un enfoque novedoso para resolver un problema específico dentro de las áreas de minería de datos, aprendizaje artificial y reconocimiento de patrones: el de la clasificación de patrones. Este es un problema con diversas aplicaciones, entre las cuales se puede mencionar el apoyo en
prognosis médica, otorgamiento de créditos, categorización de textos, prospección petrolera, detección de patrones de fraude, detección de patrones físicos (sonoros, visuales, etc), análisis de perfiles de expresión genética, ADN y proteínas diversas. Se hará un breve repaso de las técnicas más comunes para la resolución de este problema,  nacidas de la estadística, y de distintos campos de “máquinas de aprendizaje”, algunos de ellos bio-inspirados, indicando brevemente las ventajas y desventajas de cada método.
Se expondrá un grupo de heurísticas basadas en optimización lineal, y lineal entera-mixta para la generación de clasificadores de patrones de tipo no-lineal (pero lineal por partes), que puede representarse tanto como redes neurales artificiales, como árboles de clasificación, explicando las ventajas y  desventajas que comparativamente se observan respecto a los métodos mencionados anteriormente.
Los métodos están orientados hacia la búsqueda de (1) la minimización de la dependencia del “éxito” de la implementación, de la experticia del implementador, cerrando la brecha "tecnológica" que actualmente mantiene a los no-expertos alejados de este tipo de problemas, y (2) la escalabilidad de la técnica, para garantizar su aplicabilidad en bases de datos masivas. Por último, se esboza el posible uso de las  estructuras no-lineales generadas en el espacio multi-dimensional, ya no tanto para la predicción de la categoría o patrón de un nuevo
indivíduo de clase desconocida, sino para la visualización de los patrones en el espacio multi-dimensional.

Palabras claves: Programación lineal, Redes neurales artificiales, Máquinas de Soporte Vectorial, Clasificadores de patrones, Máquinas de aprendizaje.

viernes, abril 27, 2012

El reto de los nuevos modelos

Como investigadores nos enfrentamos a un problema: necesitamos que nos publiquen. Necesitamos que los revisores de una revista arbitrada (idealmente buena), vean nuestro trabajo (entre otros 100, si la revista es buena) y lo entiendan, les guste, y lo recomienden para su publicación.
 
Para que guste, tienen que entenderlo. Para que lo recomienden, dependiendo de la revista, si no tiene un teorema, no lo aceptan. Es decir, las pruebas pueden decir que funciona y que es mejor que otro método cuyas garantías en lo teórico son fantásticas, pero como no tienes una demostración y un teorema por debajo como respaldo, es posible que no lo recomienden (quizá es por esto que la mayoría de los artículos de heurísticas, metaheurísticas y soft-computing en general se publican en congresos, jornadas, etc., y no en revistas de alto impacto).
 
La manera de publicar con facilidad, parece ser esta:
  • Publica un teorema que haga un pequeño cambio o aporte teórico.
  • Publica sobre un problema conocido por todos.
En general, pareciera que el que tiene 100 artículos para revisar, no quiere leer un método del cuál tiene que aprender desde "0". Y pareciera que el éxito en pruebas numéricas no es necesariamente suficiente, y la publicación tiene que aguantarse hasta encontrar una teoría.

En un mundo en que queremos resolver problemas muy grandes, muy complejos, luce como si esta "resistividad" de las revistas a las cosas novedosas "que funcionan", genera un retraso innecesario.

Sería interesante que se estimulara la aparición de nuevos modelos matemáticos y estrategias de resolución de problemas. Estos pueden estar inspirados en la naturaleza, en procesos industriales, en la forma en que se hacen galletas artesanales, o en cómo se comporta un comprador en un centro comercial. La forma en que separamos piedras y sucios en los granos que cocinamos, o la forma en que los cepillos de cabello son mejores para determinado tipo de pelo, pueden ser elementos de inspiración también.

Lo importante es tener los ojos abiertos. Lo importante es que las revistas también abran sus ojos. Tratar de entender el lenguaje de un investigador cuya área base es distinta, puede proporcionar claves para solucionar problemas pendientes por resolver. Aislarnos del que habla con jerga distinta, porque me tendría que poner a estudiar, nos hace hablar solo con los que ya piensan el problema de igual forma que nosotros.

El especialista en redes neurales habla de "velocidad de aprendizaje", mientras el especialista en optimización no-lineal habla de "tamaño de paso", y ambas cosas son idénticas. Son dos chinos que no se entienden porque uno habla mandarín y el otro cantonés. Hasta que no escriben el asunto en forma simbólica, no se entienden.

Por ahora, lo que me sugiere mi cortísima experiencia, es que hay que tratar de escribir "a prueba de flojos" y "a prueba de confusiones".

Más importante aún, no dejar de caminar, no dejar de tomar 5 minutos para poder ver cómo sirve el café el del cafetín, ni como cae una hoja. Este estado "zen" es la materia prima para las ideas nuevas, y para las ideas nuevas para explicar mejor y más fácilmente las ideas que ya tuvimos.

Charla: Enfoques basados en optimización convexa para clasificación de patrones

Este 8 de mayo de 2012 estaré dictando en la sala 254 del edificio de Física y Electrónica 1 de la Universidad Simón Bolívar (la sala usada semanalmente para los coloquios del Departamento de Física), una charla titulada "Enfoques basados en optimización convexa para clasificación de patrones". La misma tendrá lugar de 2:30pm a 3:30pm.

sábado, octubre 15, 2011

Blog sobre optimización de modelos lineales (PL)

Desde que inicié labores como profesor universitario, una de las materias que con más frecuencia dicto es una llamada "[Optimización de] Modelos Lineales". En esta materia se tratan temas de Programación Lineal y PERT-CPM, a nivel de pregrado, para las carreras de Urbanismo, Ingeniería de Computación e Ingeniería de Producción. Ocasionalmente, algunos estudiantes de otras ingenierías (Mecánica, Eléctrica y Química) han cursado la materia como electiva, motivados por profesores de ciertas materias de sus respectivas carreras, quienes les han dicho que la respuesta a determinada interrogante, sólo puede hallarse mediante Programación Lineal.
Es de mi opinión, que Modelos Lineales debería ser una materia electiva para todas las ingenierías, pero hace falta aún que haya más consciencia de las coordinaciones de las diferentes carreras, sobre el alcance en cuanto aplicaciones, que tienen las técnicas de Investigación de Operaciones.
Motivado por un curso de "Conectividad para Docentes" dictado por el Prof. Luis Ordoñez (ver el blog http://www.conectividadlatinoamericana.org/ para mayor información sobre el grupo al que pertenece), decidí plantear actividades de "conectividad" para los dos cursos que dicto este trimestre, siendo uno de ellos el de "Modelos Lineales".

Decidí evaluar a los alumnos tradicionalmente (exámenes escritos), y en paralelo evaluar un 10% en una actividad que estimulara la "conectividad". Resultado de esta actividad, es la creación del blog  http://opti-lineal.blogspot.com/, en donde están publicando información mis estudiantes, sobre temas de aplicaciones de la Programación Lineal, ayudándose con mapas conceptuales.

En futuras entregas del blog, luego de revisar más a fondo el material, publicarán mapas más refinados, y finalmente harán una prueba numérica pequeña de un caso ejemplo, para mostrarla en el blog, posiblemente resuelta en excel. Los temas han sido escogidos por ellos.

lunes, octubre 10, 2011

Disponibles online las tesis de maestría sobre uso de I.O. para el reconocimiento de patrones

Tengo el agrado de informar que en la página de "Reportes Técnicos" del Centro de Estadística y Software Matemático se han colgado los archivos en "pdf" de mis tesistas de maestría Ana Serra y Adriana Torres:

Los resúmenes y palabras clave los coloco a continuación:

ALGORITMO DE BOOSTING EN MÉTODOS MULTI-SUPERFICIES PARA CLASIFICACIÓN BINARIA
por Ing. Ana María Serra Balza

Existen diversas técnicas de Minería de Datos para la Clasificación Binaria. Una de sus vertientes de investigación, denominada Métodos Multi-superficies, que puede ser interpretada como otro enfoque para entrenar Redes Neuronales Artificiales, evita el reajuste de parámetros al emplear Modelos de Programación Lineal para definir las superficies de separación. Asimismo, logra esquivar el problema de Programación Cuadrática y la escogencia de la transformación Kernel en Máquinas de Vectores de Soporte. Otra vertiente, denominada Boosting, que permite articular Clasificadores Individuales “débiles” en un solo Clasificador Ensamblado “robusto” y preciso, ya ha sido implementada con otras técnicas como Máquinas de Vectores de Soporte, Redes Neuronales Artificiales y Árboles de Decisión, arrojando buenos resultados.
Se propone un Algoritmo de Boosting en Métodos Multi-superficies, que facilite el entrenamiento de la máquina de clasificación binaria en extensas bases de datos, ofreciendo resultados precisos en datos reales.

Palabras claves: Clasificación Binaria, Redes Neuronales Artificiales, Árboles de Decisión, Multisuperfici
Este trabajo resulta importante por cuanto es una estrategia válida y resistente al "sobre-ajuste" que puede utilizarse cuando la cantidad de datos es tan grande que no puede ingresarse completa dentro de los modelos de optimización que requieren los métodos multi-superficie. Adicionalmente es una excelente referencia para conocer los diferentes métodos existentes en esta área.

CLASIFICACIÓN MULTICATEGORIA DE PATRONES MEDIANTE OPTIMIZACIÓN DE MULTISUPERFICIES
por Ing. Adriana Torres García

Recientemente, con la llegada de las computadoras, la demanda en aplicaciones basadas en el reconocimiento de patrones se ha incrementado considerablemente. El uso de herramientas para el reconocimiento de patrones incluye desde aplicaciones industriales hasta aplicaciones médicas, botánicas e incluso espaciales. Estas parten del procesamiento de datos en máquinas de entrenamiento con el objeto de lograr identificar, predecir y clasificar individuos de acuerdo a sus características. Existe un sinfín de técnicas para la construcción de clasificadores dentro de las cuales se presentan los sistemas de reconocimiento de patrones con aprendizaje supervisado, los cuales permiten desarrollar herramientas de clasificación, entrenadas con datos de atributos y clases conocidas a priori. Dentro de los sistemas de reconocimiento de patrones, se encuentran las redes neuronales artificiales, las cuales, según propone Mangasarian [Man92], pueden ser diseñadas y entrenadas en base a métodos de generación de multisuperficies para responder el problema de clasificación binaria. Recientemente, Manzanilla y García Palomares, [MGP10], plantearon una mejora del algoritmo de Mangasarian al que denominaron Método de Multisuperficies No Paralelo (NPMS), el cual, en pruebas numéricas, muestra una disminución de iteraciones y una mejor capacidad de generalización. Este algoritmo tal y como está planteado hasta el momento sólo puede ser usado en problemas de clasificación binaria. El objetivo del presente trabajo de investigación es resolver el problema de clasificación multicategoría mediante la optimización de multisuperficies. Para lo cual, se realiza un análisis de los diferentes métodos de multisuperficies, se plantea un algoritmo de multisuperficies no paralelas basado en el NPMS para clasificación multicategoría, se propone una red neuronal equivalente para el clasificador y finalmente, se valida la calidad del modelo propuesto mediante la presentación de resultados favorables de pruebas realizadas en bases de datos reales usadas previamente por investigadores del área.

Palabras Clave: Aprendizaje Supervisado, Métodos Multisuperficie, Perceptrones Multicapa, Clasificación Multicategoría, Programación Lineal.

El trabajo de Adriana es muy importante por cuanto permite observar como la estrategia de planos "alternantes" resulta altamente competitiva inclusive en problemas multi-categoría. Adicionalmente muestra como la implementación de kernels sobre el espacio de las características no es una estrategia que siempre otorgue ventajas. Realiza propuestas en el mejoramiento de los resultados de los modelos de optimización que toman en cuenta el margen de separación.

lunes, abril 04, 2011

Aceptado artículo sobre el uso de programación lineal para la construcción de clasificadores de patrones binarios

Fue aceptado en la revista Decision Support Systems (4ta revista en el ranking de las revistas de Investigación de Operaciones) el siguiente artículo:

García Palomares, U; Manzanilla, Orestes
. "Novel linear programming approach for building a piecewise nonlinear binary classifier with a priori accuracy". DECISION SUPPORT SYSTEMS. 2011. Indexada en el SCIENCE CITATION INDEX.

En este trabajo, el prof. Ubaldo García Palomares y yo hemos diseñado un algoritmo que construye una estrutura no-lineal, pero lineal por partes, que separa la data de entrenamiento de un problema de clasificación, logrando alcanzar, en ese conjunto, una precisión tan alta como se requiera.

En cada iteración, se resuelve un modelo de programación lineal, o un número arbitrariamente pequeño de modelos de programación lineal entera-mixta. Se muestran bondades que permiten el uso de procesamiento paralelo y/o distribuído.

Entre las bondades que presenta el trabajo, al igual que otros algoritmos similares como el Multi-Superficie (MSM) de Olvi Mangasarian, es que requiere de un mínimo de parámetros a utilizar por parte del usuario, haciendo que el resultado de la aplicación del modelo sea poco dependiente de las decisiones de implantación por parte del usuario.

La estructura resultante puede ser evaluada tanto como árbol de clasificación, como red neuronal artificial.

Actualización del 11 de Abril de 2011
Puede descargarse la versión preliminar enviada para la revista Decision Support Systems, en la sección de Reportes Técnicos del CESMa (Centro de Estadística y Software Matemático), correspondiente al año 2011.