Skip to content
/ M-L Public
forked from olenka-roman/M-L

Notas del Curso: Tópicos de Investigación: Machine Learning

Notifications You must be signed in to change notification settings

fmaguinaa/M-L

 
 

Repository files navigation

Curso: Tópicos de investigación (Machine Learning)

Sitio web del curso

Libro de referencia

Material de referencias

El mundo del machine learning y la IA

Temario

  • Clase 1: Introducción al Machine Learning

  • Clase 2: Introducción al aprendizaje: Funciones de pérdida, algoritmo del perceptrón, prueba de errores del perceptrón.

  • Clase 3: Clasificadores lineales: Introducción al SVM.

  • Clase 4: SVM: Introducción a la optimización convexa

  • Clase 5: Descenso de gradiente estocástico

  • Clase 6: Métodos del Kernel: Métodos del Kernel para SVM y classificación multiclases.

  • Clase 7: Regularización L1 y introducción a la teoria del aprendizaje

  • Clase 8: Teoria del aprendizaje: Clases de hipótesis finitas

  • Clase 9: Teoria de aprendizaje: Dimensión VC

  • Clase 10 : Árboles de decisión

  • Clase 11: K-means

  • Clase 12: Clasificación jerárquica y espectral

  • Clase 13: Introducción a la inferencia Bayesiana: Naive Bayes.

  • Clase 14: Regresión logística

  • Clase 15: K vecinos más cércanos

Evaluaciones en el curso CM-072

Lista de temas propuestos

Los artículos propuestos se encuentran en la carpeta PapersML del repositorio del trabajo. Los participantes pueden elegir algún tema de proyecto de los artículos presentados o elegir alguno de su interés.

La fuente de muchos artículos relacionado al curso es: https://papers.nips.cc/ o http://jmlr.csail.mit.edu/papers/.

Fechas de presentaciones

Un cronograma propuesto de asignaciones es :

  • Asignación 1: 22 de setiembre
  • Asignacion 2: 2 de octubre
  • Asignacion 3: 14 de octubre
  • Asignacion 4: 29 de octubre
  • Asignacion 5: 19 de noviembre
  • Asignación 6: 3 de diciembre

Fecha de presentación de proyectos

  • Proyecto parcial: Semana del 9 al 13 de octubre
  • Proyecto final: Semana del 11 al 15 de diciembre

Cualquier cambio que realices en tus repositorios o documentos en github después de la fecha de vencimiento se ignorará. Por favor, tengan todo su trabajo enviado y probado (presentaciones y/o páginas web, screencasts, código etc.) antes de la fecha límite.

Temas de trabajo

1 .Binarized Neural Networks: Sobre un método para entrenar Redes Neuronales Binarizadas (BNNs) - redes neuronales con pesos binarios y activaciones en tiempo de ejecución.

  • Frank Cano Diaz
  • Franz Maguiña Aranda
  • Julio Cesar Silva
  • Gianfranco Ferro Palomino

2 .A Neural Algorithm of Artistic Style: El paper introduce un sistema artificial basado en una Red Neural Profunda que crea imágenes artísticas de alta calidad perceptiva.

  • Briggette Román Huaytalla
  • Danny Julca Carhuaz
  • Edgar Huaranga Junco
  • Rogger Valverde Flores
  • Victor Sotelo Chico

3 .Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks: Se presenta una reparametrización de los vectores de pesos en una red neural que desacopla la longitud de esos vectores de peso desde su dirección.

  • Leonardo León Vera
  • Enrique Peinado Rodriguez
  • Renzo Cerrón Tome
  • Gerson Garrido Mansilla

4 .Where are they looking? El paper presenta un modelo de red profunda capaz de descubrir cómo extraer la postura de la cabeza y la orientación de la mirada, y seleccionar objetos en la escena que están en la línea de visión prevista.

  • Bruno Bedon Vasquez
  • Miguel Mejia Puma
  • Bitzer Arotoma Bacilio
  • Óscar Huarcaya Canal

5 .Map-Reduce for Machine Learning on Multicore El artículo muestra que los algoritmos que se ajustan al modelo de consulta estadística pueden ser escritos en una cierta forma de suma, que les permite ser fácilmente paralelizados en computadoras multinúcleo.

