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:
- Aikaterini Tzompanaki-Machine Learning.
- Andreas Mueller-COMS W4995 Applied Machine Learning Spring 2018.
- David Sotang- Introduction To Machine Learning Spring 2016.
-
Cálculo
- Apendice D del libro de Chris Bishop.
- Notas del MIT para multiplicadores de Lagrange.
- Lagrange Multipliers without Permanent Scarring de Dan Klein.
-
Probabilidad
-
Álgebra Lineal
- Coding The Matrix: Linear Algebra Through Computer Science Applications, fantástico libro de Philip Klein (Revisar los diapositivas que acompañan al libro).
- Notas de álgebra lineal de las clases de Machine Learning de Stanford.
- Apendice C del libro de Chris Bishop.
- Notas de Sam Roweis.
-
Optimización
- Convex Optimization de Stephen Boyd y Lieven Vandenberghe.
- Notas de Optimización de las clases de Machine Learning de Stanford:
- Ejemplo 1: Introduction.
- Ejemplo 2: Rules on Rules on Rules.
- Ejemplo 3: Now I R1.
- Ejemplo 4: Machine Learning.
- Ejemplo 5: To Learn is to Generalize.
- Ejemplo 6: It's Definitely Time to Play with Legos.
- Ejemplo 7: There is no f.
- Ejemplo 8: More Assumptions...Fewer Problems?.
- Ejemplo 9: Bias Variance Throwdown.
- Ejemplo 10: World Domination.
- Ejemplo 11: Haystacks on Haystacks.
- Ejemplo 12: Let's Get Greedy.
- Ejemplo 13: Heuristics.
- Ejemplo 14: Mejorando las Heurísticas.
- Ejemplo 15: Information.
- 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).
- Miércoles 3- 6 J3162B.
- Sábados 2- 5 Sala 1.
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.
- 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.
- Netflix Prize data. Dataset from Netflix's competition to improve their reccommendation algorithm.
- Cars Overhead With Context (COWC). Data set of a large set of annotated cars from overhead.
- Lending Club Loan data. Analyze Lending Club's issued loans.
- The Enron Email Dataset. 500,000+ emails from 150 employees of the Enron Corporation.
- Dota 2 Matches. Explore player behavior and predict match outcomes.
- UK Road Safety: Traffic Accidents and Vehicles.Detailed dataset of road accidents and involved vehicles in the UK (2005-2016).
- Labeled Faces in the Wild. Database of face photographs designed for studying the problem of unconstrained face recognition.
- Mobile phone activity in a city. Hourly phone calls, SMS and Internet communication of an entire city.
- New York Times Comments.Comments on articles published in the New York Times.
- GTZAN music/speech collection.Dataset collected for the purposes of music/speech discrimination.
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.
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.
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.
El trabajo final, tendrá exposiciones. Se recomienda seguir las guías indicadas abajo:
-
Git y Github | Curso Práctico de Git y Github Desde Cero--> https://www.youtube.com/watchv=HiXLkL42tMU.
-
Editor colaborativo LaTeX en línea-->https://www.overleaf.com/.
-
Formato IEEE (MS Word y LaTeX) -->https://www.ieee.org/conferences/publishing/templates.html.
-
Buscador de literatura académica-->https://scholar.google.com.pe/.
-
Jupyter Notebook Tutorial: The Definitive Guide-->https://www.datacamp.com/community/tutorials/tutorial-jupyter-notebook.
-
Guías para elaborar un poster:
- Andrew ng y sus consejos en ML en el artículo : ML-advice.
- Cuaderno-->Introducción al machine learning.
- Datos-->Iris Data Set.
- Lectura-->API design for machine learning software:experiences from the scikit-learn project.
- Cuaderno-->Introducción al aprendizaje supervisado.
- Lectura-->Overfitting vs. Underfitting: A Conceptual Explanation.
- Lectura -->Clever Methods of Overfitting.
- Lectura-->A Detailed Introduction to K-Nearest Neighbor (KNN) Algorithm.
- Lectura opcional-->What is data science? The future belongs to the companies and people that turn data into products..
- Lectura opcional-->KDD, SEMMA AND CRISP-DM: A parallel overview.
- Diapositiva-->Presentación 1.
- Tarea 1-->Presentación 12 de setiembre.
- Cuaderno-->Introducción a lo modelos lineales.
- Lectura-->Four Assumptions Of Multiple Regression That Researchers Should Always Test.
- Lectura-->Generalized Linear Models.
- Cuaderno-->Modelos lineales para clasificación.
- Lectura-->The Naive Bayes Classifier.
- Lectura-->The Logistic Regression Algorithm.
- Lectura opcional-->The End of Theory: The Data Deluge Makes the Scientific Method Obsolete.
- Diapositiva-->Presentación 2.
- Lectura opcional-->How to write a production-level code in Data Science?.
- Tarea 2-->Presentación 22 de setiembre.
- Lectura-->Random Test/Train Split is not Always Enough.
- Cuaderno-->Métricas de evaluación.
- Cuaderno-->Curvas de exhaustividad- precisión, curvas ROC, AUC.
- Lectura -->The Relationship Between Precision-Recall and ROC Curves.
- Lectura -->"I don’t think that means what you think it means;” Statistics to English Translation, Part 1: Accuracy Measures.
- Cuaderno-->Estimación de clasificadores.
- Diapositiva-->Presentacion 3.
- Lectura-->Comparing supervised learning algorithms
- Tarea 3-->Presentación 29 de setiembre.
- Lectura inicial-->Feature Engineering: The key to predictive modeling.
- Cuaderno-->Ingeniería de características.
- Lecturas:
- Tarea 4-->Presentación 3 de octubre.
- Cuaderno -->Selección automática de características.
- Lectura-->Model evaluation: quantifying the quality of predictions.
- Cuaderno -->Evaluación de modelos.
- Cuaderno-->Validación cruzada.
- Lectura-->Cross-validation pitfalls when selecting and assessing regression and classification models.
- Tarea 5-->Presentación 9 de octubre.
- Lectura -->A Brief History of Classification and Regression Trees.
- Cuaderno-->Árboles de decisión.
- Lectura -->Decision tree learning.
- Tarea 6--> Presentación 17 de octubre.
- Cuaderno-->Ensamblado de árboles de decisión.
- Lectura-->Gradient Boosting Explained.
- Lectura opcional-->Understanding Random Forest from theory to practice.
- Lectura -->XGBoost: A Scalable Tree Boosting System
- Diapositiva-->Presentacion 4.
- Tarea 7 (Examen) -->Presentación 17 de octubre.
- Tarea 8--> Presentación 30 de noviembre.
- Repaso-->Gradient, Subgradient and how they may affect your grade.
- Lectura-->Support Vector Machines.
- Cuaderno-->SVM.
- Lectura -->The Kernel Trick.
- Diapositiva-->Presentación 5.
- Resumen-->SVM Revisit.
- Tarea 9-->Presentación 5 de diciembre.
- Cuaderno-->Aprendizaje no supervisado.
- Cuaderno-->PCA.
- Video-->Acerca de PCA. -Diapositiva-->Presentacion 8.
- Tarea 10-->Presentación 8 de diciembre.
- Cuaderno opcional-->- Cuaderno-->NFE y Manifold learning.
- Lectura-->A Tutorial on Principal Component Analysis.
- Tarea 11-->Presentación 8 de diciembre.
- Cuaderno-->Clustering.
- Tarea 12-->Presentación 8 de diciembre.
- Lectura opcional-->Data Clustering: A Review.
- Cuaderno-->Clustering aglomerativo.
- Interacción-->Hierarchical Clustering in Action.
- Tarea 13-->Presentación 11 de diciembre.
- Lectura-->Tipos de clustering en scikit-learn.
- Tarea 14-->Presentación 11 de diciembre.
- Cuaderno-->Comparación y evaluación de clustering.
- Tarea 15-->Presentación 11 de diciembre.
- Cuaderno-->Pipeline.
- Lectura-->Text Classification in Python: Pipelines, NLP, NLTK, Tf-Idf, XGBoost and more.
- Tarea 16-->Presentación 13 de diciembre.
- Cuaderno-->Interfaz general de los pipelines.
- Tarea 17-->Presentación 13 de diciembre.
- Cuaderno-->Redes neuronales.
- Lectura-->Deep learning.
- Lectura obligatoria-->A Tutorial on Deep Learning Part 1: Nonlinear Classifiers and The Backpropagation Algorithm.
- Lectura opcional-->An overview of gradient descent optimizationalgorithms.
- Lectura obligatoria-->How to train your Deep Neural Network.
- Introducción a Keras.
- Repaso opcional-->TensorFlow and deep learning, without a PhD
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
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
-
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 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: