La ciencia en datos busca extraer información valiosa a partir de los datos disponibles. Para ello, emplea fundamentalmente 4 disciplinas: (1)Matemáticas y Estadística; (2)Ciencias de la Computación; (3)Inteligencia Artificial y (4)Conocimiento del negocio.
Mi nombre es Jesús García y soy profesor investigador de Ciencia en Datos. Mi propósito con este sitio web es desarrollar los contenidos básicos que todo estudiante de ciencia en datos debe dominar, de la manera más didáctica y sencilla posible. De ahí el título de aprendiendo ciencia en datos.
Para cumplir con mi objetivo, voy a ir volcando en esta web los contenidos que empleo en mis clases en la Universidad. Por ello, la web va a estar siempre en construcción, o al menos en permanente actualización, con las mejoras que vaya realizando cada curso.
Inicialmente, para poder abarcar el tema, dado que la cantidad de información es ingente, me voy a centrar en la segunda y tercera categoria: «Ciencias de la Computación» e «Inteligencia Artificial».
El recorrido de aprendizaje que te propongo es el siguiente:
CIENCIAS DE LA COMPUTACIÓN
Las Ciencias de la Computación proporcionan buena parte de los fundamentos tecnológicos necesarios para trabajar con datos. Conocer cómo funcionan los sistemas informáticos, saber programar, gestionar y almacenar información, procesar grandes volúmenes de datos y desarrollar soluciones que puedan llevarse a producción son competencias esenciales para cualquier científico de datos. En este apartado recorreremos estos conceptos de forma progresiva, desde sus fundamentos hasta las herramientas y arquitecturas utilizadas en proyectos reales.
Arquitecturas
- Arquitectura de Sistemas
- Arquitectura de ordenadores
- Redes y Comunicaciones
Programación
Todo científico de datos debe saber programar y es conveniente que se maneje en más de un lenguaje de alto nivel. Yo he seleccionado Java y Python, dos de los lenguajes más ampliamente usados.
- Conceptos básicos de programación: Empezando por el principio, conviene introducir una serie de conceptos básicos.
- Java: Un recorrido por todo los fundamentos del lenguaje Java: variables, operadores, funciones de entrada y salida, estructuras de control, Clases y Objetos, Arrays y Colecciones, Sistemas de persistencia de datos ….
- Python: Los fundamentos de Python: variables, listas, diccionarios, estructuras de control, funciones, clases y objetos, persistencia de datos, librerias de ciencia de datos, aplicaciones de escritorio, desarrollo web …
- Programación orientada a objetos: Vamos a prestar especial atención al paradigma de la programación orientada a objetos, ya que este es el más ampliamente usado.
- Estructuras de datos
Bases de datos
Big Data
- Conceptos claves
- Herramientas: Hadoop, Spark, Kafka
- Procesamiento distribuido
- Arquitectura Lambda y Kappa
PROYECTOS DE DATA MINING
Un proyecto de Data Mining no consiste únicamente en aplicar algoritmos sobre un conjunto de datos. Es un proceso completo que comienza con la comprensión del problema y de los datos disponibles, y continúa con su preparación, análisis, modelado y evaluación. En este apartado veremos cómo abordar estos proyectos de forma estructurada, utilizando metodologías como CRISP-DM para transformar los datos en información útil que ayude a comprender problemas y apoyar la toma de decisiones.
Analítica de datos
- Introducción a la analítica de datos: Los fundamentos de la analítica de datos y sus principales niveles: Análisis descriptivo, Análisis de diagnóstico, Análisis predictivo y Análisis descriptivo.
- Framework para el desarrollo de proyectos de Data Mining: CRISP-DM
ETL: Extract, Transform, Load
- Diseño
- Open data
- Consumo APIs
- Web scrapping
EDA: Exploratory Data Analysis
- Análisis univariable y multivariable
- Identificación de outliers y datos faltantes
- Histogramas, diagramas de dispersión, boxplots
- Correlaciones y tendencias
- Visualización de datos
Pipelines
- Pipelines de procesamiento
- Procesamiento distribuido y en tiempo real
- Monitorización y evaluación
Despliegue en Producción
- MLOps
- Creación de APIs
- Docker y contenedores
INTELIGENCIA ARTIFICIAL
La Inteligencia Artificial engloba un conjunto de técnicas que permiten a los sistemas informáticos realizar tareas que tradicionalmente han requerido capacidades humanas, como aprender a partir de datos, reconocer patrones, realizar predicciones, generar nuevos contenidos o actuar de forma autónoma para alcanzar determinados objetivos. En este apartado recorreremos sus principales fundamentos y áreas de aplicación, desde el Machine Learning y el Deep Learning hasta la Inteligencia Artificial Generativa y la IA agéntica, prestando especial atención a las técnicas y herramientas más relevantes para la ciencia de datos.
Introducción a la inteligencia artificial
- Historia y evolución de la IA
- Taxonomia de la IA
- Impacto de la IA
- Dominio de la IA (AI Fluency)
Machine Learning
- Aprendizaje supervisado y no supervisado
- Modelos básicos: regresión, clasificación, clustering
- Reducción de dimensionalidad y selección de características
- Métricas y validación cruzada
- Aprendizaje por refuerzo
Deep Learning
- Redes Neuronales artificiales (RNA)
- Redes Neuronales convolucionales (CNN) para imágenes
- Redes Neuronales recurrentes (RNN, LSTM) para series temporales
- Transformers
- IA Multimodal
- Frameworks: TensoFlow, Keras, PyTorch
IA Generativa
- Modelos generativos: GANs, Diffussion Models
- Modelos de lenguaje (GPT, BERT)
- Aplicaciones: generación de texto, imágenes, código
- Consideraciones éticas y sesgos