/Curso-CM072

Curso elemental de Machine Learning

Primary LanguageJupyter Notebook

Curso CM-072

Curso elemental de python y las librerías scikit learn y keras aplicados al machine learning.

Todas las diapositivas de este curso son parte del trabajo de los siguientes autores:

Introducción

El mundo del machine learning y la IA

Material de referencia

  • Libros de Machine Learning
    • Data Science From Scratch: First Principles with Python de Joel Grus 2015.
    • Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, Aurélien Géron O'Reilly Media; 1 edition 2017.
    • Pattern Recognition and Machine Learning de Chris Bishop (2006).

Horario de clases

  • Miércoles 3- 6 J3162B.
  • Sábados 2- 5 Sala 1.

Evaluación

La nota final se obtiene de la siguiente manera:

Nota Final = (0.7* Examen Parcial + 0.3 * Trabajo1 + 0.5 * Examen Final + 0.5 * Trabajo2 + Tareas)/3

  • Sólo se tomarán las mejores 6 tareas como notas de prácticas calificadas.

Esquema de trabajo para el curso CM-072

  • Trabajos individuales.
  • Entregable:
    • Archivo PDF (Informe).
    • Cuaderno de Jupyter con el código y un resumen del proyecto.
    • Presentación en Beamer para su exposición.

El trabajo del curso será la aplicación de modelos de Machine Learning en una tarea de clasificación y en el posible de alguna técnica de regresión o alguna otra relacionada al aprendizaje no supervisado. Se requerirá el uso de al menos 4 métodos de clasificación de su elección y la evaluación del rendimiento en una tarea común, así como establecer una comparación con una línea base reportada previamente en otros artículos.

Conjunto de datos:

Evaluación (Adaptado del trabajo del Dr. Ceśar Beltrán Castañón y Mg. César Olivares Poggi)

La evaluación serán 5 entregables, lo cuales se detallan a continuación, que serán parte de las calificaciones de laboratorios y y exámenes y no son anulables.

Entregable Fecha límite de entrega
1. Propuesta de proyecto 5 de setiembre
2. (Introducción, estado del arte y diseño del experimento), en formato IEEE, tamaño A4, máximo 3 páginas de extensión. 15 de setiembre
3. Código y/o scripts (jupyter notebooks) con la experimentación realizada 20 de octubre
4. Informe final, en formato IEEE, tamaño A4, máximo 10 páginas de extensión 10 de noviembre
5. Exposición de presentación de trabajo 14 de diciembre

Se tomará más énfasis en lo siguiente para las evaluaciones:

  • Contenido del Informe.
  • La solución al problema a realizar y la mención de las variantes.
  • Exposición y presentación de posters.

Propuesta de proyecto

La propuesta de proyecto deberá incluir lo siguiente (máximo una hoja A4):

  • Nombre del proyecto
  • Proyecto a utilizar (dependiendo del orden de trabajos se hará las asignaciones repetidas)
  • Objetivo del proyecto
  • Artículos científicos relevantes
  • Propuesta tentativa de modelos a utilizar.

Informe del trabajo de curso:

El informe del proyecto deberá explicar claramente el objetivo del estudio, trabajos previos sobre el problema, código de solución (varias opciones) del problema en cuestión, pruebas, conclusiones, etc. Para la mayoría de los problemas los paquetes de software de Python están disponibles como dominio público. No hay restricción para usarlos.

El informe debe incluir la siguiente información:

  • Introducción

    • Presentación del problema general sobre el que versará el trabajo y cómo se integra dentro del uso del lenguaje python y del curso.
    • Objetivo del estudio
    • Organización del informe (secciones).
  • Estado del arte

  • Breve mención del aporte que otros artículos científicos han realizado para este problema

  • Mención de al menos 3 artículos científicos que mencionen el problema y las variantes realizadas

  • Diseño del experimento

    • Descripción de los objetos, funciones y técnicas a utilizar.
  • Experimentos y resultados

    • Línea base: Reproducción de resultados reportados en un artículo científico anterior
    • Evaluación del rendimiento de los modelos ensayados
    • Comparación de línea base y resultados propios
  • Discusión

    • Interpretación de los resultados obtenidos
    • ¿Cómo podría ser mejorado sus resultados?
  • Conclusiones y trabajos futuros.

  • Bibliografía o Referencias.

Código y/o scripts (Jupyter Notebooks )

  • El código será trabajado de forma individual utilizando GitHub, de manera que se pueda verificar los aportes hechos por cada uno de los integrantes del curso.
  • Se recomienda trabajar con jupyter notebooks o Jupyter lab en Python usando las librerías del curso.
  • Se deberá asignar nombres representativos a los archivos, de manera que se pueda identificar su orden relativo y el propósito de cada uno. No hay restricciones para tomar como base código tomado de otras fuentes, siempre y cuando se cite debidamente la fuente y se realice las adaptaciones que requiera el propio trabajo.
  • El código deberá estar mínimamente comentado, siempre en español. Se ignorará cualquier comentario en otro idioma.
  • Asimismo, se ignorará cualquier código simplemente copiado cuya fuente no haya sido citada, y se asignará el puntaje mínimo al estudiante.

Exposición

El trabajo final, tendrá exposiciones. Se recomienda seguir las guías indicadas abajo:

