udd_data_science_lectures

Repositorio con notas y apuntes de data science enfocados tanto en teoría como en implementación mediante el uso del lenguaje Python. Implementaciones mayores enfocadas mayormente a problemas mineros y metalúrgicos.

0
0
0
public
Forked

Repositorio de apuntes de ciencia de datos.


En este repositorio se almacenan todos los apuntes que he desarrollado (y/o traducido) en años de auto-aprendizaje de contenidos relativos a lo que muchas personas denominan Ciencia de Datos, en la forma de notebooks de Jupyter.

Estos apuntes tienen como objetivo entender la base e implementación de una serie de metodologías relativas al uso de recursos algebraicos y estadísticos, computación científica y algoritmos para obtener, tratar y analizar información valiosa a partir de los datos. Tal información, en general, requerirá la construcción de ciertos objetos matemáticos (y computacionales) que nos permitirán, con mucho esfuerzo (y, en algunos casos, algo de suerte), describir algún sistema, fenómeno o proceso particular, y usar tales objetos para obtener predicciones sobre la evolución futura de los mismos a fin de obtener conclusiones en base a preguntas tales como ¿Qué pasaría si… ? o ¿Podría ocurrir que…?.

Este repositorio está pensado como una continuación del curso de Análisis de Datos, donde desarrollamos las herramientas fundamentales de análisis, procesamiento y manipulación de datos mediante librerías de uso masivo de Python, orientadas al procesamiento de datos tabulares (Numpy y Pandas), graficación y reportabilidad (Matplotlib y Seaborn), análisis avanzados (Scipy) y cálculo simbólico (Sympy). De esta manera, en este repositorio abordaremos el mayormente desarrollo de algoritmos de aprendizaje automatizado conocidos colectivamente como Machine Learning. No es tan sencillo construir una definición que guste a todo el mundo de este concepto, pero por el momento nos conformaremos, en este pequeño texto introductorio, con decir que se trata de una rama de la computación científica (y también de la inteligencia artificial) cuyo objetivo es el desarrollo de técnicas y metodologías que permitan que las computadoras aprendan a partir de la experiencia.

Más adelante seremos más rigurosos a la hora de definir este término tan famoso hoy por hoy. Pero, por el momento, es bueno que sepamos que nuestro objetivo será construir recursos de esta índole. Y para ello, haremos el esfuerzo de desarrollar tales recursos de la forma más rigurosa posible. Es así que, cuando hablamos de modelos basados en algoritmos de aprendizaje, intentaremos generar un desarrollo que clarifique tanto su justificación matemática (con todo lo que ello significa) y su implementación en Python mediante librerías especializadas. Por esa razón, por ejemplo, no nos conformaremos únicamente con saber que un modelo de regresión lineal corresponde a una técnica que ajusta la mejor recta a un conjunto de datos. Sino que nos empeñaremos en establecer cuáles son las razones por las cuales dicha recta es la mejor, y bajo qué condiciones un modelo de este tipo es aplicable y por qué (y qué lo hace tan interesante y valioso en la práctica). Eso implicará necesariamente el navegar en un océano lleno de ecuaciones y funciones matemáticas además de únicamente código de Python. Algo no necesariamente común en la infinidad de cursos y recursos existentes hoy en día, disponibles para aprender a construir modelos de todo tipo. Personalmente, no estoy en contra del aprender haciendo. Creo que, en muchos casos, hay ciertos temas relativos al tiempo que tenemos disponible que favorecen el aprender únicamente cuestiones más prácticas. Pero, debido a que suelo escribir pensando en mi yo más pequeño, lleno de curiosidad y preguntas de todo tipo, siento que tomar el camino largo y entender –por ejemplo– qué hay detrás de un modelo de regresión logística binaria, o de un problema de agrupamiento, es una aventura mucho más emocionante y satisfactoria.