Adaptamos el paradigma de reducción de mapas de Google para demostrar esta técnica de aceleración paralela en una variedad de algoritmos de aprendizaje, incluyendo regresión lineal ponderada localmente (LWLR), k-means, regresión logística (LR), Bayes naïve (NB), SVM, ICA, PCA , análisis discriminante gaussiano (GDA), EM y retropropagación (NN).

  • Katia Cotaquispe Mendoza
  • George Prado Acuña
  • Miguel Mini Huambachano
  • Victor Galvan Oyola

Equipo de proyecto

Las tareas, asignaciones y proyecto se realizarán con 4 compañeros de clase. En general, no anticipamos que las calificaciones para cada miembro del grupo serán diferentes, sin embargo, me reservo el derecho de asignar diferentes calificaciones a cada miembro del grupo, de acuerdo al grado de participación.

Código

Escribe todos tus códigos y ejemplos de preferencia en Python utilizando las librerias mencionadas en el curso como scikit-learn o TensorFlow, el código debe las cosas de manera correcta, pensando en aspectos como la reutilización, manejo de errores, etc. Es menester que documente su código con herramientas como doxygen.

Sitio web de las asignaciones y proyectos

El equipo debe presentar un sitio web público para sus asignaciones, tareas de reforzamiento, proyectos, utilizando Github Pages o cualquier otro servicio de alojamiento web de su elección. El sitio web debe resumir en el caso del proyecto, los tópicos del tema elegido , incorporar algunas visualizaciones y un screencast al sitio web. Puedes ver un ejemplo de presentación parcial aquí.

Screencast

Cada equipo creará un screencast de 5 minutos como mínimo mostrando, en que consiste su proyecto, utilizando un cuaderno de jupyter notebook o algunas diapositivas. Puedes encontrar información de como hacerlo en Making a Screencast Video o en How to record screencasts with recordMyDesktop.

Referencias

Horario de clases

  • Miércoles 4 - 6 Sala 2.
  • Miércoles 6- 8 Sala 1.

Asignaciones

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.

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 diferentes versiones.

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

Scikit-learn

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.

Otras herramientas

Weka

Weka (Waikato Environment for Knowledge Acquisition) es una herramienta de Machine Learning y Data Minning escrito en Java. Con Weka podemos hacer Preprocessing data, clustering, classification, regression y ahora Big Data y datos con un driver JDBC.

Para instalar Weka en Ubuntu, desempaquetar el archivo conteniendo a Weka en algún de tu preferencia y luego ir al directorio creado (weka-3-6-13) y ejecutar

c-lara@Lara:~$java -Xmx1000M -jar weka.jar

Podemos aprender un poco de Weka usando el video de Brandon Weinberg o el canal de Youtube de Weka.

Mahout

Mahout es un proyecto que es es parte del proyecto Apache. Una característica principal de Mahout es su integración con el paradigma Hadoop Map/Reduce para el procesamiento de datos a gran escala. Mahout soporta un gran número de algoritmos incluyendo:

  • Naive Bayes Classifier.
  • K Means Clustering.
  • Recommendation Engine.
  • Logistic Regression Classifier.
  • Random Forest.

Lecturas

  • Mahout in Action de Sean Owen, Robin Anil, Ted Dunning y Ellen Friedman, Manning Publications, 2011.

Spark

Spark es un framework de análisis distribuido en memoría y nos permite ir más allá de las operaciones en batch de Hadoop MapReduce: procesamiento de streaming, machine learning (MLlib), cálculo de grafos (GraphX), integración con lenguje R (Spark R) y análisis interactivos.

Al igual que su predecesor, MapReduce que logra prácticamente una relación lineal de escalabilidad, Spark mantiene la escalabilidad lineal y la tolerancia a fallos de MapReduce, pero amplía sus bondades gracias a varias funcionalidades:

  • DAG (Directed Acyclic Graph).
  • RDD (Resilient Distributed Dataset).

Algunas lecturas y referencias

About

Notas del Curso: Tópicos de Investigación: Machine Learning

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 96.7%
  • TeX 3.1%
  • Python 0.2%