Recursos

Clase 1: 8 de setiembre

Clase 2 : 15 de setiembre

Clase 3 : 22 de setiembre

Clase 4 : 29 de setiembre

Clase 5 : 3 de octubre

Clase 6 : 6 de octubre

Clase 7 : 13 de octubre

Clase 8 : 20 de octubre

Clase 9 : 3 de noviembre

Clase 11 : 10 de noviembre

Clase 12 : 17 de noviembre

Clase 13: 1 de diciembre

Herramientas a usar

Anaconda

Anaconda es una distribución completa libre de Python incluye paquetes de Python .

Anaconda incluye los instaladores de Python 2.7 y 3.5. La instalación en Linux, se encuentra en la página de Anaconda y es más o menos así

1 . Descargar el instalador de Anaconda para Linux.

2 . Después de descargar el instalar, en el terminal, ejecuta para 3.5

c-lara@Lara:~$ bash Anaconda3-2.4.1-Linux-x86_64.sh

Es recomendable leer, alguna de las característica de Anaconda en el siguiente material conda 30-minutes test drive.

3 . La instalación de paquetes como seaborn o bokeh se pueden realizar a través de Anaconda, de la siguiente manera:

c-lara@Lara:~$ conda install bokeh

Alternativamente podemos desde PyPI usando pip:

c-lara@Lara:~$ pip install bokeh

El proyecto Anaconda ha creado R Essentials, que incluye el IRKernel y alrededor de 80 paquetes para análisis de datos, incluyendo dplyr, shiny, ggplot2,caret, etc. Para instalar R Essentials en un entorno de trabajo, hacemos

c-lara@Lara:~$ conda install -c r r-essentials

Proyecto Jupyter y el Jupyter Nbviewer

El Proyecto Jupyter es una aplicación web que te permite crear y compartir documentos que contienen código de diversos lenguajes de programación, ecuaciones, visualizaciones y texto en diversos formatos. El uso de Jupyter incluye la ciencia de datos, simulación numérica, la modelización en estadística, Machine Learning, etc.

Jupyter nbviewer es un servicio web gratuito que te permite compartir las versiones de archivos realizados por Jupyter, permitiendo el renderizado de diversos fórmatos incluyendo, código latex.

Unofficial Jupyter Notebook Extensions contiene una colección de extensiones no oficiales de la comunidad que añaden funcionalidad a Jupyter notebook. Estas extensiones están escritas principalmente en Javascript y se cargarán localmente en su navegador.

c-lara@Lara:~$ pip install jupyter_contrib_nbextensions

O utilizando conda

c-lara@Lara:~$ conda install -c conda-forge jupyter_contrib_nbextensions

Software

  • NumPy, es la biblioteca natural para python numérico. La característica más potente de NumPy es la matriz n-dimensional. Esta biblioteca contiene funciones básicas de álgebra lineal, transformadas de Fourier, capacidades avanzadas de números aleatorios y herramientas para la integración con otros lenguajes de bajo nivel como Fortran, C y C ++.

  • SciPy es la biblioeteca para python científico. SciPy se basa en NumPy y es una de las bibliotecas más útiles por la variedad de módulos de ciencia y ingeniería de alto nivel con la que cuenta, como la transformada discreta de Fourier, álgebra lineal, optimización, matrices dispersas, etc.

  • Matplotlib es una librería de Python para crear una gran variedad de gráficos, a partir de histogramas, lineas, etc, usando si es necesario comandos de látex para agregar matemáticas a los gráficos.

  • Pandas es una librería para operaciones y manipulaciones de datos estructurados. Pandas ha sido añadido recientemente a Python y han sido fundamental para impulsar el uso de Python en la ciencia de datos.

  • Scikit-learn, es tal vez la mejor biblioteca para Machine Learning, construida sobre NumPy, SciPy y Matplotlib, esta biblioteca contiene una gran cantidad de herramientas eficientes para el Machine Learning y el modelado estadístico incluyendo clasificación, regresión, agrupación y reducción de la dimensionalidad.

  • Seaborn es una libreria para la visualización de datos estadísticos. Seaborn es una biblioteca para hacer atractivos e informativos los gráficos estadísticos en Python. Se basa en matplotlib. Seaborn pretende hacer de la visualización una parte central de la exploración y la comprensión de los datos.

  • keras es una librería de redes neuronales de código abierto escrito en Python.

Git y Github

Git es un sistema de control de versiones de gran potencia y versatilidad en el manejo de un gran número de archivos de código fuente a a través del desarrollo no lineal, es decir vía la gestión rápida de ramas y mezclado de Para poder revisar y aprender los comandos necesarios de Git, puedes darle una ojeada al excelente tutorial de CodeSchool o a la guía de Roger Dudle para aprender Git.

Github es una plataforma de desarrollo colaborativo de software utilizado para alojar proyectos (muchos proyectos importantes como paquetes de R, Django, el Kernel de Linux, se encuentran alojados ahí) utilizando Git y el framework Ruby on Rails.

Podemos instalar Git en Ubuntu utilizando el administrador de paquetes Apt:

c-lara@Lara:~$sudo apt-get update
c-lara@Lara:~$sudo apt-get install git

Referencias y Lecturas: