Data Mining Machine
Data Mining Machine
© Structuralia 2
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
ÍNDICE
ÍNDICE........................................................................................................................................................................... 3
1. INTRODUCCIÓN ....................................................................................................................................................... 5
1.1 ¿Qué son Data Mining, Machine Learning y Deep Learning? ............................................................................... 5
1.2 Algunas aplicaciones de machine learning .......................................................................................................... 15
1.3 Categorías de machine learning: Aprendizaje supervisado, aprendizaje no supervisado, aprendizaje por
refuerzo y soluciones semi-supervisadas .................................................................................................................. 22
1.4 Preparación del entorno de trabajo ..................................................................................................................... 30
3 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
© Structuralia 4
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
1. INTRODUCCIÓN
En el primer capítulo de la asignatura se va a establecer una primera definición de los temas
clave que se van a abordar en el curso. A su vez, se va a explicar que entorno tecnológico de
trabajo se va a utilizar y cómo prepararlo para poder abordar las distintas tareas que se realizarán
a lo largo del curso
Los términos de Data Mining (DM), Machine Learning (ML) y Deep Learning (DL) son algunos de
los términos más mencionados y consultados en la literatura científica a todos los niveles, si bien
es cierto que estos términos muchas veces son utilizados de forma confusa y poco precisa. Es
por esto por lo que es importante, antes de entrar a abordar el curso, definir sucintamente qué
significan estos términos, cuál es su alcance, y cómo se relacionan entre sí.
Para poder entenderlos adecuadamente es necesario mencionar que estos se engloban dentro
de una categoría de las ciencias de la computación más amplia conocida como Inteligencia
Artificial (IA).
1 Aquí realmente habría que hacer una distinción entre lo que se conoce como IAG (un sistema inteligente
capaz de abordar cualquier tarea o problema) y la Inteligencia Artificial Fuerte o Strong AI (donde no sólo
se plantea lo anterior sino que además se busca desarrollar sistemas que a todos los efectos sean como
tal seres humanos por poder disponer de auto-conciencia y mente).
5 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El paradigma tecnológico de la IA fue cambiando con el paso de los años para, en lugar de
centrarse en desarrollar un sistema que emulase perfectamente a un ser humano (algo que,
además, no es fácil de poder medir o comprobar, ya que las soluciones clásicas como el Test de
Turning [2] han tenido numerosas críticas al respecto en lo referente a poderse ver como un
baremo absoluto de medición de inteligencia racional [3]).
Este nuevo paradigma tecnológico, conocido como Inteligencia Artificial Especializada (o, en
inglés, Narrow AI) acotaba el alcance y pretensiones de esta tecnología, planteando ahora no el
resolver cualquier tipo de tarea con un mismo sistema, sino desarrollar sistemas muy
especializados en la resolución de determinadas tareas concretas, donde, de nuevo, pudiesen
resolverlas de forma más eficiente que un ser humano.
▪ Machine Learning
▪ Sistemas Expertos
▪ Redes Bayesianas
▪ Algoritmos Evolutivos
Por este motivo, el ML estaría englobado dentro de una de las técnicas existentes de la IA, no
siendo la única que hay.
Así pues, tanto el ML como el DL forman parte de la misma, pero esta es un concepto más
amplio, que englobaría otras tecnologías como los Sistemas Expertos, la Lógica Borrosa, los
Algoritmos Genéticos… que no tienen que ver con las técnicas mencionadas de ML y DL.
© Structuralia 6
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
2Fuente:https://www.codesofinterest.com/2016/11/difference-artificial-intelligence-machine-learning-deep-
learning.html
7 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 2 Ejemplo de sistema que deduce automáticamente unos patrones para clasificar distintas imágenes dentro
de unas categorías concretas3
Por lo tanto, con Machine Learning se hará referencia directa a un conjunto de funciones
matemáticas que siempre necesitarán un determinado conjunto de datos o información de partida
gracias al cual serán capaces de ajustar determinados parámetros dentro de las funciones
matemáticas para poder llevar a cabo una generalización que les permita extraer insights o
conclusiones relevantes de nuevos conjuntos de información futuros a los que nunca habían sido
expuestos antes.
3 Fuente: http://danielnouri.org/notes/category/bioacoustics/
© Structuralia 8
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 3 Imagen comparativa de distintas aproximaciones para extraer información de los datos. Frente al paradigma
clásico en el que se tienen reglas fijas para tratar con los distintos conjuntos de datos, los algoritmos de ML plantean
la posibilidad de inferir nuevas reglas no preprogramadas (color gris en la imagen) o incluso deducir que información
de toda la proporcionada es realmente relevante para inferir esas nuevas reglas (representational machine
learning).4
Existen numerosos algoritmos, muchos de los cuales se verán en detalle a lo largo del curso,
pero existe un subconjunto de ellos que se clasifican dentro de lo que se conoce como Deep
Learning o Aprendizaje Profundo.
4Fuente: https://www.slideshare.net/natalinobusa/deep-learning-overview-and-practical-use-in-marketing-
and-cybersecurity
9 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El DL toma como inspiración el funcionamiento del cerebro humano e intenta definir distintas
arquitecturas de conexiones neuronales que simulen de alguna forma su funcionamiento, dando
lugar por ello a un tipo de algoritmos que son bioinspirados.
Estas técnicas de DL, como se verá en la imagen siguiente, no son algo realmente nuevo, sino
que existen desde ya mediados del siglo XX
5 Fuente: https://www.quora.com/What-are-other-fields-or-%E2%80%9Cbranches%E2%80%9D-of-AI-
outside-of-but-that-are-just-as-interesting-and-powerful-as-machine-learning
© Structuralia 10
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ahora bien, estos algoritmos son computacionalmente muy complejos y requieren una gran
cantidad de información para poder obtener una buena generalización con sus parámetros. Este
es el motivo por el que han pasado desapercibidos durante décadas hasta que se han producido
crecimientos y mejoras en esos dos aspectos, por un lado a nivel de infraestructuras de cómputo
con el uso de GPUs y TPUs, y por otro a nivel de datos disponibles gracias a la era del Big Data.
Esto ha servido para demostrar el gran potencial que tienen todos estos algoritmos,
especialmente para escenarios donde se dispone de mucha información.
6 Fuente: https://jisajournal.springeropen.com/articles/10.1186/s13174-018-0087-2
11 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 6 Evolución histórica de algunas aplicaciones y técnicas de ML junto con las infraestructuras usadas para las
mismas7
Por último, quedaría definir qué se entiende por Data Mining y cómo se relaciona con todo lo
anterior.
Así como el ML y el DL eran técnicas que se engloban dentro del stack tecnológico de la IA, la
minería de datos es una aplicación de dichas técnicas, junto con otras técnicas estadísticas
que no se engloban dentro del conjunto de algoritmos de ML, para extraer información
relevante de un conjunto de datos concreto. Esta es otra rama dentro de las ciencias de la
computación.
7 Fuente: https://www.bdti.com/InsideDSP/2016/11/17/WaveComputing
© Structuralia 12
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
8 Fuente: http://www.cellstrat.com/2017/10/27/applications-of-ai-ml/
13 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Cabe mencionar que algunos de los algoritmos que se analizarán tendrán inspiración en otras
ramas de la IA (concretamente en las redes bayesianas). Estos algoritmos se incluyen ya que a
día de hoy se engloban de forma general dentro del conjunto de técnicas de Machine Learning.
9 Fuente: https://www.adendavies.com/ai-wont-absolve-you/
© Structuralia 14
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 1 Como se puede apreciar, la minería de datos (data mining) aparece como intersección de distintas
disciplinas.10
Aunque el ser humano no sea consciente, en la era actual su día a día está impregnado de
distintas aplciaciones de ML, muchas de las cuales ya se han asumido como elementos
imprescindibles y sin las cuales sería difícil realizar muchas de las tareas que hoy en día se llevan
a cabo.
10 Fuente: Asignatura de Minería de Datos del Máster de Ingeniería de Sistemas de Decisión de la URJC.
15 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Existen numerosas plataformas de redes sociales en las que ya se ve como algo normal que
cuando se sube una imagen a las ellas el sistema identifique los rostros de las personas que
están presentes e incluso proponga al usuario que etiquete dichos rostros con algunas de sus
amistades.
Autocompletado de textos
Prácticamente todos los smartphones que se utilizan a día de hoy ofrecen la posibilidad de
autocompletado de los textos, proponiendo como acabar frases o palabras a los usuarios en
base a lo que éstos vayan escribiendo.
© Structuralia 16
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Recomendaciones de contenidos
Figure 12 Ejemplo de recomendaciones de contenidos audiovisuales a través de Netflix, donde las distintas
recomendaciones ofrecidas se llevan a cabo gracias a algoritmos de ML
17 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Robótica
Otra de las aplicaciones de ML más relevantes es el campo de la robótica, donde gracias a estos
algoritmos los sistemas son capaces de interactuar con el entorno, más aún, son capaces de
poder aprender a interactuar con cualquier tipo de entornos nuevos a los que se enfrenten.
Figure 13 Imagen de un robot humanoide (Atlas) de la empresa Boston Dynamics donde se aprecia como el sistema
ha aprendido a esquivar obstáculos gracias a distintas técnicas de aprendizaje
Diagnóstico médico
Los algoritmos de ML son también utilizados dentro del ámbito sanitario para numerosas
aplicaciones, entre las que se encuentra la asistencia y apoyo al diagnóstico médico. Estos
sistemas son capaces de aprender a reconocer muchas patologías y enfermedades mediante el
análisis de imágenes médicas, y en numerosas ocasiones lo hacen de forma más precisa que
un médico.
© Structuralia 18
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Videojuegos
El uso de algoritmos de ML también está presente en la industria de los videojuegos, donde son
utilizados tanto para dotar de inteligencia a los distintos agentes artificiales presentes en dicho
juego, como para otras aplicaciones más novedosas como la realidad virtual o la realidad
aumentada.
Figure 15 ML usado en distintas plataformas de videojuegos para crear agentes virtuales inteligentes
19 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Asistentes virtuales
A día de hoy tanto en dispositivos móviles como mediante elementos físicos (Google Home,
Aura, Alexa…) existen asistentes virtuales que permiten a los usuarios una interacción directa
con una gran cantidad de sistemas a través de un único punto de acceso mediante el diálogo
con dichos asistentes.
© Structuralia 20
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Es costumbre ya dentro del uso del correo electrónico que este filtre automáticamente qué
correos son spam y cuáles no para dejar en la carpeta de entrada sólo los mails relevantes. La
detección de correos spam se hace muchas veces usando algoritmos de ML y, concretamente,
uno que se abordará precisamente dentro de este curso.
Todos estos sistemas son posibles gracias a la capacidad de estos algoritmos de extraer
numerosos insights de una cantidad ingente de datos disponibles. Bien es cierto que la extracción
de conocimiento en base a distintos conjuntos de información se puede hacer en muchos casos
de forma manual, pero a día de hoy cada vez existen más y más cantidades de datos, lo que
hace que sea imprescindible que existan técnicas que sean capaces de extraer conocimiento de
forma automática y sin la necesidad de trabajo por parte de un agente humano. De esta forma
se pasará de analizar y trabajar con conjuntos de datos reducidos (como se ha hecho
tradicionalmente) a poder extraer información de potencialmente todos los datos que se generan
constantemente desde distintas fuentes de origen.
21 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 18 Evolución de los datos generados a nivel mundial desde 2010 hasta la previsión de 2020 11
Todos estos algoritmos comparten el que son capaces de aprender gracias a determinado
conjunto de datos disponibles, de manera que posteriormente son capaces de generalizar lo que
han aprendido a nuevos datos que nunca habían visto antes. Ahora bien, la forma en la que
aprenden es lo que los distingue y lo que da lugar a las categorías antes mencionadas que se
van a detallar a continuación.
11 Fuente: https://www.emc.com/collateral/analyst-reports/idc-digital-universe-united-states.pdf
© Structuralia 22
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La mejor forma de entender todo lo anterior es con unos ejemplos sencillos. Supongamos que
se dispone de un conjunto de datos en los que se tienen distintos rasgos que caracterizarían a
un animal (tamaño, peso, si tiene o no pico, color, si son o no vertebrados, si son o no aves…).
Se podría querer tener un algoritmo que pudiese, en base a la información proporcionada, poder
deducir de qué tipo de animal se tratase.
En el caso del aprendizaje supervisado el punto de partida serían unos cuantos casos en los que
se conoce la categoría a la que pertenecen de inicio (por ejemplo porque un especialista los haya
identificado previamente) y en base a las relaciones entre los rasgos y la salida (animal) se
generalizaría el aprendizaje del sistema para poder identificar nuevos animales de los que se
obtuviesen los datos de rasgos.
12 Fuente: https://blog.westerndigital.com/machine-learning-pipeline-object-storage/supervised-learning-
diagram/
23 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Esto podría parecer similar a un sistema de reglas fijo (If-Else) en el que se asociase de forma
fija el nombre del animal a rasgos como color o si tienen o no pico, ¿pero, qué pasaría para tratar
variables numéricas como el peso o tamaño?, ¿se tendría que tener una regla que contemplase
todos los valores numéricos posibles? Eso sería como tal inviable, y precisamente por esto
aparecen como útiles estos sistemas de aprendizaje supervisado que pueden hacer que los
parámetros de ajuste de los algoritmos se adapten según los datos usados para el entrenamiento
del sistema (es decir, los datos con los que se tiene correspondencia de rasgos y animal) para
poder identificar animales con valores de esos rasgos distintos.
13 Fuente: https://bigdata-madesimple.com/machine-learning-explained-understanding-supervised-
unsupervised-and-reinforcement-learning/
© Structuralia 24
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Así, en resumidas cuentas, estos sistemas se podrían ver como unas cajas negras en las que
existe una función matemática (con determinados parámetros o coeficientes que se pueden
ajustar) que relaciona unos parámetros de entrada (los rasgos) con una salida concreta.
ÿ = 𝐹(𝑋)
Se tendría así esa función F que recibe una matriz con los valores de los parámetros de entrada,
y representada en ese parámetro X y en la que cada fila de la matriz correspondería a los datos
disponibles de cada uno de los animales y las columnas serían los distintos rasgos que se están
utilizando para el análisis. Por otro lado, aparece el vector-columna ÿ que representa los distintos
tipos de animales (uno por fila) que cree el sistema que corresponden con los datos que se tiene
en X para unos valores concretos de los parámetros de la función.
Pues bien, con esos datos predichos en ÿ el sistema podría tratar de minimizar lo siguiente:
min(𝑦 − ÿ)
Donde y sería los datos reales de los nombres de animales, de manera que buscará la mejor
combinación de parámetros de la función F() tal que esa diferencia sea lo menor posible; es
decir, que aunque el sistema no vaya a acertar siempre intente fallar lo menos posible.
Este tipo de algoritmos es probablemente el más usado dentro del campo de la ciencia de datos.
Cabe decir, sobre todo en los proyectos de Big Data, que las categorías (el vector y) no siempre
tienen que ser generadas por un usuario de forma manual sino que también pueden haber sido
generadas de forma automática por un sistema (por ejemplo, identificar si un cliente se va a ir de
la compañía en función de rasgos como su edad, su sexo… la clase a identificar, si se va o no
de la compañía, se deduce de un conjunto de datos pasados conocido como histórico, de forma
que no hay que identificarlo manualmente).
Dentro de este conjunto de algoritmos se puede destacar una subcategorización más en función
de la variable de salida que se esté prediciendo, conocidas como problemas de clasificación o
de regresión.
25 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Clasificación
La variable de salida podría ser una categoría, como el caso anterior de los animales, donde se
intente predecir si éste es un “pato”, un “perro”… Para los casos en los que los que la variable
es una categoría se utiliza un conjunto determinado de algoritmos conocidos como algoritmos de
clasificación.
Regresión
Ahora bien, podría ocurrir que la variable a predecir fuese un número real, como por ejemplo
querer predecir el precio de una vivienda en función de categorías como el tamaño, el barrio…
En este caso se estaría ante un problema de regresión, y para estos problemas, como se verá
en el tema correspondiente, se usarán unos algoritmos específicos.
La situación antes descrita no es la situación que va a ocurrir siempre con todos los conjuntos
de datos con los que se puede trabajar. Volviendo de nuevo al caso de los animales, podría ser
bastante probable que no se tuviese la categoría asociada a los rasgos disponibles ya que por
ejemplo no se pudiesen identificar manualmente por falta de tiempos, recursos… por ejemplo,
se puede imaginar que se dispusiese de sensores, cámaras, básculas… un conjunto de
dispositivos que diesen todos los datos de rasgos antes descritos para cualquier animal que
pasase por el sistema, pero para tener las clases faltaría que alguien identificase directamente a
los animales para poder entrenar a los algoritmos mencionados antes.
Para todos los casos en los que no se dispone de clases asociadas a unos parámetros de entrada
aparece un conjunto adicional de algoritmos conocidos como no supervisados que se
caracterizan por poder aprender y generalizar conocimiento en base a conjuntos de datos sin
categorías o sin etiquetas.
© Structuralia 26
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Estos sistemas buscan relaciones existentes entre los valores de datos de cada uno de los
registros (en el ejemplo anterior, animales) para intentar deducir relaciones entre ellos. Por
ejemplo, un sistema podría intentar agrupar registros que considerase similares dentro de grupos
(o clústeres). Esto es lo que haría un determinado conjunto de algoritmos conocidos como de
segmentación o clústering, y esas agrupaciones las harían de forma automática sin necesidad
de ese conocimiento supervisado adicional que sí necesitan los otros algoritmos mencionados.
Figure 21 Ejemplo sencillo de un algoritmo no supervisado en este caso de clustering donde se deducen grupos de
animales similares en base a información o patrones que detectan los algoritmos sobre el conjunto de datos
disponibles. No se tendría el nombre de las categorías con estos algoritmos de forma directa ya que para esto se
necesitaría un elemento supervisado, pero si se tuvieran esos grupos de forma automática.
27 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El aprendizaje por refuerzo (Reinforcement Learning, RL) es uno de los paradigmas más
novedosos y que más ha estado creciendo en los últimos años gracias al avance de distintas
investigaciones académicas y por el éxito que ha tenido por su aplicación a problemas complejos
como fue el caso del sistema AlphaGo de Google y su victoria en una partida de GO contra el
célebre campeón Tang Weixing en 2016 [4].
14 Fuente: https://bigdata-madesimple.com/machine-learning-explained-understanding-supervised-
unsupervised-and-reinforcement-learning/
© Structuralia 28
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Volviendo al ejemplo del Go, el agente tendrá que aprender tras jugar varias partidas
consecutivas, que acciones concretas en función de un estado concreto del tablero le llevarán a
maximizar su función objetivo (que es ganar, y ganar en el menor número de jugadas posibles).
Todo esto, y esta es una de las características importantes de este tipo de algoritmos, lo descubre
el sistema de forma autónoma sin necesidad de una supervisión humana. Es por esto por lo que
existen defensores de que este paradigma, de gran inspiración psicológica en corrientes como
la de Pavlov, Skinner o Thorndike con la teoría del conductismo, que creen que éste será el
paradigma que verdaderamente encarne lo que es un sistema de IA y el que abrirá el camino
hacia la IAG.
15 Fuente: https://bigdata-madesimple.com/machine-learning-explained-understanding-supervised-
unsupervised-and-reinforcement-learning/
29 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 24 Ejemplo de una aplicación de RL. El sistema usa un sistema de recompensas con un sistema de
puntuaciones de manera que aprende la mejor combinación de sus movimientos posibles (saltar o agacharse) para
poder maximizarla; la penalización (el recibir menos recompensa al acabarse el juego) aparece al chocar contra
alguno de los obstáculos.
El entorno que se va a utilizar durante el curso para los distintos ejercicios va a ser la distribución
de Python conocida como Anaconda (distribución libre y open source). El motivo principal es que
dicha distribución incluye ya instalados la mayoría de los paquetes que se utilizan para ML, así
como facilita la instalación de nuevos paquetes si fuese necesario y simplifica la gestión de
entornos virtuales (ver más adelante).
A continuación se muestran los pasos para instalarlo desde cero tanto en Windows como en
Linux/Mac.
© Structuralia 30
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Existen en la actualidad dos versiones principales de Python, Python 2.7 y Python 3.7, que han
coexistido durante bastantes años. Ahora bien, dado que se ha anunciado que la versión 2.7 va
a dejar de tener soporte en aproximadamente 1 año16, se va a utilizar en este curso la versión
3.717, con lo que se recomienda descargar esa.
Instalación en Windows18
Los pasos para poder instalar Anaconda en Windows son los siguientes:
https://www.anaconda.com/download/#windows
16 Fuente: https://pythonclock.org/
17 También es válida la versión de Python 3.6.3, aun siendo un poco más antigua. Durante el curso es
posible que se vean en los ejemplos algunas salidas de programas en dicha versión; Todo lo que se va a
plantear es análogo en ambas.
18 Fuente: https://conda.io/docs/user-guide/install/windows.html
31 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
© Structuralia 32
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
33 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
© Structuralia 34
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
6. Terminar la instalación.
35 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
En caso de no haber seguido el punto alternativo en “4”, se puede agregar en cualquier momento
Anaconda a las variables de entorno para poder ejecutarlo desde la terminal de Windows, usar
Git Bash…
© Structuralia 36
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
4. Y las rutas anteriores se añaden al path de las variables de entorno (se puede
localizar tecleando “variables de entorno” en el buscador de Windows).
37 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Si todo se ha hecho correctamente, se podría repetir el punto 1 y obtener la salida adecuada del
2).
https://www.anaconda.com/download/#linux
https://www.anaconda.com/download/#macos
bash Anaconda3-5.2.0-Linux-x86_64.sh
Figure 3121
19 Fuente: https://conda.io/docs/user-guide/install/linux.html
21 Fuente: https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-
quickstart
© Structuralia 38
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 3222
Al final de la instalación se propondrá instalar Visual Studio Code, aunque esto es totalmente
opcional y no será necesario para este curso.
4) Para verificar que todo está correcto desde la terminal del sistema se ejecutan los
siguientes comandos:
$ python --version
$ anaconda --version
Figure 3323
22 Fuente: https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-
quickstart
23 Fuente: https://www.digitalocean.com/community/tutorials/how-to-install-anaconda-on-ubuntu-18-04-
quickstart
39 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Python y Anaconda ofrecen la opción de trabajar con lo que se conoce como entornos virtuales.
Estos entornos son instancias aisladas donde los paquetes que se instalen permanecen al
margen del resto de entornos o de la distribución principal de Python, de manera que se facilita
el control de las librerías utilizadas y se simplifica la reproducibilidad de entorno para ejecución
del código desarrollado.
Aunque no es necesario para la realización de este curso, a continuación se muestran los pasos
para ello.
Donde my_env es un nombre arbitrario para hacer referencia al entorno. Este proceso llevará un
cierto tiempo ya que se instalan dentro de ese entorno las librerías que Anaconda trae por defecto
dentro.
$ activate my_env
Y en Linux/Mac
© Structuralia 40
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
En Windows:
En Ubuntu24:
(my_env) $ python3
Esta técnica permite además crear entornos nuevos que tengan el mínimo número de paquetes
necesarios, frente a la distribución principal de Anaconda que dispone de muchos paquetes que
puede que no hagan falta para una aplicación o código concreto.
Spyder25
Spyder es una de las IDEs más populares para la ciencia de datos ya que ofrece una interfaz
amigable muy semejante a las que ofrecen otros lenguajes usados para este propósito como
24 En Linux/Ubuntu en general es mejor especificar la versión de Python, a menos que se haya modificado
manualmente, ya que puede incluir por defecto una distribución previa de Python 2.7 asociada al comando
Python.
25 https://www.spyder-ide.org/
41 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
RStudio o Matlab, y que ofrece un explorador de variables para conocer el valor de los
parámetros durante la ejecución parcial del código, lo cual sirve de gran ayuda para la
comprensión del flujo de ejecución y solución de errores.
Una ventaja adicional de este IDE es que está puramente desarrollado en Python y que es
relativamente ligero con lo que se puede instalar dentro de entornos virtuales. Esta IDE, además,
viene incluida con la instalación por defecto de Anaconda.
Para abrir Spyder se puede hacer desde la barra de búsqueda (Windows) o desde la terminal de
comandos (Windows/Linux/Mac) con el comando:
$ spyder
© Structuralia 42
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Jupyter Notebook26
Jupyter Notebook es una aplicación web de código abierto que permite desarrollar y ejecutar
código en distintos lenguajes de programación (entre ellos Python) donde se pueden combinar
celdas en las que se ejecute código, texto, visualizaciones… de manera que se creen cuadernos
interactivos para ayudar a la presentación del desarrollo de un programa.
Con la instalación por defecto de Anaconda se incluye Jupyter Notebook, el cual se puede
ejecutar con el comando siguiente:
$ jupyter notebook
26 http://jupyter.org/
43 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Una vez ejecutado se puede acceder a él desde cualquier navegador (Chrome, Firefox, Edge…)
a través de la url: http://localhost:8888/tree
Desde ahí se pueden crear nuevos cuadernos (archivos que tendrán la extensión .ipynb) que
tienen el aspecto siguiente:
© Structuralia 44
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
NumPy27
NumPy es una librería que facilita el trabajo con matrices y vectores y que proporciona
numerosas funciones matemáticas y algoritmos para poder operar sobre los datos de forma muy
eficiente.
Pandas28
Scikit-Learn29
Scikit-Learn es una de las librerías más importantes para este curso ya que incluye
implementaciones de una gran variedad de algoritmos de ML para tareas de regresión,
clasificación, análisis no supervisado… de manera que será la librería de referencia de ML para
este curso. Los modelos que aquí se ofrecen se integran fácilmente con el formato de datos
obtenidos desde NumPy o Pandas.
Matplotlib30
27 http://www.numpy.org/
28 https://pandas.pydata.org/
29 http://scikit-learn.org/stable/
30 https://matplotlib.org/
45 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Keras31
Keras es una librería diseñada para desarrollar redes neuronales en Python, y será la librería
que se utilizará para los temas de Deep Learning. La librería busca agilizar el desarrollo de estas
arquitecturas al funcionar sobre un backend de otras librerías de DL más complejas como pueden
ser Theano, TensorFlow o CNTK, de manera que es así un wrapper sobre dichas librerías
tratando de homogeneizar y simplificar el uso de las mismas.
Statsmodels32
Statsmodels es un paquete estadístico de Python que complementa todo lo que se ofrece desde
Scikit-Learn a nivel de ML ofreciendo herramientas más ubicadas en la estadística clásica pero
que son igualmente necesarias para muchos problemas, como pueden ser los contrastes de
hipótesis, las series temporales o el estudio descriptivo de los datos. Gracias a Statsmodels se
disponen de numerosas herramientas en Python que tradicionalmente han estado reservadas a
lenguajes de programación de un uso más puramente estadístico (como R).
SciPy33
Otra librería muy útil de conocer es SciPy. Esta ofrece las herramientas necesarias para poder
llevar a cabo problemas de computación matemática como es el caso de integraciones,
problemas de optimización lineal o no lineal (incluyendo técnicas metaheurísticas) o
interpolación. Para ello usa de base los objetos matemáticos que proporciona NumPy y sobre
ellos opera con sus distintas funciones.
Jupyter Lab34
Como alternativa a Jupyter Notebooks, se puede utilizar Jupyter Lab, que ofrece una interfaz
más completa y con más funcionalidades.
Google Colab35
Google ofrece la posibilidad de trabajar con cuadernos de Jupyter en la nube, de manera que no
hay que instalar ni preparar ningún entorno en local, sino que todo se ejecuta en sus servidores.
31 https://keras.io/
32 https://www.statsmodels.org/stable/index.html
33 https://www.scipy.org/
34 https://jupyterlab.readthedocs.io/en/stable/
35 https://colab.research.google.com/notebooks/intro.ipynb#recent=true
© Structuralia 46
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El debate sobre cuál es el mejor lenguaje de programación para trabajar con ML es un debate
abierto y con muchos defensores por parte de todos los lenguajes. Lo cierto es que no existe una
respuesta unívoca y cada lenguaje tiene unas ventajas destacables que le hacen apropiado para
algunas casuísticas más que para otras.
Ahora bien, de entre todas esas ventajas Python destaca por su versatilidad, amplio ecosistema
y una gran comunidad por detrás. Muchas de las comunidades de programadores y
desarrolladores más activas, como StackOverflow36, contienen numerosos Q&A resueltos de
muchas dudas que pueden surgir con el uso de este lenguaje.
Como se ha podido ver con la descripción previa de librerías, Python incluye los paquetes
necesarios para poder trabajar con ML tanto a nivel de investigación y prototipado como a nivel
de desarrollo de producción (más aún cuando se puede integrar fácilmente con herramientas de
procesamiento de Big Data como Spark mediante APIs). De hecho, Python es un lenguaje muy
maduro que no sólo está pensado para trabajar dentro de este campo de ML sino que es también
utilizado como lenguaje de propósito general, lo que facilita el desarrollo de proyectos end-to-
end usando un único lenguaje para todo el desarrollo incluido el proceso analítico.
Python, además, ofrece facilidades de uso como la exploración de variables con IDEs como
Spyder y tienen una sintaxis bastante amigable y relativamente similar a la de otros lenguajes
para ML y analítica como R o Matlab.
Todo esto ha ido haciendo que Python haya ido creciendo en popularidad tanto dentro de la
comunidad de científicos de datos y perfiles que trabajan diariamente con algoritmos de ML,
como dentro de comunidades de desarrolladores de propósito más general. De hecho, las
gráficas siguientes muestran como Python es el lenguaje de programación más popular y
utilizado a día de hoy.
36 https://stackoverflow.com/
47 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
37 Fuente: http://blog.revolutionanalytics.com/2018/06/pypl-programming-language-trends.html
38 Fuente: http://blog.revolutionanalytics.com/2018/06/pypl-programming-language-trends.html
© Structuralia 48
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Todo esto hace que la mayoría de las empresas que buscan candidatos para trabajar con Big
Data y ML pidan como habilidad clave el conocimiento y dominio de este lenguaje. Por este
motivo se considera que trabajar con él durante el curso ofrecerá adquirir una destreza que casi
seguro será una buena inversión para el futuro.
Algunas librerías Open Source existentes para trabajar con ML en otros lenguajes
39 Fuente: http://blog.revolutionanalytics.com/2018/06/pypl-programming-language-trends.html
49 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Apache Weka: Existen librerías para trabajar en Java con muchos algoritmos de ML,
como es el caso de Apache Weka. https://www.cs.waikato.ac.nz/ml/weka/
© Structuralia 50
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Tipos de tareas
Así pues, los modelos de aprendizaje supervisado se utilizarán principalmente para tareas
predictivas con las que se pretende estimar el valor de una variable usando una serie de rasgos
disponibles.
51 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Además de las tareas predictivas, otro tipo de tareas que se pueden realizar con los datos son
las tareas descriptivas en las que se busca identificar patrones o relaciones entre un
determinado conjunto de rasgos o variables concretas. Esto es lo que se hace principalmente
con los modelos no supervisados aunque, como se verá más adelante, también se puede aplicar
a cierto nivel dentro de los modelos supervisados ya que muchos de ellos permiten analizar
cuánto contribuyen las distintas variables para predecir la variable de salida (por ejemplo, en el
caso anteriormente descrito puede que influya más el reparto de gastos frente a la ciudad de la
sede de la empresa), de manera que se estaría llevando a cabo una tarea que también es
descriptiva. Es por ello que dentro de las tareas descriptivas que existen, a los modelos
supervisados les aplican las tareas de análisis exploratorio que consisten en ver correlaciones
entre variables, asociaciones o dependencias.
Tipos de datos
Además de lo mencionado previamente, se debe tener en cuenta el tipo de datos con los que
normalmente se trabajará en estos problemas de ML (y en muchos otros de los que se abordarán
a lo largo del curso). En general, según como sean los tipos de datos, se pueden clasificar en
datos numéricos, datos binarios o datos categóricos:
▪ Numéricos: Estos son variables numéricas tanto enteros como reales. Por ejemplo, el
salario de una persona, la edad, los Kg de peso…
▪ Binarios: Los datos binarios pueden adquirir dos tipos de valores; 1/0, Verdadero/Falso…
▪ Categóricos: Los datos categóricos son una generalización del caso anterior en donde
los valores posibles ya no son sólo dos categorías sino que pueden ser tres o más. Por
ejemplo el nombre de una persona, el tipo de línea contratada…
© Structuralia 52
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 2 En este ejemplo se muestran los tipos de datos mencionados aplicados a un ejemplo de tabla de datos
de una compañía telefónica. En la columna de datos binarios se tienen dos tipos de valores posibles según si un
cliente ha cancelado o no el contrato con dicha compañía (0=Falso, no ha cancelado; 1=Verdadero, sí ha cancelado).
Un elemento adicional a tener en cuenta en referencia a los tipos de datos es que todos los
algoritmos de ML trabajan con datos en formato numérico. ¿Qué ocurre entonces con los datos
categóricos mencionados antes cuando estos están expresando un valor de tipo texto? En estos
casos será necesario llevar a cabo una conversión de los datos a formato numérico mediante un
proceso conocido como codificación de categorías (o label encoding). Este proceso transforma
las distintas categorías existentes en valores numéricos enteros en los que cada uno de ellos
está asociado a una de las distintas categorías. De esta forma se dispondría de un vector de
valores numéricos que ya se podría utilizar dentro de todos los algoritmos de ML.
53 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 3 Ejemplo de datos anterior donde a cada categoría se le asocia un valor numérico. Por ejemplo, “Madrid”
pasa a estar representado por el valor numérico ‘2’.
De nuevo; para todos estos algoritmos se tendrán que utilizar matrices numéricas de datos de
entrada-salida. Así pues, pueden trabajar con una fuente de datos arbitraria de entrada siempre
que esta se pueda transformar de alguna forma a una expresión matricial numérica. Existen
numerosas ramas dentro de la IA que trabajan en investigar como poder transformar fuentes de
datos que podrían ser videos, fotos, textos… a expresiones numéricas eficientes que permitan
el uso de estos algoritmos sobre los datos extraídos. De esta forma, por ejemplo, se pueden
construir aplicaciones como la detección de caras en Facebook mencionada previamente;
utilizando imágenes como punto de origen, se han podido expresar numéricamente de manera
que gracias al uso de algoritmos similares a estos se ha podido detectar cuándo en una imagen
hay una cara (y dónde está) y cuando no.
© Structuralia 54
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Como se mencionó en la introducción, la diferencia entre un tipo de tarea y otra reside en el tipo
de variable de salida. Un problema de regresión trabaja con variables de salida numéricas
mientras que uno de clasificación trabaja con variables de salida binarias o categóricas.
Un problema de regresión busca utilizar una función (que puede ser lineal o no lineal) para
relacionar los rasgos de entrada con un valor numérico de salida (que no está como tal acotado;
puede adquirir valores que no aparezcan en los datos con los que se entrena el sistema). El
objetivo del modelo con los datos de entrenamiento será ajustar la función entrada-salida de
manera que se minimice el error entre los valores predichos y los valores reales (para ello se
podrán usar distintas métricas de evaluación, como se verá más adelante).
Ilustración 4 Problema de regresión. Con una serie de rasgos (como datos sobre una vivienda) se usa una función
para predecir un valor numérico (como el precio)
55 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 5 En este ejemplo sencillo de dos variables se querría predecir con el predictor x el valor de la variable
predicha y. Los algoritmos de ML darían, en función de los datos de entrenamiento disponibles, una determinada
función y con ella para cualquier valor nuevo de x se tendría el valor correspondiente de y. Según el tipo de algoritmos
de ML se tendrán funciones de relación lineales o funciones de relación no lineales. En azul se tendrían los puntos
usados para el entrenamiento y que la función quiere intentar recoger de la mejor forma. 40
En el caso del problema de clasificación se intentará predecir la categoría (de entre las definidas
a priori, con lo que tienen que ser categorías usadas para el entrenamiento del sistema) a la que
pertenece un conjunto de rasgos concreto. Este sistema trabajará con unos datos asociados a
las categorías e intentará adecuar la función del modelo de manera que se minimice el número
de clases que se etiquetan mal.
Ilustración 6 Ejemplo de un problema de clasificación. Se dispone de muchos rasgos relevantes médicamente que
caracterizarían a un paciente y se quiere predecir con esa información si tendrá o no diabetes.
40 Fuente: https://statistics.laerd.com/spss-tutorials/linear-regression-using-spss-statistics.php
© Structuralia 56
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 7 En este ejemplo aparecen 2 predictores (x e y) y el modelo de ML, según si es lineal o no lineal, daría
una de las rectas rojas que aparecen. Según la combinación de valores de los predictores x e y de cualquier nuevo
valor que se observase se clasificaría dentro de una de las dos categorías que aparecen (azul o gris).41
De esta manera se tendría una ecuación que al evaluarse en nuevos valores de x daría lugar al
valor de y que se quiere predecir.
41 Fuente:https://technologyadvice.com/blog/information-technology/data-mining-techniques-non-analysts/
57 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La regresión lineal simple es el caso posiblemente más sencillo de modelo de ML. Este consiste
en querer predecir una variable de salida mediante el uso de un único predictor/regresor como
variable de entrada, de forma que se tendría la siguiente ecuación:
𝑦̃ 𝑖 = 𝛽0 + 𝛽1 × 𝑥𝑖
Donde 𝑦̃𝑖 corresponde a un valor concreto de la variable de salida 𝑦 que se quiere predecir, 𝑥𝑖
correspondería al predictor que se quiere utilizar para predecir la salida, y 𝛽0 y 𝛽1 corresponden
a constantes que son precisamente las se tendrían que ajustar en el modelo, en función de los
datos de entrenamiento disponibles, de forma que se pudiese predecir la salida de la mejor forma
posible.
Ilustración 8 Para distintos puntos azules de entrenamiento se ajustarían los parámetros de la ecuación lineal 𝛽0 y 𝛽1
© Structuralia 58
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La cuestión que surgiría en este punto es cómo ajustar los parámetros de la ecuación de la recta,
y para ello, como ya se adelantó previamente, se va a utilizar una métrica de error que se quiere
minimizar.
El error de la función será cuánto se desvíe la recta roja de los puntos azules, como indica la
imagen siguiente:
Ilustración 9 Se puede apreciar que el error se obtendrá en función de las diferencias entre los valores de y en los
puntos reales disponibles en los datos de entrenamiento (azul) y los puntos que dará la recta del modelo como
predicciones de y (rojo) para unos mismos valores de x (ya que están en la misma vertical) 42
De esta manera, una forma de cuantificar el error sería ver la diferencia que existe entre el vector
de valores reales de y frente al vector de valores predichos de y como muestra la ecuación
siguiente:
𝑒 = 𝑦̃ − 𝑦
42 Fuente: https://towardsdatascience.com/simple-linear-regression-2421076a5892
59 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Este error se podría expresar como el error mínimo cuadrado (RSS, root square error) de la
siguiente forma:
𝑛 𝑛
𝑏 ∗ = 𝑚𝑖𝑛(𝑅𝑆𝑆)
De manera que habría que se tendría una función lineal que se querría minimizar. Esto se podría
hacer simplemente mediante el cálculo de las derivadas parciales respecto a cada uno de los
parámetros e igualando las ecuaciones obtenidas a 0, de manera que se conseguiría un sistema
de ecuaciones de tantas ecuaciones como derivadas parciales (dos en este caso) el cual, al
resolverlo, daría los valores de los coeficientes que minimizan la función de error. Esto es lo que
se conoce como estimación puntual de los coeficientes.
𝜕𝑅𝑆𝑆
=0
𝜕𝛽0
𝜕𝑅𝑆𝑆
=0
𝜕𝛽1
Resolviendo este sistema de ecuaciones se obtendría el valor de cada uno de los dos parámetros
𝛽0 y 𝛽1 con los siguientes resultados:
© Structuralia 60
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 10 Existen infinitas rectas que potencialmente podrían relacionar a la variable de entrada con la de salida,
pero interesa conocer aquella que minimice el error anterior respecto a los datos disponibles.
Esta forma de ajustar los parámetros es una solución analítica con la que se parte de esas
ecuaciones para obtener el valor exacto de los parámetros que da el valor mínimo. Esta no es la
única forma de calcularlo; para problemas más complejos, en los que por ejemplo el número de
parámetros sea muy elevados y por lo tanto el sistema de ecuaciones sea muy extenso, es más
eficiente buscar soluciones aproximadas mediante métodos numéricos o métodos de simulación,
algunos de los cuales se mencionarán más adelante en el curso.
La regresión lineal múltiple es una generalización del caso anterior en el que se puede utilizar
cualquier número de variables de entrada X para obtener una predicción del valor y.
61 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Por lo demás el desarrollo matemático y obtención de los mismos es una generalización directa
del caso anterior y los pasos que habría que seguir para obtenerlos son totalmente análogos
(salvo por el hecho de que se tendrá un sistema de ecuaciones más grande para resolver).
𝑦̃ 𝑖 = 𝛽0 + 𝛽1 × 𝑥1𝑖 + 𝛽2 × 𝑥2𝑖
43 Fuente: https://www.mathworks.com/help/stats/regress.html
© Structuralia 62
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Teniéndose así un sistema de 3 ecuaciones con 3 incógnitas que se resolvería evaluándolo sobre
todos los puntos de los datos de entrada disponibles.
De forma genérica, la obtención de los coeficientes óptimos para el problema de regresión lineal
múltiple usando la solución analítica sería:
𝑦̃ = 𝛽𝑋
𝛽0 𝑥01 = 1 ⋯ 𝑥0𝑛 = 1
𝛽
Con 𝛽 = ( … ) y 𝑋 = ( ⋮
1 ⋱ ⋮ ) siendo cada fila de X una fila de los datos
𝛽𝑛 𝑥𝑛0 ⋯ 𝑥𝑛𝑛
𝑛
1 1
𝐽(𝛽) = 𝑅𝑆𝑆 = ∑(𝑦̃𝑖 − 𝑦𝑖 )2 = (𝑋𝛽 − 𝑦)𝑇 (𝑋𝛽 − 𝑦)
2𝑛 2𝑛
𝑖
44Se divide entre 1/2n para que las dos expresiones sean equivalentes; ese término de por sí, al ser una
constante, no afecta como tal al proceso de optimización.
63 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
𝛿𝐽(𝛽)
= 2𝑋 𝑇 𝑋𝛽 − 2𝑋 𝑇 𝑦 = 0 → 𝑋 𝑇 𝑋𝛽 = 𝑋 𝑇 𝑦
𝛿𝛽
Si la matriz X es invertible:
𝛽 = (𝑋 𝑇 𝑋)−1 𝑋 𝑇 𝑦
Teniéndose así la expresión cerrada para los coeficientes del modelo de regresión lineal
obtenidos con el cálculo analítico.
En las ecuaciones de las rectas o planos anteriores aparecen, por un lado, los coeficientes que
multiplican a los predictores y que representan cuánto variará la variable predicha por cada
cambio unitario en ese predictor. Por ejemplo, si en la ecuación de regresión simple x representa
el tamaño en m2 de viviendas e y el precio de las mismas en euros el coeficiente b1 cuantificaría
como afecta el incremento/decremento de cada m2 al precio de la vivienda. Por ejemplo, si la
ecuación fuese:
𝑦̃ 𝑖 = 2000 × 𝑥𝑖
© Structuralia 64
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La interpretación para el caso multivariable es ligeramente más compleja pero sigue siendo
sencilla; asumiendo que todas las variables salvo xin permanecen constantes, bn representa
cuánto variará la salida por cada unidad que aumente/disminuya xin (es importante remarcar que
para decir esto, efectivamente, el resto de variables debe permanecer sin cambio para poder
hacer esta reflexión de influencias asiladas de una sola de las variables). Es en estos casos
cuando los coeficientes se pueden ver como pendientes de la recta que relaciona la salida con
una de las variables.
El término independiente b0, por otro lado, tiene más difícil interpretación, pues básicamente
indica un offset cuando tiene un valor distinto de 0. En esos casos se denomina intercept y sirve,
principalmente, para ajustar mejor un modelo y recoger sesgos o influencias no consideradas
con los parámetros introducidos en el modelo pero que podrían estar teniendo relevancia en el
mismo.
La siguiente cuestión que surgiría sería cómo saber qué coeficientes influyen realmente en la
predicción de la salida, cuales puede que no sean tan relevantes, cuales influyen más… Esto se
puede comprobar con un parámetro denominado p-valor que representa el resultado de un
estudio estadístico sobre los datos donde se quiere responder a la pregunta de si un coeficiente
determinado es o no influyente en el valor de la salida (esto se realiza con una técnica
denominada contraste de hipótesis46).
Este p-valor, que se puede obtener automáticamente con distintas herramientas de software,
aparece con un valor concreto para cada coeficiente y representa lo estadísticamente
significativos que son cada uno de dichos coeficientes. Se suele definir como valor de
comparación α un valor de 0.05. De esta forma, cuando un p-valor sea superior al valor definido
de α se considerará que ese parámetro no es significativo, mientras que si es inferior no se puede
descartar dicho parámetro de la función de regresión ya que sí es influyente.
65 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 12 En este ejemplo se puede observar como la variable 'East' tiene un p-valor > 0.05, de manera que se
debería descartar del modelo de regresión ya que no es una variable influyente para el valor de salida. 47
Esto es así ya que en el contraste de hipótesis se definen dos alternativas, una “hipótesis nula”
(H0) y una “hipótesis alternativa” (H1). Para este caso H0 correspondería a decir “la variable no
influye en la salida”; de esta forma, cuando p-valor < 0.05 se podría decir que esta aseveración
es falsa y que, por ello, la variable si influye en la salida. De forma contraria, si p-valor >0.05 no
se puede decir que H0 sea falsa y por lo tanto es posible que efectivamente esa variable no
influya en la salida.
Un apunte importante a considerar ahora es que los modelos de regresión lineal tienen una serie
de presupuestos que se deben cumplir para poder justificar matemáticamente las conclusiones
del modelo. Estos presupuestos son por un lado presupuestos en relación a las variables del
modelo y por otro lado son presupuestos acerca de los errores del modelo, también conocidos
como residuos.
▪ Relación lineal: Uno de los presupuestos principales es que la variable de salida y las
variables de entrada guardan una relación lineal, de manera que dicha relación se podría
capturar con las ecuaciones antes vistas.
47 Fuente: http://scaryscientist.blogspot.com/2015/06/how-to-interpret-regression-analysis.html
© Structuralia 66
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 13 Un ejemplo claro en el que se puede apreciar visualmente que la relación entre los dos ejes es no
lineal, con lo que no se podría representar con los modelos lineales vistos. No se cumpliría el presupuesto de
relación lineal 48
Una forma de poder comprobar esto, además de ver visualmente los datos (Como en la gráfica
anterior) y reflexionar sobre si es o no probable que haya relación lineal, es analizar cómo se
distribuyen los residuos del modelo. En caso de que estos no se distribuyan de forma aleatoria
sino que sigan un patrón concreto indicará que el presupuesto de que los datos se relacionan de
forma lineal no es válido.
48 Fuente: http://www.statisticssolutions.com/assumptions-of-linear-regression/
67 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 14 Ejemplo en el que se puede apreciar como los residuos tienen una relación lineal y por ello los datos
originales no tendrían una relación lineal, sino que habría no linealidades.49
Ilustración 15 A diferencia del caso anterior, en esta gráfica de los errores si se puede ver que aparentemente no
guardan ningún tipo de relación.50
49 Fuente: https://medium.com/@dhwajraj/learning-python-regression-analysis-part-9-tests-and-validity-
for-regression-models-78dcd5cde3a1
50 Fuente: https://zhiyzuo.github.io/Linear-Regression-Diagnostic-in-Python/
© Structuralia 68
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Soluciones:
Para estos casos en los que los datos no guardan una relación lineal se puede hacer lo
siguiente:
1. Transformar los datos de entrada con algún método de transformación estadística gracias
al cual la relación entre ellos pase a ser lineal (esto se verá en el apartado de regresión no
lineal).
2. Usar otro algoritmo distinto.
Ilustración 16 En la imagen de la gráfica en rojo se puede apreciar cómo se van repitiendo los patrones con una
determinada frecuencia.51
51 Fuente:
https://dziganto.github.io/data%20science/linear%20regression/machine%20learning/python/Linear-
Regression-101-Assumptions-and-Evaluation/
69 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
o Independientes hace referencia a que cada punto de los datos sea un evento
independiente de los demás y que por lo tanto no haya una conexión entre ellos.
Para estos casos se recomienda usar otros algoritmos, como por ejemplo las series
temporales, que se verán en la última parte del curso.
Existen distintos test de contraste de hipótesis, como Durbin-Watson, que plantean una
H0 que define que los datos no tienen autocorrelación, de manera que si el p-valor es
menor que el umbral definido esta hipótesis se rechazaría se detectaría una
autocorrelación en los datos.
© Structuralia 70
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 17 Ambas distribuciones de residuos tienen aspectos de distribuciones aleatorias pero la de la derecha es
heterocedastica ya que se puede ver como la varianza de los mismos aumenta progresivamente. En cambio, en la
de la derecha, salvo algún valor puntual en general se mantiene homocedástica. 52
Soluciones:
1. Una posible solución será transformar los datos con algún método de transformación
estadística (p.e. transformación logarítmica) y ver si con eso se estabiliza la varianza.
𝑦 − 𝑦̃ = 𝑒
𝑦𝑖 = 𝑏0 + 𝑏1 × 𝑥𝑖 + 𝑒
𝑒~𝑁(0, 𝜎 2 )
52 Fuente: https://stats.stackexchange.com/questions/52089/what-does-having-constant-variance-in-a-
linear-regression-model-mean
71 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Esto se puede comprobar representando con un histograma los valores de error y viendo
si su distribución tiene aspecto normal o usando otros gráficos como los Q-Q Plots en los
que se ve cuánto se alejan los datos de una referencia de normalidad. De nuevo, existen
distintos contrastes de hipótesis, como Anderson-Darling, para evaluar de forma genérica
la normalidad de un conjunto de datos.
Ilustración 18 Ejemplo en el que se ve como un histograma ayuda a ver si la distribución de los errores es o no
normal.53
53 Fuente: https://data.library.virginia.edu/normality-assumption/
54 Fuente: https://zhiyzuo.github.io/Linear-Regression-Diagnostic-in-Python/
© Structuralia 72
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 20 Lo que se busca comprobar es que se pueda asumir que cada uno de los errores pueda provenir de
una distribución normal aleatoria.55
▪ Independencia de los predictores: Uno de los aspectos más críticos a tener en cuenta
en los modelos de regresión es que estos asumen que las variables usadas como
variables de entrada son independientes entre sí. Es decir, que si se está prediciendo el
precio de una vivienda usando variables de entrada como su tamaño y la ubicación de la
misma, los datos de las variables usadas deberán no estar correlacionados (es decir, en
este caso, que el tamaño de la vivienda no tenga nada que ver con dónde está esta). En
caso de que exista correlación entre las variables se tendrá que eliminar una de ellas del
conjunto de variables usadas pues la información que puede aportar a las predicciones
del modelo ya están recogidas en la otra variable. Si no se eliminasen las variables
correlacionadas (es decir, entre las que se da un fenómeno denominado
multicolinealidad) no se podrá garantizar la solución de mínimos cuadrados mencionada
al principio con la cual se obtienen los valores de los coeficientes, de manera que no se
estarán estimando los coeficientes de manera correcta. Así, el mayor peligro en este caso
es que se estaría calculando mal la influencia de cada una de las variables particulares
dentro de la predicción general por esa mala estimación de coeficientes.
55 Fuente: http://reliawiki.org/index.php/Simple_Linear_Regression_Analysis
73 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Cabe decir que en general siempre va a existir algo de correlación entre las variables (de
hecho, intuitivamente en el ejemplo anterior se puede ver que lo hay), pero lo que se
acaba de decir se aplicará para los casos en que la correlación entre ellas sea muy fuerte.
La forma de comprobar esto es calculando una matriz de correlaciones en la que las filas
representan unas variables y las columnas otras y o bien comprobar que pares de
columna-fila son cercanos a 1 (correlación perfecta) o bien calcular los autovalores de la
matriz de correlación y ver si alguno de ellos es cercano a 0 (lo que indica también
multicolinealidad).
Ilustración 21 Ejemplo de matriz de correlaciones. En los casos en los que se tienen valores cercanos a 1/-1 indica
fuerte correlación entre esas variables. Los valores a 1 de la diagonal corresponden a las autocorrelaciones de las
variables consigo mismas.56
Es importante remarcar que el que exista multicolinealidad en un modelo no hace que sus
predicciones en general sean peor (ya que no afecta a que el valor final que se predice sea mejor
o peor) sino que afecta a la interpretación de los coeficientes que aparecen en el problema y al
aporte individual de cada uno de ellos a la solución (pero no al aporte global y conjunto de todos
ellos; unos puede que predijesen peor pero esto se compensase con otros predictores).
56 Fuente: https://stackoverflow.com/questions/30681832/how-to-create-a-symmetry-correlation-matrix-
easier-in-r
© Structuralia 74
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Los valores atípicos (o outliers) son valores puntuales que aparecen como claramente
diferentes del resto de valores disponibles. Estos valores van a afectar y desvirtuar el
cálculo del error cuadrático medio y por lo tanto el cálculo de los parámetros de la
ecuación. Por este motivo se deben tener en cuenta bien por su detección con un
análisis exploratorio o bien con su detección con métodos estadísticos como los
diagramas Box-Plot o con técnicas más complejas de detección de anomalías.
Ilustración 22 Ejemplo donde se ve la existencia de dos claros valores atípicos frente al resto.
75 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Esto como tal no es un presupuesto para la regresión lineal ya que, de hecho, se puede
trabajar con anomalías presentes, lo único es que afectará negativamente al resultado
obtenido.
Tratamiento:
Este tipo de datos son un caso particular de valores atípicos que se caracterizan por
carecer de otros puntos u observaciones cercanas, de manera que al intentar ajustar un
modelo con esos datos la recta intentará pasar cerca de ellos y afectará enormemente
al resultado obtenido.
Ilustración 23 Ejemplo de datos con high-leverage. En rojo aparece una ecuación ajustada con ellos y en negro sin
ellos. Se puede observar que difieren sensiblemente.57
57 Fuente:
https://dziganto.github.io/data%20science/linear%20regression/machine%20learning/python/Linear-
Regression-101-Assumptions-and-Evaluation/
© Structuralia 76
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Estos puntos pueden afectar a que se cumplan o no los presupuestos principales de la regresión
lineal. Concretamente pueden hacer que los residuos dejen de estar distribuidos de forma normal
o que tengan una distribución aleatoria. Por este motivo es algo que se debe explorar con
precaución.
Ilustración 24 Para los datos anteriores se puede observar como en el caso de mantener los puntos high-leverage se
tiene una distribución de residuos con patrones, mientras que en el caso de no tenerlos desaparece dicha tendencia.
Tratamiento:
58 Fuente: https://en.wikipedia.org/wiki/Huber_loss
77 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Los modelos mostrados previamente sirven para problemas de regresión ya que al evaluar los
valores de un conjunto concreto de variables de entrada sobre la recta de regresión se obtiene
un valor numérico concreto asociado a la salida.
¿Se podrían utilizar técnicas similares a estos modelos para problemas de clasificación? La
respuesta es sí, y esto se consigue con un tipo de regresión concreta denominada regresión
logística.
El concepto detrás de este modelo pasa por intentar predecir no un valor numérico como hacen
los métodos anteriores, sino predecir la probabilidad de que el conjunto de datos de las variables
de entrada sea de una determinada clase de entre dos clases posibles (clasificación binaria).
Para ello se usa como referencia la propia ecuación de la regresión lineal y se transforma su
expresión de manera que la salida sea un valor que cumpla los axiomas de Kolmogrov de
probabilidad; principalmente, que sea un valor entre 0 y 1.
Imaginando el caso de la ecuación de regresión lineal simple (aunque vale también para la
múltiple), partiendo de ella:
𝑦̃𝑖 = 𝑏0 + 𝑏1 × 𝑥𝑖
Se puede utilizar la función logística para expresar ese resultado como una probabilidad, ya que
dicha función da como resultado siempre un valor acotado entre un rango de valores de 0 y 1:
© Structuralia 78
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
79 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
𝑝(𝑋)
log ( ) = 𝑏0 + 𝑏1 × 𝑋
1 − 𝑝(𝑋)
Donde el primer término se denomina logit, de manera que se facilita el cuantificar cómo
evoluciona el sistema (en referencia a ese logit) en función de cómo varía cada dato de X.
Con el método MLE se busca poder estimar los parámetros del modelo dados los puntos
concretos de datos conocidos viendo que parámetros maximizan una función conocida como
función de verosimilitud60.
59 Fuente: https://www.saedsayad.com/logistic_regression.htm
60 Fuente: https://www.stat.rutgers.edu/home/pingli/papers/Logit.pdf
© Structuralia 80
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
De forma intuitiva, esta función busca maximizar la probabilidad de obtener las clases de las
variables de salida del conjunto de datos de entrenamiento dados unos coeficientes concretos
de la ecuación y dados los datos conocidos de las variables de entrada.
Esta función representa la probabilidad de, con los datos de entrada disponibles y unos
parámetros genéricos, generar las distintas clases de salida61.
Eso sí, todo ello asumiendo que los datos son i.i.d. de forma que las probabilidades de tener
todas las clases con los datos disponibles corresponden al producto de las probabilidades
individuales de tener cada una de ellas.
Esto equivale a:
61 La función de verosimilitud es, por lo tanto, una función que representa la probabilidad de, dadas unas
variables y parámetros concretos, generar una salida concreta. La función de probabilidad cambiará en
función del problema dado al que se esté aplicando la función de verosimilitud, siendo en este caso la
función de probabilidad obtenida desde la función logística usada en esta regresión. Por lo demás, se ha
definido, por un camino distinto, una función que relaciona entradas-salidas-parámetros y que habría que
optimizar para, en este caso, maximizar la probabilidad en cuestión, pero ya conceptualmente es análogo
a cómo se resolvió para mínimos cuadrados en lar regresión lineal. De hecho, los coeficientes en el caso
de regresión lineal también se podrían haber obtenido por MLE; En este caso de la regresión logística, eso
sí, es más fácil por MLE que RSS.
81 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con:
Como al final con lo que se está trabajando es con un problema de optimización donde se quiere
encontrar el valor de las variables que maximice la verosimilitud de que las clases se generen
con esas variables y parámetros de entrada, en lugar de usar la función de verosimilitud como
tal se puede utilizar el logaritmo de dicha función debido a que como el logaritmo es una función
creciente no cambia la naturaleza del problema a maximizar. En este caso, las ecuaciones
anteriores se podrían expresar de la siguiente forma:
© Structuralia 82
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con:
83 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Como ejemplo, para el caso sencillo de una única variable, la resolución sería:
Esta sería la ecuación de partida para optimizar, de la que se podrían obtener sus primeras y
segundas derivadas de la siguiente manera:
Estas ecuaciones no son resolubles de forma analítica, y por lo tanto se resolverían de forma
numérica utilizando métodos cono el Método de Newton o un método de Descenso de
Gradientes.
De forma general, los parámetros 𝛽̃ obtenidos por la optimización del problema de mínimos
cuadrados se relacionan con los valores de entrada y salida de la siguiente forma (representado
con expresiones matriciales):
𝛽̃ = (𝑋 𝑡 𝑋)−1 𝑋 𝑡 𝑌
© Structuralia 84
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Cada vez que se evalúe la ecuación en nuevos puntos se obtendrá un valor de la curva de
regresión que estará entre 0 y 1. Dicho valor es una probabilidad que habría que asociar a una
de las dos clases concretas. Una forma de hacerlo es considerar un valor umbral como 0.5 de
forma que cualquier probabilidad por encima de 0.5 se asocie como perteneciente a la categoría
1, mientras que si son inferiores se asocien a la categoría 0.
Este tipo de regresión es una extensión de la regresión anterior con la que se pueden considerar
problemas multiclase. Para ello, se codifican cada una de las distintas categorías de las M
variables de salida en M - 1 vectores de longitud M en los que todos los valores son 0 salvo en
todo caso uno de ellos para indicar la categoría asociada.
Con ello se define un modelo para estimar, ahora sí, los distintos valores binarios que se han
definido con esta transformación.
85 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
En numerosas ocasiones, como se ha ido comentando, puede que los datos se distribuyan de
forma no lineal y no sirva lo planteado anteriormente. Para estos casos se pueden aplicar dos
posibles soluciones, transformar los datos de manera que al hacerlo pasen a tener una relación
lineal, o aplicar una función de regresión polinómica que permita ajustar los datos a una función
no lineal (ya que ésta podrá ser cuadrática, cúbica…).
Transformación de datos:
Con ello:
© Structuralia 86
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
1
(𝑋, 𝑌) → (𝑋, )
𝑌
Con ello:
1 1
= 𝑎 + 𝑏 × 𝑋 → 𝑌 =
𝑌 𝑎 + 𝑏 × 𝑋
62 Fuente: https://people.revoledu.com/kardi/tutorial/Regression/nonlinear/NonLinearTransformation.htm
En esta referencia aparecen numerosas transformaciones más además de las mencionadas
87 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Los modelos que se ajustarían y con los que se predecirían serían los modelos
transformados (que son los modelos lineales). Cuando se reciban nuevos datos, se
transformarán los valores de X si fuese pertinente y se obtendrá una salida sobre la que
habrá que deshacer la transformación en caso de que la Y esté transformada en el
modelo.
Regresión polinómica:
La regresión polinomial sigue la estructura de ecuaciones ya vista solo que en ella ya aparecen
términos de orden 2 o superior:
Con estas ecuaciones se tiene una generalización sobre los modelos lineales con las que
potencialmente se podrán obtener siempre mejores ajustes a cambio de ser modelos más
complejos de ajustar numéricamente (órdenes mayores para las derivaciones, además de la
complejidad inherente al número elevado de parámetros).
Ilustración 29 Ejemplo de un conjunto de datos no lineal que es ajustado mediante la ecuación cuadrática que
aparece en la imagen.63
63 Fuente: https://onlinecourses.science.psu.edu/stat501/node/325/
© Structuralia 88
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Sobreajuste (overfitting)64
Un problema que se empieza a dar sobre todo con estos modelos más complejos (y que es un
peligro a tener en cuenta en todos los modelos supervisados, no sólo en estos) es el denominado
sobreajuste u overfitting. Puede darse el caso de que el modelo se llegue a ajustar
excesivamente bien a los datos de los que se dispone pero que, a cambio, pierda poder de
generalización y que por ello, cuando se predice sobre nuevos datos, las predicciones sean cada
vez peores.
Ilustración 30 Ejemplo ilustrativo de lo que se está exponiendo. En el primer modelo se ha usado una regresión lineal
para datos claramente no lineales, de manera que se tiene un modelo muy subajustado a los datos. Ahora bien, en
el modelo de la derecha, modelo polinomial de un orden muy elevado, se ha ajustado excesivamente a los datos
disponibles. La solución óptima es encontrar un equilibrio entre los dos extremos. 65
64 Fuente: https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-
lasso-regression/
65 Fuente: https://medium.com/greyatom/what-is-underfitting-and-overfitting-in-machine-learning-and-how-
to-deal-with-it-6803a989c76
89 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 32 El problema principal es que un modelo que esté subajustado dará datos con mucho sesgo y con
malas evaluaciones en lo que respecta a las métricas. Un modelo sobreajustado seguramente de métricas buenas
pero la varianza de los datos que dicho modelo estima será muy elevada. Lo ideal es que no haya mucha varianza
en los datos inferidos y que la precisión de los mismos sea elevada (y por lo tanto que el error sea bajo).
66 Fuente: https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-
lasso-regression/
© Structuralia 90
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La cuestión del overfitting se verá de forma mucho más detallada al final de este bloque, y aunque
existen numerosas formas de evitarlo, concretamente para el caso de las funciones de regresión
se pueden utilizar dos modificaciones sobre los modelos vistos, conocidas como regresión ridge
y regresión lasso.
Regesión ridge
Como se ha mencionado en el apartado anterior, la solución para mejorar un modelo que tiene
un sesgo/bias alto es simplemente añadir más variables para que el ajuste sea más fino. Ahora
bien, si se aumentan las variables de forma indefinida se acabará llegando a un punto en el que
el modelo acabe sobreajustado. Para evitar esto se trata en general de no usar modelos
excesivamente complejos pero, también, existen otras técnicas para evitar dicho sobreajuste
denominadas técnicas de regularización entre las que se encuentra la técnica de regularización
ridge o L2.
Las técnicas de regresión sirven de forma general para, una vez definido un sistema concreto
con una serie de parámetros, reducir la magnitud de influencia de los coeficientes de manera que
no ocurra, como puede pasar en determinadas ocasiones, que casi toda la influencia recaiga
sobre un grupo concreto de ellos.
91 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 33 Influencia de los coeficientes; se puede apreciar que algunos de ellos tienen significativamente más
influencia que otros en este ejemplo.67
67 Fuente: https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-
lasso-regression/
© Structuralia 92
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
93 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 34 Se puede apreciar como para un valor concreto de λ se reduce la influencia de los coeficientes. En
este tipo de regularización ninguno de los coeficientes, por mucho que se reduzcan, llega a ser cero, por lo que el
número de parámetros del modelo siempre se mantendrá constante.
© Structuralia 94
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Regresión lasso
Otra forma de llevar a cabo una regularización es con la denominada regularización lasso o
regularización L1.
A diferencia del caso anterior que intenta homogeneizar la influencia de los distintos coeficientes,
el ajuste lasso reduce a cero la influencia de los coeficientes que no considera significativos en
aras a dejar sólo los que se detectan como relevantes para tener un modelo que generalice de
forma correcta. De esta forma lo que diferencia este método del ridge es que lleva a cabo algo
que se conoce como selección de rasgos (feature selection) con lo que se escogen los
parámetros más relevantes para el modelo en aras a simplificarlo lo más posible.
La expresión de la función de coste con esta regularización, que usa la norma L1, es la siguiente:
95 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 35 Se puede comprobar como de entre todas las variables se acaban escogiendo sólo 4 como relevantes.
Regresión ElasticNet
El método de regularización d ElasticNet es un método híbrido que intenta combinar las ventajas
de los dos métodos anteriores, usando la regularización L1 y la L2.
© Structuralia 96
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
ElasticNet intenta generalizar mejor los modelos frente al caso de Lasso analizando los conjuntos
de variables por subgrupos. Si alguna de las variables se detecta como un buen predictor de la
variable de salida, a diferencia de lasso que incluiría sólo dicha variable, ElasticNet incluye a todo
el subgrupo. Esto es interesante porque en ocasiones eliminar determinadas variables podría
llevar a tener un modelo menos efectivo.
Ilustración 36 Combinando las dos ventajas anteriores se consigue atenuar la influencia de los coeficientes al tiempo
que sí que se llegan a eliminar las variables no relevantes para el modelo predictivo (a diferencia de lo que ocurría
con la regresión ridge).
97 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Tipos de regularización
Las dos regularizaciones que se han visto, L1 y L2, llevan a soluciones distintas debido a la
naturaleza propia que tienen.
Para ver esto de forma sencilla, si se coge el caso de dos variables, la expresión anterior queda
para p=1:
Según el valor que tenga p la representación gráfica para el caso de dos variables sería:
Las regularizaciones L1 usan el parámetro p=1 y la L2 p=2 (son, de hecho, las regularizaciones
principales que se usan).
© Structuralia 98
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Si se quisiese ver el problema de ajuste de dos variables para las ecuaciones en el caso ridge y
en el caso lasso se tendría lo siguiente para un caso ejemplo:
Ilustración 37 En rojo aparece el espacio de soluciones de las variables y en azul el espacio de soluciones para los
términos de regularización L1 (izquierda) y L2 (derecha).
99 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Para no tener que esperar a disponer de datos nuevos, lo que se suele hacer es en vez de
entrenar el modelo con todos los datos disponibles, reservar un porcentaje de los mismos para
hacer una evaluación al final y ver la eficiencia del modelo de ML.
▪ Train: Este es el conjunto de datos con los que se entrena el modelo. Suele ser el más grande de
los tres (para que el modelo se pueda ajustar correctamente) e incluirá aproximadamente un 75-
80% de todos los datos disponibles.
▪ Val: No siempre es necesario, pero muchas veces existen parámetros internos del modelo que se
deben preseleccionar (conocidos como hiperparámetros) y la forma de elegirlos es comprobar
cuáles dan mejores resultados sobre este segundo conjunto de datos. Suele ser de entre un 5-
15% del tamaño total.
▪ Test: Este conjunto de datos es el conjunto de evaluación final una vez se haya elegido y
especificado definitivamente el modelo (es decir, cuando ya no se van a hacer más cambios en
él). Sirve para dar una evaluación final del mismo y poder imaginar cuán buena será su
generalización según el error que se tenga. Su tamaño suele ser de un 5-15% del conjunto total.
3.7 Ejemplo 1
En este primer ejemplo se dispone de un conjunto de datos de los distintos salarios de empleados
de una empresa en función de los años de experiencia que tengan (independientemente del
perfil). Se podría buscar por lo tanto construir un modelo de regresión simple en el que con la
variable de entrada de años de experiencia (YearsExperience) se pueda intentar predecir el
salario asociado que tendrá (Salary).
# Importar librerias
import numpy as np
© Structuralia 100
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
import pandas as pd
#############################################################################
##
#############################################################################
# Cargar dataset
df = pd.read_csv('Salary_Data.csv')
101 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Se puede apreciar así como evolucionan los datos de los que se dispone.
𝑦 = 𝑏1 × 𝑥
Eso sí, antes de construir el modelo, se separan los datos en dos subconjuntos, uno de
entrenamiento para ajustar el modelo y uno de test para poder hacer evaluaciones
posteriormente (para este sencillo problema inicial no se usará el conjunto de validación).
X = df.iloc[:, :-1].values
y = df.iloc[:, 1].values
# Train/Test Split
import statsmodels.api as sm
Una vez construido el modelo se procede a comprobar con el mismo si se cumplen las hipótesis
mencionadas previamente para la regresión lineal.
model.summary()
© Structuralia 102
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
En este resumen se puede ver como aparece información genérica del modelo así como
información específica sobre los coeficientes del mismo (en este caso, como solo hay un
coeficiente por ser una regresión lineal simple solo aparece la fila de x1).
Comenzando por el análisis de los parámetros del modelo se puede ver como aparece el valor
del coeficiente para el modelo de regresión (coef) así como el resultado del p-valor indicando si
este coeficiente es o no significativo. Cuando P >|t| sea menor o igual que el alpha de contraste
(habitualmente un 0.05) se rechaza la H0 que dice que esa variable no tiene relación con la
variable de salida y por ello esa variable es relevante en el modelo. Sin embargo, cuando esta
sea mayor que el alpha de contraste no se podrá asegurar que esa variable sea relevante. En
este caso, como aparece un 0.000 (indicando que es prácticamente 0) se afirma que sí es un
parámetro relevante.
A nivel del modelo en general se presentan varias métricas, como AIC, BIC… que indican la
efectividad del modelo. Estas métricas se podrán usar para comparar modelos y ver cuáles dan
mejores resultados. En concreto, las métricas de AIC y BIC son especialmente interesantes ya
que penalizan a los modelos complejos que usan muchas variables, de manera que intentan
fomentar la mayor simplicidad de los mismos.
103 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Linealidad
Harvey-Colley
#### Linealidad
# Comprobacion de linealidad
sms.linear_harvey_collier(model)
Como el valor obtenido es p-valor = 0.272 > 0.05 no se rechaza H0 que dice que hay
linealidad.
# Obtencion residuos
residuos = model.resid
# Histogramas
© Structuralia 104
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Q-Q Plot
import scipy as sp
fig, ax = plt.subplots(figsize=(6,2.5))
print(r**2)
105 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El QQ Plot compara los cuantiles de los datos de los que se dispone con los cuantiles de
referencia de una distribución concreta, en este caso, de una distribución normal. La
métrica usada es el coeficiente de correlación, que es el valor de r2. Cuanto más
cercano sea a 1 más se parecerán las distribuciones. En este caso el valor que se obtiene
es de 0.957, muy cercano a 1, con lo que se puede decir que los residuos tienen una
distribución normal.
# Test D'Agostino
normaltest(residuos)
Se obtiene un p-valor de 0.808, muy superior a 0.05 con lo que no se rechaza H0 que
dice que los datos son normales.
▪ Homocedasticidad:
# Goldfeld-Quandt test
lzip(name, test)
Con este test se obtiene un p-valor=0.78 >> 0.05 por lo que no se puede rechazar H0
que dice que hay homocedasticidad.
© Structuralia 106
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
fig, ax = plt.subplots(figsize=(6,2.5))
_ = ax.scatter(X_train, residuos)
▪ Autocorrelación residuos:
print(durbin_watson(residuos))
Como el valor obtenido es 2.683 (el test dará valores entre 0 y 4), cercano a 2, se puede
concluir que no hay autocorrelación en los errores.
107 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Leverage:
Se puede comprobar también si hay algún punto palanca que influya mucho en la
generalización del modelo. Esto se hace de la siguiente forma:
test_class = OLSInfluence(model)
test_class.dfbetas[:5,:]
DFBetas da la diferencia en cada parámetro estimado con y sin los puntos de influencia. Hay
un DFBEta por cada datapoint; así, con n observaciones y k variables hay n*k DFBEtas
Se puede utilizar 2 o 2/sqrt(n) como umbral para ver que DFBetas son significativos y por lo
tanto tienen mucha influencia
fig, ax = plt.subplots(figsize=(8,6))
influence_plot(model)
© Structuralia 108
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Hay que tener cuidado con las observaciones que tengan un leverage alto y unos residuos
altos ya que son las que más van a estar influyendo en el modelo.
Con todo ello se procederían a crear las predicciones del modelo y a visualizar los resultados
obtenidos:
y_pred = model.predict(X_test)
109 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
La evaluación del modelo con estos datos de test se puede hacer así:
# Metricas de evaluacion
r2 = r2_score(y_test, y_pred)
R2 remarca la explicabilidad del modelo. Cuanto más cercano sea a 1 el modelo consigue
explicar/expresar mejor los datos. Valor entre 0 y 1. 0.8111 es buen resultado -> 81.1% explicado
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()
© Structuralia 110
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
plt.scatter(X_test, y_test, color = 'red') #Pinto ahora los puntos de test sobre
el mismo modelo que he construido para validarlo
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()
111 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Se podría intentar mejorar el modelo utilizando una constante junto con el predictor y ajustando
por lo tanto la ecuación:
𝑦 = 𝑏1 × 𝑥
▪ Resumen:
© Structuralia 112
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Se comprueba así que la constante es significativa para el modelo ya que su p-valor no supera
el 0.005. Además, las métricas de AIC y BIC obtenidas son menores que en el caso sin la
constante, con lo que el modelo mejora el caso anterior.
▪ Linealidad:
Con el test de Harvey-Colley se obtiene que pvalue=0.8325, con lo que la relación de linealidad
con la salida se robustece al haber introducido la constante.
▪ Normalidad residuos:
113 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Homocedsticidad residuos:
Con el test Goldfeld-Quandt se obtiene un p-valor de 0.7461, con lo que los residuos son
homocedásticos. Además se puede apreciar en la visualización de los residuos frente a los
valores del predictor como éstos ya sí que se distribuyen claramente de forma aleatoria y no
hay relación entre ellos.
▪ Autocorrelación residuos:
El test de Durbin-Watson da de resultado 2.683, con lo que sigue sin existir autocorrelación
en los residuos obtenidos.
▪ Leverage:
© Structuralia 114
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con ello se ve que ha desaparecido el punto palanca que existía en el caso anterior,
generalizándose mejor el modelo.
115 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
3.8 Ejemplo 2
Para este caso se va a plantear un ejemplo de regresión múltiple utilizando el dataset de Boston
Housing68.
68 Fuente: https://www.kaggle.com/c/boston-housing
© Structuralia 116
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
import numpy as np
import pandas as pd
import statsmodels.api as sm
print(data.DESCR)
df = pd.DataFrame(data.data, columns=data.feature_names)
▪ y = MEDV: Valor medio de casas ocupadas por sus propietarios en 1000 dólares.
▪ X4 = CHAS: variable binaria (=1 si las vías cruzan el río y 0 en otro caso).
117 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Variable de salida
y = target["MEDV"]
#X = df[["RM", "LSTAT"]]
# Train/Test
© Structuralia 118
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Como ya se ha indicado, las variables de entrada deben ser independientes entre sí, y por eso
es importante ver la correlación entre ellas:
correlation_matrix = df.corr().round(2)
sns.heatmap(data=correlation_matrix, annot=True)
Se puede ver así como variables como NOX y DIS tienen una alta correlación (0.77) entre ellas,
por lo que no sería necesario que ambas aparezcan en el modelo.
119 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
predictions = model.predict(X)
model.summary()
© Structuralia 120
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Se puede observar como el p-valor de las variables INDUS, NOX y AGE son claramente mayores
que 0.05 por lo que no se rechaza H0 para ellas y por ello probablemente no influyan en la
variable de salida. Por este motivo se descartan del modelo y se construye con el resto de
variables:
X = df.copy()
# Train/Test
predictions = model.predict(X)
model.summary()
121 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Aparentemente ya todas las variables serían significativas. Si se quisiesen ahora obtener las
predicciones (a falta de comprobar antes las hipótesis de regresión lineal) se haría lo siguiente:
# predicciones de la salida
y_pred = model.predict(X_test)
# Metricas de evaluacion
r2 = r2_score(y_test, y_pred)
© Structuralia 122
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Se obtendría así un modelo que como tal no da una generalización demasiado buena. Habría
que intentar investigar más el efecto de las variables en el modelo para evaluar cuales son las
realmente relevantes.
# Feature scaling
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
sc_y = StandardScaler()
# Modelo
regressor = LinearRegression()
regressor.fit(X_train, y_train)
# Prediccion de valores
y_pred = regressor.predict(X_test)
y_pred = sc_y.inverse_transform(y_pred)
y_test = y_test.values.reshape(-1, 1)
123 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Metricas de evaluacion
r2 = r2_score(y_test, y_pred)
Muchos algoritmos usan medidas de distancias (p.e. Euclídea) para construir las relaciones entre
las variables utilizadas. Es por esto que el que sus valores estén en diferentes escalas es
problemático ya que una variable como por precios que pudiese tener valores del tipo 100000,
120000… influiría más en el modelo que otra del tipo edad con valores del tipo 15,27,32…
Por este motivo se recomienda utilizar funciones que escalen las variables a un mismo rango de
valores para que así se evite tener el problema antes descrito.
Para algoritmos como la regresión lineal esto no sería como tal necesario ya que los propios
coeficientes de la regresión corregirán la posible influencia extra por la escala de valores, pero
igualmente se recomienda aplicarlo para casos en los que los conjuntos de datos sean muy
grandes para ahorrar coste computacional y ganar rapidez en el entrenamiento de los modelos
(por hacerse con valores más reducidos).
En este caso se plantea un ejemplo usando regresión logística sobre un conjunto datos de
compras de clientes donde se tienen distintos rasgos de cada uno de los clientes y se quiere
poder predecir si comprarán o no un producto en particular en función de dicha información sobre
ellos69.
69 Fuente: https://www.kaggle.com/rakeshrau/social-network-ads
© Structuralia 124
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con ello se plantea un modelo de regresión logística que permita clasificar a los clientes en esas
dos categorías (0=no ha comprado, 1=sí ha comprado) en función de los datos de su perfil. A
modo de ejemplo se va a realizar este ejercicio usando sólo la Edad (Age) y el Salario
(EstimatedSalary) para poder también visualizar los datos.
# Librerías
import numpy as np
import pandas as pd
# Dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
y = dataset.iloc[:, 4].values
# Train/Test set
125 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Feature scaling
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
classifier = LogisticRegression(random_state = 0)
classifier.fit(X_train, y_train)
# Predicciones
y_pred = classifier.predict(X_test)
# Matriz de confusion
cm = confusion_matrix(y_test, y_pred)
Con la matriz de confusión se puede evaluar el rendimiento del modelo. Sin entrar ahora en
detalles sobre ella (se cubrirá en un punto más adelante en el temario) basta ahora con saber
que los puntos de la diagonal de la matriz son los puntos que el modelo ha clasificado
correctamente, mientras que los otros son los puntos que no se han clasificado bien. Se puede
apreciar como el modelo clasifica correctamente casi todos los casos.,
© Structuralia 126
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
127 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
4.1 Descripción
Los modelos de clasificación de Máquinas de Vectores Soporte (SVM por sus siglas en inglés,
Support Vector Machines) son modelos de clasificación con los que se intenta definir una frontera
de decisión para un problema binario no en función de todos los puntos (como se hacía en el
problema de regresión lineal) sino en concreto en función de unos puntos especialmente
relevantes a los que se denominará vectores soporte.
Hard-margin
La situación más simple sería usar un SVM para obtener la frontera de decisión de un problema
de clasificación que fuese linealmente separable. Es interesante partir de este caso ya que
permitirá entender los conceptos fundamentales de este algoritmo, que harán falta para
comprender más adelante las aplicaciones más complejas.
70 Fuente: https://en.m.wikipedia.org/wiki/Support_vector_machine
© Structuralia 128
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 51 Ejemplo de varias fronteras de decisión posibles. H1 es una mala frontera porque no clasifica bien los
puntos, pero ¿cuál escoger entre H2 y H3?
Se plantea elegir como frontera de decisión aquella que esté lo más lejos posible de los datos de
las dos clases. Interesa que no esté muy próxima a ninguno de los dos conjuntos en particular
para minimizar el número de datos que no se clasifiquen bien (si está muy cerca de alguno de
los grupos es más probable que haya datos mal clasificados, aunque sea por poco).
129 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 52 Visualización del hiperplano de separación óptimo en función de los vectores soporte. Este hiperplano
maximiza la distancia m entre los planos asociados a los vectores soporte obteniendo el valor de m en función de los
coeficientes del plano gracias a la fórmula de la distancia de un punto a un plano calculando esta respecto al origen
de coordenadas. La distancia m es la suma de la distancia del OO al plano wx – b = 1 más la distancia al plano wx-b
= -1, obteniéndose con ello el valor que aparece en la imagen.
𝟐
Así, se define un plano entre los puntos de manera que se maximice la distancia ||𝒘|| del mismo
a los puntos de ambas clases que estén más cercanos a él (en el dibujo superior, los puntos que
caen sobre las líneas discontinuas). Estos puntos son los denominados vectores soporte y en
realidad serán los únicos puntos que necesitará el algoritmo para entrenarse y obtener la frontera
de decisión.
Así, para un conjunto de datos {𝑥1 , 𝑥2 , … , 𝑥𝑛 } y unas etiquetas de clases 𝑦𝑖 ∈ {1, −1} para dichos
valores de x, se tendría:
▪ 𝑤
⃗⃗ 𝑥
⃗⃗⃗𝑖 − 𝑏 ≥ 1𝑠𝑖𝑦𝑖 = 1
▪ 𝑤
⃗⃗ 𝑥
⃗⃗⃗𝑖 − 𝑏 ≤ −1𝑠𝑖𝑦𝑖 = −1
© Structuralia 130
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
O lo que es lo mismo:
Esa ecuación representa la clasificación correcta de los puntos que están por encima de los
vectores soporte (es decir, esa ecuación es lo que debe cumplir un punto para que su
clasificación sea correcta).
Por lo tanto, se tiene un problema a optimizar (la distancia a los vectores soporte) y una
restricción (la ecuación que cumplen los puntos clasificados correctamente) de forma que:
𝟐 1
▪ Maximizar ~ Minimizar71 × ||𝑤||2
||𝒘|| 2
71Esa conversión se puede proponer ya que uno de los problemas equivale totalmente al otro debido a
que el funcional a maximizar/minimizar es un problema de optimización cóncava/convexa que tiene una
única solución. Se hace esa transformación para simplificar cálculos posteriores.
131 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
72 Fuente: http://web.mit.edu/6.034/wwwbob/svm-notes-long-08.pdf
© Structuralia 132
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
De forma que desaparecen las dependencias con w y b. Esto se hace ya que será más fácil
resolver este problema de maximización que el problema original planteado debido a que lo único
que multiplica a los valores de los parámetros a son los productos escalares de los distintos
vectores de datos. Estos productos escalares serán en la mayoría de los casos o 0 o valores
irrelevantes salvo en el caso de los vectores soporte en los que el valor será el máximo respecto
al resto de puntos, y por ello se estaría trabajando con una reducción de dimensionalidad. De
esta ecuación se obtendría el máximo derivando e igualando a 0 para los distintos valores de a
de manera que con ello se conocería ya el hiperplano óptimo ya que:
Los nuevos puntos que llegasen al sistema se clasificarían usando la ecuación del hiperplano
con los coeficientes ya calculados.
Soft-margin
Estos clasificadores SVM lineales se pueden extender para resolver algunos casos de
clasificación no lineal definiendo una frontera de clasificación que tenga una cierta tolerancia a
no clasificar bien algunos de los puntos que no serían separables linealmente.
133 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 54 Ejemplo en el que se aceptan ciertos puntos mal clasificados para poder aplicar la separación lineal SVM
a un problema de frontera no lineal [6]
En este caso, al problema de optimización planteado en el primer caso se añade el factor de los
errores 𝜉 que busca minimizarse de cara a tener la mejor frontera de decisión posible. Por ello el
problema se puede expresar ahora de la siguiente forma:
▪ 𝑤
⃗⃗ 𝑥
⃗⃗⃗𝑖 + 𝑏 ≥ 1 − 𝜉𝑖 𝑠𝑖𝑦𝑖 = 1
▪ 𝑤
⃗⃗ 𝑥
⃗⃗⃗𝑖 + 𝑏 ≤ −1 + 𝜉𝑖 𝑠𝑖𝑦𝑖 = −1
Así, se busca:
1
▪ Minimizar 2
× ||𝑤||2 + 𝐶 ∑𝑛𝑖=1 𝜉𝑖 con C una constante para ponderar la relación entre el
© Structuralia 134
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Los modelos vistos previamente sirven sólo para clasificaciones lineales y tienen una pequeña
aplicación para casos no lineales en los que se tolera cierto margen de error. Ahora bien, los
modelos de SVM ganan mucha mayor potencia para los casos de clasificación no lineal cuando
se combinan con el denominado kernel trick.
Kernel Trick
Figure 55 Ejemplo de una frontera de clasificación no lineal para situaciones en las que los puntos no se pueden
separar con una frontera lineal73
73 Fuente: http://37steps.com/faq/faq-prtools-disrep/
135 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Estos modelos se basan en la idea intuitiva de que aunque no es posible separar espacios
complejos como el anterior con fronteras lineales, si es posible separarlos con fronteras lineales
si se definiesen los espacios de puntos en un espacio vectorial de una dimensión superior.
Si se quisiese separar el espacio de puntos anterior (1D) utilizando un valor constante (que sería
la “función de separación” en 1D) se puede ver que no existe un único punto en el espacio que
separe los puntos rojos de los puntos verdes.
Ahora bien, si se usase una dimensión superior, se podría encontrar una función tal que para
unos valores particulares se tuviese el valor verde y para otros el rojo. Esto se podría hacer con
© Structuralia 136
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Para el caso de 2D (2 variables) podría ocurrir que dentro de un mismo plano no se encuentre
una línea que pueda separar el conjunto pero, sin embargo, para una dimensión superior (3D)
se pueda separar el espacio mediante la ecuación lineal correspondiente (en este caso sería
un plano). Esto es lo que ilustra la imagen siguiente.
Figure 56 Al pasar del espacio de entrada a un espacio de dimensión superior los datos son separables gracias a un
plano.74
74 Fuente: https://prateekvjoshi.com/2012/08/24/support-vector-machines/
137 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Figure 57 Otro ejemplo de frontera no lineal obtenida como frontera lineal en un espacio de dimensión superior [6]
Figure 58 Al pasar del espacio inicial (input space) al espacio transformado (feature space) los puntos pasan a
poderse separar linealmente.75
La idea por lo tanto es transformar un espacio de entrada input space a uno de salida feature
space:
75 Fuente: https://en.wikipedia.org/wiki/Automated_machine_learning#/media/File:Kernel_Machine.svg
© Structuralia 138
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
De esta forma, como se tendría un hiperplano para separar el espacio cuando se pasa de los
puntos originales x a los puntos ∅(𝑥) se podría proceder a ajustar dicho hiperplano sobre esos
nuevos puntos de forma similar a como se ha ajustado en los casos de soft o hard margin. Ahora
bien, esto es costoso de ejecutar ya que se estarían transformando todos los datos de
entrenamiento a una dimensión superior sobre la que luego se obtendrían los vectores soporte
y ajustaría el hiperplano óptimo. Para evitar tener que calcular ∅(𝑥) y no tener por ello que
transformar realmente el espacio a una dimensión superior se usa una función denominada
kernel trick K donde los datos aparecen como productos escalares.
De esta forma, en la ecuación que se debía optimizar para calcular el hiperplano óptimo:
No sería necesario como tal pasar de los valores de x a los ∅(𝑥) ya que lo único que interesa
como tal son los productos escalares, los cuales en definitiva miden la similitud entre dos
vectores.
Esta medida de similitud es la que calculará directamente la función de kernel, pudiéndose así
expresar la Lagrangiana:
139 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Existen diferentes funciones Kernel para llevar a cabo esta transformación, siendo las más
utilizadas:
𝑧1 2
𝐾(𝑥, 𝑧) = (𝑥 𝑇 𝑧)2 = (𝑥1 𝑧1 + 𝑥2 𝑧2 )2 = [𝑥1 2 , 𝑥22 , √2𝑥1 𝑥2 ] [ 𝑧2 2 ] = ∅(𝑥)𝑇 ∅(𝑧)
√2𝑧1 𝑧2
Con ello se ha construido un espacio en el que la dimensión superior es una variable artificial
que realmente depende de los valores de las otras variables pero que permite hacer esa
descomposición del espacio de manera más sencilla.
Por ello, teniendo en cuenta todo lo anterior la idea sería transformar, en primer lugar, el input
space a un feature space que fuese lo más linealmente separable posible, y ya sobre él aplicar
alguna de las técnicas vistas antes como soft margin o hard margin para encontrar la frontera de
separación óptima.
© Structuralia 140
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Supongamos que se tiene el siguiente espacio de puntos con la frontera de decisión ahí indicada:
La primera aproximación para resolverlo podría ser utilizar una función polinomial de grado
elevado que permita definir una frontera de decisión no lineal compleja.
Ahora bien, resolver esta ecuación, como tal, es un proceso extremadamente complejo y
computacionalmente muy costoso. Por ello, en vez de resolver este problema se definen unas
features de la siguiente forma:
77 Fuente: https://rasbt.github.io/mlxtend/user_guide/feature_extraction/RBFKernelPCA/
141 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con este método se plantea en vez de realizar una operación tan costosa como ajustar una
ecuación de grado elevado (sus derivadas parciales serán ecuaciones complejas de resolver)
estudiar la similitud respecto a unos puntos concretos denominados landmarks de manera que,
por un lado, se utilicen una cantidad de variables m en función de los landmarks que se definan,
y por otro lado en vez de proyectar realmente a un espacio de dimensión superior se analizan
sólo las medidas de similitud entre puntos y landmarks (en función del kernel definido) con lo que
se evita tener que proyectar realmente en un espacio de dimensión superior.
Ejemplo:
Si por ejemplo se tuviesen 3 puntos como landmarks: l(1), l(2), l(3), la similitud de estos respecto a
un punto en concreto se puede definir como:
La medida de la similitud se calcula con alguna de las funciones kernel definidas previamente,
como por ejemplo con la RBF.
2
∑𝑛
𝑗=1(𝑥𝑗 −𝑙𝑗 )
2
−
▪ Similarity(x, l) = 𝐾(𝑥, 𝑧) = 𝑒 −𝛾||𝑥−𝑧|| = 𝑒 2×𝜎2
Para los casos en los que el punto x sea cercano al lamndmark ocurrirá que:
▪ 𝑓1 ~𝑒 0 ~1
▪ 𝑓1 → 0
De esta forma, con cada landmark se definen unas features que se aplican sobre los distintos
valores de x y que clasificarán éstos en función de la medida de similitud, que para el caso del
RBF depende del parámetro 𝜎 2 definido. Este 𝜎 2 define lo amplio o estrecho que es el kernel.
© Structuralia 142
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Así, a modo de ejemplo y para estos mismos tres landmarks, se podría tener la siguiente frontera
de decisión para unos parámetros78:
Figure 60 x1, x2, x3 son los puntos a clasificar. l(i) son los distintos landmarks
Teniendo los 3 puntos que aparecen en la imagen superior, se clasificarían en alguna de las
categorías (0/1) usando la función siguiente con los parámetros ejemplo indicados antes:
78 Fuente: http://mlwiki.org/index.php/Support_Vector_Machines
143 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Con ello se estaría prediciendo que ese punto pertenecería a la clase y=1.
De forma genérica se definirá una serie de landmarks m con los que se tendrá:
∑ 𝜃𝑗 × 𝐾(𝑙𝑗 × 𝑥𝑖 ) ≥ 0 → 𝑥𝑖 𝑠𝑒𝑎𝑠𝑖𝑔𝑛𝑎𝑎𝑙𝑎𝑐𝑙𝑎𝑠𝑒𝑦𝑖 = 1
𝑗=1
∑ 𝜃𝑗 × 𝐾(𝑙𝑗 × 𝑥𝑖 ) ≤ 0 → 𝑥𝑖 𝑠𝑒𝑎𝑠𝑖𝑔𝑛𝑎𝑎𝑙𝑎𝑐𝑙𝑎𝑠𝑒𝑦𝑖 = 0
𝑗=1
Y así, en función de los coeficientes que relacionan los distintos landmarks y la similaridad
obtenida (según el kernel usado) entre un punto concreto y los landmarks existentes se clasificará
dicho punto en una de las dos categorías disponibles.
El entrenamiento de estos modelos servirá para determinar el valor de los distintos coeficientes
𝜃que relacionan las distintas expresiones de similitud.
© Structuralia 144
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
El modelo de SVM se puede adaptar para llevar a cabo tareas de regresión. Para ello se trata de
ajustar el modelo como en una función lineal de la forma siguiente:
79 Fuente: https://www.quora.com/Classification-machine-learning-How-do-you-determine-which-type-of-
kernel-to-use-in-SVM
80 Fuente: http://www.saedsayad.com/support_vector_machine_reg.htm
145 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Así, se intenta ajustar una ecuación lineal pero teniendo en cuenta una cierta tolerancia 𝜖 de
manera que los datos que estén dentro de esa región tubular no se consideren vectores soporte,
y así se busca reducir con ello el número de datos usados como vectores soporte.
Por lo demás, el ajuste de la recta se realiza de forma similar a cómo se ajustaron los hiperplanos
en el caso de clasificación.
Se puede añadir sobre lo anterior el concepto de soft margin que ya apareció en los problemas
de clasificación, como indica la imagen siguiente:
Alternativamente y de manera genérica, puede ayudar verlo desde la perspectiva habitual de los
problemas de regresión: en el caso de SVR se trata de ajustar un plano de regresión tal que
minimice una función de coste, como se ve en la imagen siguiente.
© Structuralia 146
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 38 Función de coste a minimizar para el caso SVR incluyendo término de regularización (opcional)81.
f(xi,w) representa la función del kernel usada.
Todos los casos de clasificación anteriores se han planteado para clasificaciones binarias, pero
los algoritmos SVM también se pueden usar para el caso multiclase.
One-against-one:
▪ Se definen varios clasificadores donde cada uno de ellos recibe una muestra de datos de
dos clases de entre todo el training set y aprende así a distinguir entre esas dos clases.
Al final, se plantea un esquema de votación entre todos los clasificadores para un dato
nuevo recibido de manera que éste se clasifique según la clase más votada entre todos
los clasificadores binarios definidos.
▪ Por ejemplo, se tienen 3 clasificadores binarios, el primero distingue entre las clases Niño
y Adulto, el segundo entre Adulto y Anciano y el tercero entre Niño y Anciano. Cuando se
recibe un nuevo dato, el primer clasificador podría decir que es un Niño, el segundo que
es un Adulto, y el tercero que es un Niño. De esta manera, Niño es la clase con más votos
y se clasificaría el nuevo dato dentro de ella.
81 Fuente: https://www.robots.ox.ac.uk/~az/lectures/ml/lect3.pdf
147 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
One-against-the-rest:
Por ejemplo, si las clases son Niño, Adulto, Anciano, un clasificador tendría dos clases:
Niño y {Adulto, Anciano}, de manera que agruparía todos los datos que no son de su clase
en otra clase.
82 Fuente: https://towardsdatascience.com/multi-class-classification-one-vs-all-one-vs-one-94daed32a87b
© Structuralia 148
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Notas finales
▪ El valor C que relaciona la ecuación a minimizar con el término del error. Este parámetro
1
C es el inverso del término de regularización, de forma que C = λ
▪ En el caso de que se use, por ejemplo, un kernel RBF aparecería un parámetro adicional
a predefinir en el modelo, 𝜎 2
o Un valor de 𝜎 2 elevado hace que los features 𝑓𝑖 varíen de forma más suave y
que por ello haya mayor sesgo y menor varianza.
83 Fuente: https://towardsdatascience.com/multi-class-classification-one-vs-all-one-vs-one-94daed32a87b
149 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
o Un valor de 𝜎 2 bajo hace que los features 𝑓𝑖 varíen de forma más brusca y que
por ello haya menor sesgo y mayor varianza.
Ventajas
▪ Escala bien con datos de alta dimensión pues siempre dependerá de los vectores soporte
definidos.
Desventajas
84Fuente: https://medium.com/greyatom/what-is-underfitting-and-overfitting-in-machine-learning-and-how-
to-deal-with-it-6803a989c76
© Structuralia 150
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
4.2. Ejemplo 1
Para este problema se va a utilizar el mismo dataset usado para la clasificación de compras de
clientes en función de sus parámetros de perfil de usuario.85
# Librerías
import numpy as np
import pandas as pd
import math
# Dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
y = dataset.iloc[:, 4].values
# Train/Test
# Feature Scaling
sc = StandardScaler()
85 Fuente: https://www.kaggle.com/rakeshrau/social-network-ads
151 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
##### Visualization
y_training = pd.Series(y_train)
X_training = X_train
target_names=['0','1']
lbX1=math.floor(min(X_training[:,0]))-1
ubX1=math.ceil(max(X_training[:,0]))+1
lbX2=math.floor(min(X_training[:,1]))-1
© Structuralia 152
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
ubX2=math.ceil(max(X_training[:,1]))+1
[lbX1,ubX1,lbX2,ubX2]
idxPlus=y_training[y_training==0].index
idxMin=y_training[y_training==1].index
plt.scatter(X_training[idxPlus,0],X_training[idxPlus,1],c='b',s=50)
plt.scatter(X_training[idxMin,0],X_training[idxMin,1],c='r',s=50)
plt.legend(target_names,loc=2)
Z = classifier.decision_function(np.c_[X.ravel(),Y.ravel()]) # frontera
plt.contour(X,Y,Z,colors=['k'], linestyles=['-'],levels=[0])
plt.xlabel("Age")
plt.ylabel("EstimatedSalary")
plt.title('Linear Kernel')
153 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Las visualizaciones obtenidas (sobre los datos de entrenamiento) y matriz de confusión son las
siguientes:
Se puede apreciar como algunos de los puntos no consiguen clasificarse bien. El siguiente paso
sería intentar mejorar el modelo utilizando un kernel que permita obtener una frontera de decisión
no lineal.
classifier.fit(X_train, y_train)
© Structuralia 154
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Para este caso, la visualización sobre los mismos datos de entrenamiento es;
Pudiéndose comprobar así que la frontera RBF mejora el poder de clasificación del modelo.
4.2 Ejemplo 2
En este caso se plantea un modelo de regresión usando SVR. Para este ejemplo se va a utilizar,
de cara a ayudar a la visualización de las fronteras de decisión, el problema descrito en la página
de scikit-learn [7].
155 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Este problema genera datos aleatorios ya escalados y construye la recta de regresión para 3
kernel distintos, uno lineal, uno polinómico de grado 2 y un RBF. El resultado obtenido es el que
indica la página:
86 Fuente: http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html
© Structuralia 156
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
5. ÁRBOLES DE DECISIÓN
Los árboles de decisión son otros modelos de ML que se pueden aplicar a problemas de
clasificación y de regresión. En el problema de clasificación la idea principal de estos modelos
es definir un sistema de reglas deducidas de los datos de entrenamiento para clasificar en función
de ellas los nuevos datos que lleguen al sistema.
Ilustración 41 Ejemplo de clasificación sencillo con un árbol de decisión donde se busca clasificar si un usuario
dejará la compañía (No) o si sí lo hará (Sí). De los datos de entrenamiento se deducen las reglas que aparecen, de
forma que si por ejemplo se quiere saber si un usuario de España y 22 años va a dejar la compañía se clasificará
dentro de la categoría de que sí, pero, sin embargo uno de 53 años no se irá. Por otro lado, un cliente de Portugal
independientemente de su edad se clasificaría como que se va a ir.
Esta idea de clasificación se puede trasladar a una visualización gráfica sobre el espacio de los
puntos en las que se definan las fronteras de decisión de acuerdo a las reglas que se han
deducido.
157 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 42 Fronteras de decisión sobre el mapa de datos en función de las reglas anteriores. En las zonas en rojo
se clasifican los No y en las verdes los Sí
Ilustración 43 Ejemplo sencillo de un problema de regresión para calcular el precio de la vivienda en función de su
tamaño y antigüedad. El valor inferido se calculará en función de la media de los valores de entrenamiento del
cuadrante donde se ubique un nuevo punto. En el caso de que un nuevo punto tuviese un tamaño entre 75 y 110 m2
y su antigüedad estuviese entre 15 y 5 años se le asignaría un precio de 937500 euros
© Structuralia 158
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Así, estos algoritmos deciden, en función de sus datos de entrenamiento, dónde realizar las
divisiones de los datos, de manera que se optimicen los puntos de entrenamiento que están bien
clasificados (la explicación detallada de como se realiza esto se abordará en el siguiente punto).
Habrá que tener cuidado, eso sí, de realizar demasiadas divisiones ya que eso es uno de los
motivos que puede causar más overfitting.
Ilustración 44 Otro ejemplo con más reglas y fronteras de decisión donde se clasifican los puntos de entrenamiento
dentro de las 3 clases que aparecen ahí (rojo, verde azul) para las dos variables indicadas en los ejes. 87 Definir
fronteras de decisión tan pequeñas para clasificar todos los puntos, como ocurre en este caso donde se han
clasificado bien todos los puntos de entrenamiento, puede ser uno de los motivos de sobreajuste posterior. Se puede
apreciar claramente como las fronteras de decisión son no lineales.
87 Fuente: http://stephanie-w.github.io/brainscribble/classification-algorithms-on-iris-dataset.html
159 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 45 Ejemplo de un árbol de decisión para clasificar si jugar o no al tenis en función de diferentes features.
Las features representan el conjunto de información sobre el tiempo meteorologico.
▪ Arcos: Posibles valores del nodo de origen. Por ejemplo, el cielo puede ser soleado,
nublado o con lluvia.
▪ Hojas: Valores de clasificación en las distintas clases del problema. En este caso sería
jugar (sí) o no jugar (no).
© Structuralia 160
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Reglas: Todo lo anterior determinaría unas reglas de clasificación para los distintos datos.
Para el caso anterior el sistema de reglas sería el siguiente.
5.2 Descripción
En este apartado se detallará con mayor precisión la forma en la que se crean las divisiones del
espacio y definen así las fronteras de división.
Uno de los algoritmos que se suelen utilizar para construir los árboles de decisión es el algoritmo
ID3 (Iterative Dichotomiser 3). El pseudocódigo de este algoritmo se muestra a continuación para
un caso de dos categorías de etiquetas de salida (+/-):
2. Si todos los datos son de la clase + → se devuelve un único nodo etiquetado con la clase +
3. Si todos los datos son de la clase - → se devuelve un único nodo etiquetado con la clase -
4. Si el campo features de los datos de entrada está vacío → se devuelve un nodo etiquetado
con el valor más frecuente de las clases de las variables de salida asociadas dentro de ese
conjunto de train.
5. En otro caso:
5.1. Se elige el atributo A que mejor clasifica los datos train de ese nodo → A
161 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
▪ Se pone debajo de este arco un nodo etiquetado con la clase más común de
entre los datos de train
5.3.5. Fin
Así, de forma general, la idea es ir eligiendo en cada momento que feature A usar para hacer la
partición del espacio hasta que se llegue a un nodo terminal en el que todos los datos
pertenezcan a la misma categoría.
© Structuralia 162
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 46 Ejemplo de aplicación del ID3. Se comienza eligiendo un atributo A de País de origen (Edad en este
caso) y éste sirve para crear un nuevo ID3 a partir de él. En este nuevo ID3 como las dos posibles variables (>25
años y <25 años) darían lugar a un Datos_Train con categorías de una sola de las clases, se asignan a esas hojas
esas categorías, y se volvería al nodo raíz para seguir por el resto de nodos. El algoritmo ha decidido usar esas
features para hacer las particiones y no usar la feature Sexo para ello.
De esta forma, un punto fundamental en el algoritmo es el 5.1, es decir, elegir el atributo que
mejor clasifica los datos de entrenamiento. Esto se puede hacer con varios criterios, pero uno de
los más conocidos es el basado en el concepto de entropía de la información.
163 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Entropía e información
La idea principal es que se elegirán como nodos aquellos que de una mayor ganancia de
información, vinculado a que clasifiquen mejor los puntos de entrenamiento disponibles.
Ilustración 47 En esta imagen se elegiría como variable para hacer la partición X1 antes que X2, y en concreto
dividiendo para ese valor en concreto, ya que es la división que maximiza que los puntos de cada categoría
separados para cada zona. En el caso de que X1 fuese una variable categórica a sería una de las categorías
existentes, y en el caso de ser numérica sería un valor cualquiera que elija el algoritmo que consiga separar mejor
las dos categorías de datos.
© Structuralia 164
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 48 Una segunda partición sobre el espacio anterior encontraría ese valor de X2=b como el valor idóneo
para maximizar los puntos de cada zona ya separados.
Con n el número de clases existentes y p(xi) la probabilidad de pertenecer a cada una de ellas.
165 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
𝐻(𝑋) = − ∑ 𝑝(𝑥𝑖 ) × 𝑙𝑜𝑔2 𝑝(𝑥𝑖 ) = −0.5 × 𝑙𝑜𝑔2 (0.5) − 0.5 × 𝑙𝑜𝑔2 (0.5) = 1
𝑖=1
© Structuralia 166
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Para ello se define, en función de la entropía, los términos de entropía esperada y ganancia de
información esperada:
|𝐷𝑣 |
𝐻𝑒𝑠𝑝𝑒𝑟𝑎𝑑𝑎 = ∑ × 𝐻(𝐷𝑣 )
|𝐷|
𝑣𝜖𝑉𝑎𝑙𝑜𝑟𝑒𝑠(𝐴)
|𝐷𝑣 |
𝐺𝑎𝑛𝑎𝑛𝑐𝑖𝑎(𝐷, 𝐴) = 𝐻(𝐷) − ∑ × 𝐻(𝐷𝑣 )
|𝐷|
𝑣𝜖𝑉𝑎𝑙𝑜𝑟𝑒𝑠(𝐴)
Ejemplo
167 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 51 Conjunto de datos de entrenamiento en los que las 4 variables tienen una categoría asociada de Jugar
al Tenis Sí (1) o No (0).
Con ello, el primer paso que lleva a cabo el algoritmo ID3 es elegir como variable para su primer
nodo aquella que de una mayor ganancia de información respecto a la entropía de los datos de
partida del modelo (los 14 puntos con sus diferentes clases; en este caso son 5 datos de No y 9
de Sí). Para cada una de las posibles variables se ve la ganancia que quedaría al comparar esa
entropía inicial con la entropía resultante de separar los datos según los valores v que pueda
tomar dicha variable A.
© Structuralia 168
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 52 En la imagen se ven las separaciones resultantes para las tres variables, junto con las ganancias de
entropía obtenidas. Se puede apreciar como el mejor caso es el de la variable Cielo que es la que proporciona una
mayor ganancia de información. El primer split del modelo sería según dicha variable y sus características.
El siguiente paso consistirá en, en el caso de que se puedan separar los datos que han quedado
en el split con la variable A escogida (es decir, que no sea nulo el conjunto de datos o que no
sea de una única clase) se crea un árbol ID3 que cuelgue de ese nodo y haga un nuevo split
considerando la variable de las variables restantes que mejor divida el espacio de esos datos.
169 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 53 El espacio de los datos que pertenecen a la categoría Cielo=Soleado se ve que se separan mejor con
la variable Humedad por dar una mayor ganancia de información. Como Cielo se ha usado en un nivel superior del
árbol esa variable no se vuelve a utilizar en los splits inferiores.
Tras finalizar los splits debido a que se han alcanzado separaciones totales entre las categorías
existentes con los valores que hay en la variable usada, se vuelve al nodo raíz para explorar las
particiones del espacio utilizando alguna de las otras variables no usadas.
© Structuralia 170
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ilustración 54 Como Cielo=Nubes acaba en una clase con todos los datos clasificados dentro de una misma clase
(nodo terminal) se explora la partición para Cielo=Lluvia usando las otras tres variables disponibles: usando, de nuevo,
Humedad para ese caso, o usando las otras dos variables: Temperatura y Viento. Se puede ver que Viento es la que
da una mayor Ganancia y que, además, acaba ya directamente en nodos terminales al clasificar perfectamente las
clases de ese subconjunto.
Terminadas las iteraciones con el algoritmo ID3, se tendría un árbol de decisión ya perfectamente
formado.
171 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Ventajas
▪ Los árboles de decisión permiten definir fronteras no lineales, muy útil para poder
clasificar o hacer regresión sobre problemas donde las fronteras de decisión óptimas sean
complejas.
Desventajas
▪ Otro de los peligros en estos algoritmos es el hecho de que son susceptibles a tener
sobreajuste u overfitting. El sobreajuste se da cuando se tiene una solución h que clasifica
mejor los datos de entrenamiento que otra solución h’ pero que clasifica peor datos
nuevos. El sobreajuste se puede dar por:
© Structuralia 172
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
o Haber intentado clasificar hasta el final en base a los atributos existentes (es decir,
no haber dejado ningún dato sin clasificar dentro de su clase). El forzar de esta
manera al algoritmo puede hacer que se hayan definido fronteras en base a
atributos y valores de éstos que podrían parecer relevantes dentro de los datos
de entrenamiento pero que luego no lo son a nivel general.
Algunos de los problemas descritos previamente pueden ser resueltos usando algunas técnicas
de mejora en este algoritmo ID3 (que no deja de ser el caso más sencillo de árbol de decisión),
siendo una de ellas la técnica de poda de árboles.
Con la técnica de poda de árboles se pretende proporcionar un examen retrospectivo sobre las
decisiones tomadas por el ID3 para evaluar cuándo éstas realmente aportan una frontera de
decisión que sea generalizable y cuando no lo hacen. Para ello hacen lo siguiente:
2. Árbol actual = árbol elegido por ID3 usando los datos de train
4. Continuar = True
5. Mientras Continuar:
ii. Medir, con este Árbol modificado, la proporción de datos de test que se
clasifican correctamente -> Media1
i. Si Media1 (scoring de este árbol modificado) > Media (scoring del árbol
original) -> Árbol actual = Árbol podado en K
173 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
De esta forma se trata de simplificar los modelos (principio de navaja de Ockham) de cara a que
éstos puedan generalizar mejor. Como criterio general siempre se preferirán los modelos más
sencillos frente a los más complejos.
Hasta ahora todo lo visto sobre árboles de decisión trata de construir un único árbol usando algún
algoritmo como ID3. ¿Se puede mejorar aún más la solución propuesta? La respuesta es que sí
y para ello se plantean mejoras como la que aporta el algoritmo de random forest.
La idea intuitiva detrás de él consiste en utilizar varios árboles de decisión de forma conjunta
para intentar paliar el efecto de los mínimos locales, sobreajuste… Si existen varios modelos
entrenados sobre los datos originales, las predicciones ponderadas de todos ellos serán
previsiblemente más certeras que las que hará un único modelo, que siempre será más propenso
a equivocarse por los motivos ya expuestos.
Estos modelos son un tipo de modelos denominados ensemble learning por consistir en
combinaciones de varios modelos independientes distintos (se dedicará más adelante un punto
a tratar este tipo de modelos en más profundidad).
Así, de forma sencilla, cada árbol individual entrenado clasificaría un nuevo dato en una de las
categorías posibles y se combinarían todas esas predicciones individuales para dar un
porcentaje de pertenencia a cada una de las distintas clases. Así, si se están usando 3 árboles
para clases 0/1 y 2 clasifican en la categoría 0 y uno en la 1, la predicción del sistema sería 0 =
66% 1 = 33%, y se podría elegir la clase con mayor puntuación como etiqueta de ese dato.
Para el caso de regresión el problema es similar; cada árbol daría una predicción y se
combinarían todas las predicciones a través de un cálculo de la media de las mismas (o mejor,
la mediana para evitar valores atípicos) para dar la predicción final.
© Structuralia 174
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
3. Para cada nuevo punto (predicción) se saca la predicción individual de cada árbol y se
obtiene el porcentaje (clasificación) o media/mediana de valores (regresión)
88Fuente: https://www.analyticsvidhya.com/blog/2020/05/decision-tree-vs-random-forest-algorithm/
89La idea de coger subconjuntos de datos aleatorios es intentar explorar lo más posible todo el espacio
de soluciones válidas para, por ejemplo, evitar los óptimos locales y tener la mejor generalidad posible.
175 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Las técnicas de Random Forest se conocen como bagging, en donde se entrenan varios modelos
independientes en paralelo. Otra alternativa es usar técnicas denominadas Gradient Boosting,
donde se entrenan varios modelos en serie, en donde se entrena un primer modelo en los datos,
y de manera subsiguiente los modelos tratan de minimizar el error de los modelos previos. Dentro
de estos algoritmos existen ejemplos como AdaBoost, XGBOost, GBM, LightGBM o CatBoost.
Estos modelos son generalmente muy eficientes, aunque en ocasiones contienen una gran
cantidad de hiperparámetors que no es trivial ajustar.
Para este ejemplo se utilizará el mismo dataset usado en los anteriores ejemplos para la
predicción de si un cliente dejará o no la compañía en función de una serie de parámetros. Para
un primer ejemplo, que además sirva de comparación con los otros modelos, se usarán las
variables de Age y EstimatedSalary.
90 Fuente: https://www.pluralsight.com/guides/ensemble-methods:-bagging-versus-boosting
© Structuralia 176
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Librerías
import numpy as np
import pandas as pd
import math
# Dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
y = dataset.iloc[:, 4].values
# Splitting the dataset into the Training set and Test set
Estos algoritmos, como ya se comentó, no necesitan escalar las variables de entrada por no
calcular sus fronteras de decisión en base al uso de distancias (p.e. Euclídea, Manhattan…). Aun
así, de cara a agilizar la computación, en muchas ocasiones suele ser una buena práctica reducir
el valor numérico de las variables de entrada, motivo por el cuál se hará a continuación.
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
177 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
max_leaf_nodes = None,
min_samples_split = 2,
max_features = None,
random_state = 0)
classifier.fit(X_train, y_train)
Dentro del modelo es interesante observar los hiperparámetros usados; entre ellos se puede
definir el criterio para hacer los splits (en este caso se ha usado el de entropía, por ser el
explicado en la teoría, pero existen otros muy usados, como el Gini). Se define también el número
máximo de hojas terminales a crear (None para no definir nada por defecto), el número mínimo
de datos que se deben tener para hacer un split (por defecto 2) y el número features usadas en
el modelo.
# Prediccion
y_pred = classifier.predict(X_test)
# Matriz de confusión
cm = confusion_matrix(y_test, y_pred)
© Structuralia 178
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
### Visualización
ax = ax or plt.gca()
ax.axis('tight')
ax.axis('off')
xlim = ax.get_xlim()
ylim = ax.get_ylim()
np.linspace(*ylim, num=200))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
179 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
n_classes = len(np.unique(y))
levels=np.arange(n_classes + 1) - 0.5,
zorder=1)
ax.set(xlim=xlim, ylim=ylim)
plt.show()
# Train
# Test
© Structuralia 180
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Lo mismo se puede analizar para el caso de un modelo de random forest. El código, análogo al
anterior, sería en este caso:
# Librerías
import numpy as np
import pandas as pd
import math
# Dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
y = dataset.iloc[:, 4].values
# Train/Test
181 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
random_state = 0)
classifier.fit(X_train, y_train)
# Prediccion
y_pred = classifier.predict(X_test)
# Matriz de confusión
cm = confusion_matrix(y_test, y_pred)
© Structuralia 182
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
# Feature importance
importance = classifier.feature_importances_
print(importance)
### Visualización
ax = ax or plt.gca()
ax.axis('tight')
ax.axis('off')
xlim = ax.get_xlim()
ylim = ax.get_ylim()
np.linspace(*ylim, num=200))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
n_classes = len(np.unique(y))
levels=np.arange(n_classes + 1) - 0.5,
183 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
zorder=1)
ax.set(xlim=xlim, ylim=ylim)
plt.show()
# Train
# Test
Ilustración 61 Se puede comprobar que mejoran un poco los resultados respecto al árbol de decisión (se clasifican
bien 2 datos más)
© Structuralia 184
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
Una de las diferencias radicales, como se ha podido observar en el código, es la definición del
número de árboles de decisión usados en el random forest (en este caso se han elegido 500).
185 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)
6. REFERENCIAS
[1] https://en.wikipedia.org/wiki/Dartmouth_workshop
[2] https://en.wikipedia.org/wiki/Turing_test
[3] https://en.wikipedia.org/wiki/Chinese_room
[4] https://deepmind.com/research/alphago/
[5] http://www.ia.uned.es/~ejcarmona/publicaciones/[2013-Carmona]%20SVM.pdf
[6] https://www.semanticscholar.org/paper/Multi-class-Support-Vector-Machine-(SVM)-An-in-
and-Chamasemani-Singh/f830f53a30081ccd4e1f80983651afedd6e8459e
[7] http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html
[8] https://stackoverflow.com/questions/27564067/id3-decision-tree-clarification
[9] https://www.superdatascience.com/machine-learning/
[10] https://en.wikipedia.org/wiki/Naive_Bayes_spam_filtering
[11]http://wwwold.ece.utep.edu/research/webfuzzy/docs/kk-thesis/kk-thesis-html/node12.html
[12] https://www.cs.toronto.edu/~hinton/backprop.html
[13] https://www.tensorflow.org
© Structuralia 186