Por supuesto, esto no quiere decir que seamos mezquinos a la hora de implementar los modelos que construyamos. Es así que aprenderemos el uso de varias librerías especializadas de Python en la construcción y regularización de modelos basados en algoritmos de aprendizaje y su aplicación. Ejemplos de tales librerías serán Scikit-Learn (y algunos derivados como Skforecast, Scikit-Survival y Scikit-Optimize), XGBoost, Optuna, LightGBM y Shap. También nos daremos el tiempo de explorar un poquito algunas cuestiones introductorias relativas al aprendizaje profundo, que a su vez corresponde a un conjunto de algoritmos de machine learning que intentan modelar abstracciones de alta complejidad mediante topologías o arquitecturas variadas que colectivamente suelen recibir el nombre de redes neuronales. Dejamos en claro que este concepto de por sí es demasiado amplio para incluirlo en estos apuntes, y merece su propio repositorio si queremos abordarlo. Sin embargo, sí conoceremos, al menos un poco, de su implementación por medio de una gran librería de Python llamada PyTorch. Y por supuesto, y esto es un gustito personal, aprenderemos a modularizar nuestros proyectos de data science haciendo uso de la maravillosa librería Kedro para tales efectos.


¿A quién va dirigido este repositorio?

Como en el caso del repositorio de Análisis de Datos, este fue construido pensando en colegas mineros, ya sea estudiantes o profesionales, que deseen aprender estos contenidos y tengan algunas reticencias relativas al hecho de programar y/o utilizar herramientas técnicas que muchas veces no son comunes en el quehacer del minero, ya sea en la propia operación como en áreas más estratégicas.

No me tomaré la licencia de fundamentar mi creencia en tales miedos como antes, quizás para motivar a los posibles lectores a que lean el repositorio de Análisis de Datos (porque claro, no soy un experto publicista ni difundidor de contenidos, y suelo ser un tanto pesimista, así que todo el tiempo pienso que éstos apuntes no los leerá nadie, pero en fin… ¡tonterías existencialistas!), ya que, como comenté previamente, es un requisito esencial antes de entrar de lleno a este contenido.

No obstante lo anterior, sí es un requisito entender varios temas relativos al álgebra lineal, cálculo diferencial, estadística, probabilidad y teoría de optimización (no necesariamente lineal). Personalmente, creo que estos tópicos suelen ser revisados en los típicos planes comunes de ingeniería en la mayoría de las universidades. No obstante, en la primera parte de este repositorio, se incluye una primera sección (no tan breve, siendo honesto…) que aborda todos estos temas orientados a lo que vamos a aprender en relación a los algoritmos aprendizaje. Será la única sección donde prescindiremos de insistir en ejemplificar conceptos mediante ejemplos mineros, dado su carácter más fundamental. Sin embargo, en las siguientes secciones, sí seremos muy majaderos en aplicar todo lo que aprendamos a problemáticas mineras y metalúrgicas. Es así que construiremos modelos de clasificación que estimen la probabilidad de falla de pilares en niveles de producción de una mina subterránea; modelaremos las probabilidades de supervivencia de puntos de extracción en ambientes de altos esfuerzos ante eventos de alto riesgo (como estallidos de roca) e intentaremos calcular los tiempos de supervivencia; intentaremos bosquejar un modelo prescriptivo que simule escenarios de producción en una planta concentradora; construiremos modelos que permitan determinar si una roca es ultramáfica o félsica en base a trazas de tierras raras, y así sucesivamente.


Acerca del autor.

Mi nombre es René Quezada Castañeda. Tengo 35 años y soy ingeniero civil en minas de la Universidad de Santiago de Chile. Actualmente me desempeño como especialista de business analytics en la Subgerencia de Business Insight de Minera Candelaria, y tengo 7 años de experiencia trabajando en diversas faenas mineras y en los más diversos proyectos de analítica avanzada, incluyendo operaciones a cielo abierto y subterráneas y plantas concentradoras. Me gustan las matemáticas, el cine y los libros. Amo la ciencia ficción. Soy fanático de la obra literaria de Isaac Asimov, Philip Pullman, Philip K. Dick y Stanislaw Lem. Soy muy autodidacta, la mayoría de los temas asociados a esta hermosa disciplina los he aprendido en base a tutoriales, cursos, apuntes y mucho mucho estudio. Vengo de una familia pequeña, conformada por mis viejos –a quienes adoro– y yo. Soy papá de una gata (Lyra, como la protagonista de La Materia Oscura) y dos conejas (Capuchino y Fey). Soy preguntón, sufro de síndrome del impostor (gracias a mis colegas y amigos por recordarme siempre que puedo resolver cualquier problema), me gusta el rock y la música electrónica, amo el invierno y los videojuegos.

v0.3.3[beta]