Modelización 4
Modelización 4
Machine
Learning
con Python
MACHINE LEARNING CON
PYTHON
Identificación de patrones y realización de predicciones
Computación en ciencias e ingeniería
• El trabajo del científico e
ingeniero requiere…
– Modelización matemática de
fenómenos y procesos
– Gestión eficiente de datos
– Manejo de herramientas
computacionales de altas
prestaciones
– Dominio de lenguajes de
programación
Uso de lenguajes deprogramación
• Tipo de herramienta:
– Software específico
– Lenguaje de programación de propósito general
• Características:
– Software propietario, cerrado y de pago
– Software abierto y libre
• ¿Qué herramienta utilizar?
– Conocer las fortalezas y debilidades de cada opción
– Necesidades de infraestructura (capacidades de
almacenamiento, transmisión y transformación de datos)
– Necesidades de explotación o analítica de datos
Lenguajes de programación
“Si sólo tienes un martillo, todo
parece un clavo",
Abraham Maslow (1966), "The
Psychology of Science"
¿Por qué Python?
• Lenguaje interpretado de propósito general, gratuito y “open source”
• Facilidad de uso yaprendizaje
• Codificación simple
– Estructura de anidación basada en sangría
• Portabilidad
• Módulos y paquetes para una gran variedad de tareas
• Colección de bibliotecas analíticas:
– Computación numérica
– Análisis dedatos
– Análisis estadístico
– Visualización
– Aprendizaje automático
¿Por qué Python?
• Lenguaje orientado a objetos
• Permite simplificar las operaciones de datos
– Estructuras de datos avanzadas (listas, conjuntos, diccionarios,…)
• Lenguaje de gran demanda entre las compañías de Big Data
– Compatibilidad con Hadoop
• Lenguaje de mayor crecimiento
• Comunidad de usuarios muy activa y dinámica
• Disponibilidad de herramientas de desarrollo
– Plataforma Anaconda
– Disponibilidad de diferentes IDEs (Integrated Development
Environment)
– Posibilidad de ejecución en servicios on-line: Google Colab, Jupyter
TIOBE
Programming
Community Index
https://www.tiobe.com/tiobe-index/
Tecnologías populares
Lenguajes más
utilizados por los
programadores
Encuesta realizada a
más de 80.000
desarrolladores de
todo el mundo
https://insights.stackoverflow.com/survey/2021
Lenguajes más utilizados por los científicos de datos
• Encuesta de
Kaggle
– Octubre 2019
– 19,717
profesionales
relacionados
con analítica
de datos
–
https://www.kag
gle.com/c/kaggl
e-survey-2019
• https://www.kdnuggets.com/2019/05/poll-top-data-science-machine-
learning-platforms.html
El lenguaje Python
• Lenguaje interpretado de propósito general
• Nació de la mano de Guido van Rossum,
programador holandés que desarrolló este
lenguaje de programación a finales de los 80
– Primera versión pública en 1991
– Python 3 desde 2008
• Python Software Foundation
– Misión: promover, proteger y avanzar el lenguaje de
programación Python, y apoyar y facilitar el
crecimiento de una comunidad diversa e internacional
de programadores de Python.
Recursos
• Página oficial del lenguaje
– https://www.python.org/
• Python Package Index (PyPI): miles de módulos de terceros
– https://pypi.org/
• Google Colab: entorno online para la ejecución de “notebooks”
– https://colab.research.google.com/
• Anaconda: plataforma de Data Science para Python y R
– https://www.anaconda.com
Recursos
• https://www.kdnuggets.com/
– Recursos, referencias a software, tutoriales, datasets
• https://www.kaggle.com/
– 50000 datasets y 400000 notebooks
• http://archive.ics.uci.edu/ml/datasets.php
– Machine Learning Repository
• https://www.cs.ubc.ca/labs/beta/Projects/autoweka/datasets/
– Datasets
Principales paquetes Python para machine learning
• Paquetes básicos
– NumPy: librería numérica
– SymPy: rutinas de cálculo simbólico
– SciPy: técnicas matemáticas avanzadas (algoritmos de optimización,
integración numérica,…)
– Pandas: librería de análisis de datos
– Matplotlib: rutinas gráficas y de visualización
– Seaborn: librería de visualización estadística avanzada basada en
Matplotlib
Principales paquetes Python para machine learning
• Aprendizaje automático
– scikit-learn: librería de machine learning (https://scikit-
learn.org/stable/tutorial/basic/tutorial.html)
– TensorFlow: librería de machine learning desarrollada por Google
– Keras: librería de redes neuronales. En 2017, el equipo de TensorFlow de Google
decidió ofrecer soporte a Keras en su librería
– MDP: algoritmos de aprendizaje supervisados y no supervisado
– Mlpy: técnicas de machine learning
– NetworkX: análisis de grafos
• Paquetes de procesamiento de lenguaje natural
– NLTK (Natural Language Toolkit): minería de texto
– TextBlob: procesamiento de texto
– BeautifulSoup: WebScrapping
Modos de trabajo con Python
Noviembre 2011
“A pesar de su abundancia, los
El valor de losdatos datos no son la fuerza
definitoria de nuestro tiempo.
Los datos sin contexto no son
información y como tal son
simplemente la materia en bruto
de la que partimos para la
comprensión, igual que un
bloque de granito no es una
escultura hasta que se retira la
piedra sobrante, aunque la
escultura esté allí ” [Dürsteler,
2002]
Inteligencia
• La esencia de la inteligencia
reside en la capacidad del
cerebro para predecir el futuro a
partir de la ingente cantidad de
información sobre el mundo que
va acumulando en su memoria
(memory-based model)
• Ese mismo principio está detrás Jeff Hawkins (2004). “On
del Machine Learning (ML), Intelligence: How a New
también conocido como Understanding of the Brain
will Lead to the Creation of
aprendizaje automático. Truly Intelligent Machines”
Machine learning (aprendizaje automático)
• Disciplina del campo de la Inteligencia Artificial (IA) que
mediante algoritmos dota a los computadores de capacidad de
identificar patrones en datos y elaborar predicciones.
• Este aprendizaje permite a los computadores realizar tareas
específicas de forma autónoma.
• El término se utilizó por primera vez en 1959, sin embargo, ha
ganado relevancia en los últimos años debido al aumento de la
capacidad de computación y el desarrollo de big data.
– Las técnicas de ML son, de hecho, una parte fundamental del Big Data.
– Uno de los pilares sobre los que descansa la transformación digital
Definiciones
• Machine learning:
– Disciplina que tiene como objetivos diseñar, entender y aplicar
programas de computador que aprendan a partir de la experiencia
(datos) con el propósito de modelizar, realizar predicciones o controlar
procesos
• Toma de decisiones automáticas a partir de los datos
• Predecir en nuevos ejemplos → GENERALIZACIÓN
– Automatización y mejora de los procesos aprendizaje de los
computadores basados en la experiencia, sin ser programados y sin
intervención humana. El proceso comienza con la alimentación de
datos de calidad y entrenar las máquinas mediante modelos que usen
los datos y algoritmos
¿Para qué sirve el MachineLearning?
• Predicción de tendencias
• Identificación de hábitos de compra y desarrollo de sistemas
recomendadores
• Vehículos inteligentes: ajuste de la configuración interna a las
preferencias del conductor, conducción automática,
identificación de señales, detección de obstáculos,…
• Identificación de spam, fake-news,…
• Procesamiento de Lenguaje Natural (PLN): asistentes virtuales,
traductores automáticos, reconocimiento de voz, análisis de
sentimientos,…
¿Para qué sirve el MachineLearning?
• Optimización en motores de búsqueda
• Detección de enfermedades
• Detección de fraudes (uso de tarjetas de crédito, siniestros
simulados, acometidas ilegales a servicios,…), ciberseguridad e
identificación de malware, blanqueo de capitales,…
• Identificación de patrones de fuga de clientes
• Gestión de recursos humanos y selección de personal
Términos relacionados
Data Science
Business Predictive
Analytics analytics
Deep learning
Data mining
Deep learning y machine learning
• Ambos son subcampos de la Inteligencia Artificial
• Deep learning Machine Learning
• Deep learning puede considerarse un "aprendizaje automático
escalable“
– Deep learning automatiza gran parte de la extracción de características del
proceso, elimina parte de la intervención humana manual necesaria y permite el uso
de conjuntos de datos más grandes.
• Puede usar datos no estructurados en formato bruto (por ejemplo, texto, imágenes) y
determinar automáticamente el conjunto de características que distinguen las distintas
categorías de datos entre sí.
– El machine learning clásico o "no profundo" depende más de la intervención
humana para aprender.
• Los expertos determinan las características necesarias para comprender las diferencias
entre las entradas de datos y, por lo general, requieren más datos estructurados para
aprender.
La minería de datos dentro de la ciencia de datos
• Google Trends (2004-Feb 2023)
Machine learning
Deep learning
Google Trends (2004-feb 2023)
Machine learning
Data Science
Big data
Deep learning
Machine learning
Data Mining
Aspectos metodológicos
Objetivo del Machine Learning
Información Predicciones
•Datos •Información
históricos susceptible de
generar
•Datos actuales acciones
Fundamentos del Data Science
• Proceso dinámico de generación de insights a partir de los datos
– Insight = visión interna o percepción
Análisis
Datos Insight Acción
Cuestión objeto
de investigación
Ejemplo: recomendación automática de productos
Datos demográficos
del cliente
¿Qué producto puede Recomendación de
Compras anteriores interesar al cliente? productos
Revisiones de
productos
Modelo de
preferencias del
cliente
¿Para qué clientes puede Acciones de
ser interesante el nuevo Marketing
producto?
Información de un
nuevo producto
Proyecto de Data Science
1. Definición del problema
– “Un problema bien definido es un problema
medio resuelto” (Charles F. Kettering)
2. Evaluación de la situación
– Riesgos
– Beneficios
– Contingencias
– Regulaciones
– Recursos
– Requerimientos
3. Definición de objetivos y criterios
Fases de un proceso demachine learning
Evaluación de la soluciónactual
Selección, integración y
Preparación dedatos Pre-procesado
transformación
Modelado Aplicación de algoritmos
• Aprendizaje no supervisado
– Descubrir relaciones en losdatos
– No existe una salidadeseada
• SUPERVISADO:
– Detección de spam dependiendo de los patrones que ha aprendido
del histórico de correos (remitente, relación texto/imágenes,
palabras clave en el asunto, etc.).
• NO SUPERVISADO:
– Identificar grupos de clientes que respondan a un mismo patrón de
compra.
• Regresión
– Objetivo: predicción de una variable numérica
• Clustering
– Objetivo: identificar grupos de objetos similares
No supervisado
• Reducción de dimensión
– Identificar conjuntos de características que muestren la
estructura de los datos
• Análisis de asociaciones
– Objetivo: capturar asociaciones entre ítems o eventos
• Análisis de grafos
– Objetivo: encontrar conexiones entre entidades
Clasificación de las técnicas
Técnicas de
extracción de
conocimiento
de los datos
Descriptivas Predictivas
Detección
Reglas de valores
Agrupamiento otras Clasificación Regresión otras
asociación anómalos
https://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/
Actuar
R1 R2 … Rd
𝑥𝑥11 ⋯ 𝑥𝑥1𝑑𝑑 I1 x11 x12 … x1d
𝐷𝐷= ⋮ ⋱ ⋮ I2 x21 x22 … x2d
𝑥𝑥𝑛𝑛1 ⋯ 𝑥𝑥𝑛𝑛𝑑𝑑 … … … … …
In xn1 xn2 … xnd
Tipos de datos
• Variables binarias/dicotómicas
– 0/1, True/False
• Variables categóricas (cualitativas): el atributo toma valores dentro de un
conjunto finito de estados
– Nominales (no hay relación de orden)
• Color={rojo,verde,azul,amarillo}
– Ordinales (los posibles estados tienen un orden)
• CalificacionEnergetica={A,B,C,D,E,F,G}
• Valoracion={1,2,3,4,5}
• Medallas={oro,plata,bronce}
• El paquete Numpy:
– Arrays unidimensionales (vectores), bidimensionales (matrices) y
multidimensionales
• El paquete Pandas:
– Estructuras:
• Serie: Estructuras unidimensionales indexadas mediante un índice
• DataFrame: Estructuras bidimensionales (index: etiquetas de filas; columns:
etiquetas de columnas)
– Disponibilidad de funciones para integración y transformación de
datos, además de estadísitica descriptiva y funciones de
visualización gráfica
Ejemplos de datoscompuestos
• Estructuras básicas:
lista = [1, 2, 3, 8, 9]
tupla = (1, 4, 8, 0, 5)
conjunto = set([1, 3, 1, 4])
diccionario = {'a': 1, 'b': 3, 'z': 8}
datos = {
"calorias": [420, 380, 390],
"duracion": [50, 40, 45]
}
df = pd.DataFrame(datos)
df3 = pd.read_csv('data.csv')
Adquisición de datos con Pandas
https://pandas.pydata.org/pandas-docs/stable/reference/index.html
• Carga de datos de diversas fuentes y formatos
– https://colab.research.google.com/drive/1pU1u33s9I
WhLfXSypOdtMaB0Q9aq6dKK?usp=sharing
Comparación de instancias: noción de distancia
• Un espacio métrico es un conjunto dotado de una función de distancia d(x,y)
– Propiedades de la función de distancia:
• 𝑑(𝑥, 𝑦) = 0 ⟺ 𝑥 = 𝑦𝑦
• Simetría: 𝑑𝑑 𝑥𝑥, 𝑦𝑦 = 𝑑𝑑 𝑦𝑦, 𝑥𝑥
• Desigualdad triangular: 𝑑𝑑 𝑥𝑥, 𝑧𝑧 ≤ 𝑑𝑑 𝑥𝑥, 𝑦𝑦 + 𝑑𝑑(𝑦𝑦, 𝑧𝑧)
• De las propiedades anteriores se deduce: 𝑑𝑑(𝑥𝑥, 𝑦𝑦) ≥ 0
– Inconvenientes:
• Sensible a escalas → normalización/escalado
• Si las variables están correlacionadas amplifica las
diferencias
– Apropiada con variables homogéneas, con
unidades similares
– En algunos algoritmos se considera la
distancia al cuadrado
• Distancia Manhattan:
• Distancia Minkowski
– Métrica 𝐿𝐿∞
• Distancia del coseno:
– Apropiada cuando hay muchas
diferencias de escala de unos rasgos a
otros o con datos con muchos valores
– Se calcula el coseno del ángulo entre
los dos vectores (medida de
similitud)
Distancia:
• Distancia de Hamming:
– Calcula el número de rasgos en los que las dos instancias difieren
– Se suele dividir por el número total de rasgos
• Ratio de rasgos en los que ambas instancias difieren
– Se puede aplicar sobre vectores binarios, en ese caso:
Instancia x
• Distancia de Jaccard:
Instancia y
1 0
– Sobre vectores binarios
1 CTT CTF
0 CFT CFF
A1 A2 A3 A4 A5 A6
x 0 0 0 1 0 1 CTT=1, CTF=1 CFT=2, CFF=2
y 1 0 0 1 1 0
• Distancia sobre atributos categóricos: coeficiente de coincidencia
simple
– Si n es el número total de atributos y m el número de atributos en los que los
valores coinciden:
• Conversiones de tipo
• Eliminación de outliers
– No necesariamente se corresponden con datos erróneos
Análisis exploratorio descriptivo de los datos
• Medidas decentralidad
– Media aritmética / media ponderada (se ve influida por outliers)
– Mediana
• Medidas de simetría
– Coeficiente de asimetría deFisher
• Medidas dedispersión
– Varianza
– Desviación típica (raíz cuadrada de la varianza)
Visualización gráfica
• Histogramas
• Boxplots
• …
Relaciones entre variables
• Correlaciones
– Datos numéricos → coeficiente decorrelación
- Pearson
– Datos categóricos → chi-cuadrado
– Datos categóricos y numéricos → ANOVA
• Correlación no necesariamente implica relacióncausa-efecto
– Correlación: las variables cambian juntas
– Causalidad: una variable afecta a la otra
Tratamiento de datos ausentes
• Posibles opciones de tratamiento de datos ausentes
– Mantener los datos como ausentes
– Eliminación de las instancias con atributos ausentes
– Eliminación del atributo para todo el conjunto
• Establecimiento de porcentajes máximos admisibles
– Imputación de valores:
• Uso de valores por defecto
• Valor ‘o’ para atributos numéricos
• Valor promedio en el resto de instancias o en un grupo de ellas con características
comunes
• Asignación del valor más frecuente en la muestra completa (moda)
• Uso de técnicas de regresión
Transformación de los datos
– Formato adecuado para el análisis
• Reducción de datos:
• Selección de rasgos relevantes para la tarea
de análisis.
• Agregación
• Reducción de la dimensión
• Escalado
• Normalización La preparación de datos puede
generar un conjunto de datos
• Estandarización más pequeño que el original,
mejorando la eficiencia del
• Discretización proceso de Minería de Datos.
• Escalado de los datos dentro de un rango especificado
– [0,1],[-1,1],…
– Reducir el impacto de las diferencias de escalas en los atributos
– Evitar trabajar con números muygrandes
Valores
escalados
SALARIO
EDAD
Nombre Edad Salario
• Distancias euclídeas:
Juan 23 años 2600 € – d(Juan,María) = 600.02
María 28 años 2000 € – d(Juan,Pedro) = 402.20
Pedro 60 años 3000 €
Escalado x/xmax
• Normalización min-max
• Otras técnicas de normalización
– Normalización por escalamiento decimal: desplazamiento del punto
decimal de los valores.
• Ejemplo: 256500o0 → 25.65 millones
– Normalización Sigmoidal: realiza una transformación no lineal de los
datos de entrada en el rango -1 a 1, usando una función sigmoidal.
• Ejemplo: función logística
• Características:
• Función creciente
• Tiende a 1 cuanto t tiende a infinito
• Tiende a 0 cuando t tiende a menos infinito
• Otras técnicas de normalización
– Normalización Softmax
• Generalización de la función logística
• También conocida como función exponencial normalizada
• “Comprensión” de los datos en el intervalo (0,1)
• Se llama así porque llega suavemente hacia su valor máximo y mínimo, sin nunca
llegar absolutamente.
• Dado un vector de datos 𝑥𝑥 = 𝑥𝑥1, 𝑥𝑥2, … , 𝑥𝑥𝑛𝑛
Otras transformaciones sobre los datos
• Transformaciones lógicas
– Las variables de intervalo se pueden convertir en ordinales como las
variables Talla o en nominales como Color, y crear variables ficticias o
dummy
Conversión de variables categóricas en cuantitativas
• La mayoría de modelos estadísticos no trabajan con datos categóricos
• Alternativas:
– Codificación mediante enteros (Rojo→1, Verde→2,Azul→3,…)
– Variable dummy para cada categoría (valores 0, 1)