0% encontró este documento útil (0 votos)
14 vistas

Data Mining Machine

Este capítulo introduce los conceptos de data mining, machine learning y deep learning, explicando las diferencias entre ellos y cómo se relacionan. También describe el entorno tecnológico que se utilizará en el curso.

Cargado por

arojassi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas

Data Mining Machine

Este capítulo introduce los conceptos de data mining, machine learning y deep learning, explicando las diferencias entre ellos y cómo se relacionan. También describe el entorno tecnológico que se utilizará en el curso.

Cargado por

arojassi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 186

DATA MINING, MACHINE LEARNING Y DEEP LEARNING

APRENDIZAJE SUPERVISADO (I)


Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

© 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

2. REGRESIÓN LINEAL SIMPLE, MÚLTIPLE Y LOGÍSTICA (I) ............................................................................... 51

2.1 ¿Qué es el aprendizaje supervisado? ................................................................................................................. 51


2.2 Regresión vs. clasificación .................................................................................................................................. 55
2.3 Regresión lineal simple, múltiple y logística: Intuición inicial .............................................................................. 57
2.4 Descripción matemática ...................................................................................................................................... 58
2.5 Interpretación de los coeficientes ........................................................................................................................ 64
2.6 Presupuestos en los modelos de regresión lineal ............................................................................................... 66
2.7 Otras consideraciones adicionales ...................................................................................................................... 75

3. REGRESIÓN LINEAL SIMPLE, MÚLTIPLE Y LOGÍSTICA (II) .............................................................................. 78

3.1 Regresión logística .............................................................................................................................................. 78


3.2 Regresión logística multinomial ........................................................................................................................... 85
3.3 Regresión no lineal .............................................................................................................................................. 86
3.4 Sobreajuste (overfitting)....................................................................................................................................... 89
3.5 Regularización en los modelos de regresión ....................................................................................................... 91
3.6 Datos de entrenamiento (train), validación (val) y test....................................................................................... 100
3.7 Ejemplo 1........................................................................................................................................................... 100
3.8 Ejemplo 2........................................................................................................................................................... 116
3.9 3.9. Ejemplo 3.................................................................................................................................................... 124

4. MÁQUINAS DE VECTORES SOPORTE (SVM) ................................................................................................... 128

4.1 Descripción ........................................................................................................................................................ 128


4.2. Ejemplo 1.......................................................................................................................................................... 151
4.2 Ejemplo 2........................................................................................................................................................... 155

5. ÁRBOLES DE DECISIÓN ..................................................................................................................................... 157

5.1 Intuición inicial ................................................................................................................................................... 157


5.2 Descripción ........................................................................................................................................................ 161
5.3 Random Forest .................................................................................................................................................. 174
5.4 Ensemble Learning ............................................................................................................................................ 176
5.5 Ejemplo 1: Árbol de decisión ............................................................................................................................. 176

3 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

5.6. Ejemplo 2: Random Forest ............................................................................................................................... 181

6. REFERENCIAS ..................................................................................................................................................... 186

© 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

1.1 ¿Qué son Data Mining, Machine Learning y Deep Learning?

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).

Por IA se ha hecho referencia a la idea de que se pudiesen desarrollar sistemas de computación


que pudiesen simular el comportamiento de un ser humano, de forma que pudiesen resolver
tareas que éste resolvería de una forma análogamente “inteligente”. Este término no es nuevo,
sino que sus orígenes se remontan a un taller realizado en la Universidad de Dartmouth en 1956
[1] donde John McCarthy propuso este término para hacer referencia a las “máquinas
pensantes”, buscando en un principio poder desarrollar máquinas que simulasen perfectamente
cómo se comporta el ser humano, cómo funcionan sus procesos mentales y cómo interactúa con
el entorno, buscando poder resolver con estos sistemas cualquier tipo de tareas que una persona
pueda resolver, e incluso, poder hacerlo mejor que ella. Esto es lo que se conoce como
Inteligencia Artificial General (IAG)1 la cual, aunque sonaba en un principio como una idea
verdaderamente prometedora, acabó por no cumplir las expectativas que originó en su momento,
dando lugar a un gran periodo de desilusión con la IA conocido como el “invierno” de la 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.

A diferencia de la IAG, la especializada si qué ha llegado a demostrar en numerosas ocasiones


su valía, y es la tecnología que, a día de hoy, está siendo más investigada y la que se está
implementando en más en empresas de todo tipo de sectores. Es por ello por lo que en lo que
sigue a este curso se hablará concretamente de este tipo de IA.

La IA se puede subclasificar tanto a nivel de tecnologías usadas como a nivel de aplicaciones


para las que se puede utilizar, y es aquí donde se comienza a enlazar con los conceptos clave
del curso.

Una clasificación de las distintas técnicas de IA es la siguiente:

▪ Machine Learning

▪ Sistemas de Lógica Borrosa

▪ Sistemas Expertos

▪ Redes Bayesianas

▪ Algoritmos Evolutivos

▪ Sistemas Basados en Casos

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)

Figure 1 Clasificación visual de las distintas técnicas mencionadas2

Así, por ML se entiende un subconjunto de la IA que busca concretamente el poder proporcionar


a los sistemas de computación la capacidad de aprender conocimiento nuevo para el que las
máquinas no habían sido explícitamente programadas previamente. Así, por ejemplo, esto
aplicaría para desarrollar un sistema que fuese capaz de deducir unas reglas de forma autónoma
que le sirviesen para poder diferenciar cuándo en una imagen hubiese un tigre, una gallina…

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

El aprendizaje y capacidad de generalizar un conocimiento en base a una información para


deducir unas reglas con las que evolucionar y ser así capaces de lidiar con situaciones e
información totalmente nueva y desde la cual se pueda extraer conocimiento nuevo se lleva a
cabo mediante distintos algoritmos, los cuales no serán más que unas funciones matemáticas
que ajustarán unos parámetros concretos, gracias a la información que se tenga de partida, y
mediante los cuales se obtendrá la generalización antes mencionada.

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)

Figure 4 Evolución histórica de las tecnologías5

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)

Figure 5 Orígenes de distintos algoritmos de ML, concretamente para el caso de muchos de DL 6

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)

Figure 7 Aplicaciones de la IA/ML entre las que se incluye el DM 8

La rama de DM tradicionalmente no sólo incluye el análisis de los datos, como se ha


mencionado previamente, sino que a su vez incluye el conocimiento y trabajo sobre los
sistemas de información que actúan como repositorio de dichos datos (los sistemas de bases
de datos), así como las técnicas de extracción y preparación de los mismos. Ahora bien, para
el presente curso se centrará el estudio en las aplicaciones de algoritmos de ML para el
análisis de información de distintos conjuntos de datos, estudiándose así la intersección que
existe entre todas las disciplinas mencionadas. A su vez, se mencionarán las principales
técnicas de procesado y preparación de datos para su uso con dichos algoritmos, las cuales
pertenecen como tal al ámbito del DM.

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)

Figure 8 Intersecciones entre las disciplinas mencionadas9

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

1.2 Algunas aplicaciones de machine learning

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.

A continuación, a modo meramente ilustrativo, se muestran algunas de dichas aplicaciones


cotidianas en las que el elemento central que permite que éstas se lleven a cabo es precisamente
un algoritmo de ML:

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)

Detección de personas en fotos

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.

Figure 9 Ejemplo de etiquetado de rostros en Facebook

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.

Figure 10 Imagen de autocompletado de textos en base a los caracteres introducidos

© Structuralia 16
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Transformación de voz a texto

De nuevo, muchos dispositivos móviles permiten transformar de forma automática la voz de un


usuario al texto escrito correspondiente, algo que también se lleva a cabo con algoritmos de ML.

Figure 11 Icono del teclado para transformar un mensaje de voz a texto

Recomendaciones de contenidos

Numerosas industrias (retail, e-commerce…) disponen de múltiples contenidos que proporcionan


a los usuarios de forma personalizada en función de distintos criterios, buscando que este tenga
acceso a la oferta de contenidos que más se adecua a él.

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)

Figure 14 Ejemplo de diagnóstico médico por imagen

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.

Figure 16 Ejemplo de diálogo con Siri

Sistemas de recuperación de información

Los sistemas de recuperación de información, como muchos motores de búsqueda (Google,


Bing…) permiten a los usuarios encontrar la información más relevante de entre todo un
compendio gigante de contenidos en base a las consultas que éstos realicen. El determinar qué
contenido es o no relevante se hace en parte gracias a estos algoritmos.

Figure 17 Motor de búsqueda de Google

© Structuralia 20
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Filtrado de correos spam

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

1.3 Categorías de machine learning: Aprendizaje supervisado, aprendizaje no


supervisado, aprendizaje por refuerzo y soluciones semi-supervisadas

El ML se clasifica principalmente en 3 categorías claramente diferenciadas y según las cuales se


dividirá la parte central de este curso. Estas categorías, Aprendizaje Supervisado, Aprendizaje
No Supervisado y Aprendizaje por Refuerzo, se detallan a continuación a un nivel intuitivo para
poder servir de guía y comprensión inicial de cara a ubicarse bien cuando se profundice en los
aspectos técnicos en los siguientes temas.

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)

1.3.1. Aprendizaje supervisado

Como ya se ha adelantado, lo que distingue a estos conjuntos de algoritmos es la forma en la


que van a aprender y van a generalizar sobre los datos que reciben.

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.

Figure 19 Ejemplo sencillo de clasificación de un algoritmo supervisado12

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.

Figure 20 Esquema de funcionamiento del aprendizaje supervisado13

De nuevo, de forma intuitiva, el sistema lo que hace es ir comprobando los datos de


entrenamiento e intentando predecir el tipo de animal con los datos de rasgos disponibles. Como
para los datos de entrenamiento se dispone de la categoría real (animal en este caso), el sistema
comparará su respuesta de forma automática con la respuesta real y verá si ha acertado o si no
lo ha hecho, y en caso de no haberlo hecho reajustará sus parámetros para que su salida intente
adecuarse más a la salida real.

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.

1.3.2. Aprendizaje no supervisado

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)

Figure 22 Esquema de funcionamiento del aprendizaje no supervisado14

1.3.3. Aprendizaje por refuerzo

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].

En el aprendizaje por refuerzo el elemento distintivo a tener en cuenta es el aspecto de la


recompensa; en él, existirá un agente y éste tendrá a su alcance distintas acciones a realizar y
mediante prueba-error y premio-recompensa, fruto de ir probando cómo interaccionan sus
acciones con el entorno, acabará deduciendo cuál es la combinación óptima para unas
condiciones externas concretas de forma que se pueda optimizar la función de recompensa.

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.

Figure 23 Esquema de funcionamiento del aprendizaje por refuerzo15

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.

1.4 Preparación del entorno de trabajo

Instalación de Python y anaconda

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:

1. Descargar Anaconda desde la página web. Como se elige la versión de Python


3.7, se descargará automáticamente Anaconda3.

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)

2. Localizar y hacer doble clic sobre el ejecutable y seguir los pasos.

© Structuralia 32
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

3. Durante la instalación, elegir el directorio donde se tendrán los archivos de


Anaconda.

33 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

4. Un paso importante es decidir si asociar automáticamente Anaconda a las variables


de entorno de Windows. Si se quisiese poder utilizar directamente Anaconda desde
el terminal de Windows, habría que seleccionar la “alternativa” que aparece en la
imagen.

Figure 25 Opción ESTÁNDAR

Figure 26 Opción ALTERNATIVA

© Structuralia 34
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

5. Al final de la instalación se propone instalar Microsoft VSCode, pero esto es


opcional. No será necesaria para el curso.

6. Terminar la instalación.

35 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Opcional: Agregar a posteriori el path de Anaconda a Windows.

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…

1. Comprobar si ya está agregado. Para ello se abre la terminal de Windows y se


ejecutan los siguientes comandos.

> python --versión

> anaconda –versión

Figure 27 Terminal de Windows abierta

2. Según el resultado obtenido se podrá comprobar si está agregado Anaconda o no.

Figure 28 Salida de WIndows en caso de no estar en el path

© Structuralia 36
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 29 Salida cuando existe el path

3. En caso de no estarlo, primero se localiza la ubicación del ejecutable conda de


Anaconda y del ejecutable de Python.

> where python

> where conda

Figure 30 Ubicacion de los dos ejecutables

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).

Instalación en Ubuntu19 / Mac OS20

De forma análoga, la instalación en este caso sería:

1) Descargar la versión de Anaconda3 para Python 3.7 de la página web.

https://www.anaconda.com/download/#linux

https://www.anaconda.com/download/#macos

2) Desde la carpeta de descargas, ejecutar el archivo .sh.

bash Anaconda3-5.2.0-Linux-x86_64.sh

Esto da lugar a la siguiente salida:

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)

3) Tras completar los pasos de la instalación, aparecerá la opción de añadir


Anaconda3 al PATH del sistema. Se recomienda decir que si (yes) para poder usar
el comando de Anaconda conda desde la terminal del sistema.

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

Los cuáles deberían dar una salida similar a la siguiente:

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)

Opcional: Creación de entornos virtuales (Virtual Environments)

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.

1) Creación del entorno.

$ conda create –-name my_env python=3

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.

2) Activación del entorno.

El entorno se activa en Windows de la siguiente forma.

$ activate my_env

Y en Linux/Mac

$ source activate my_env

Una vez activado, se verá la siguiente salida:

© Structuralia 40
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Y, desde dentro del entorno, se puede ejecutar Python.

En Windows:

(my_env) > python

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.

Entornos de desarrollo integrados propuestos (IDEs)

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

El IDE tiene el siguiente aspecto:

© 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)

Librerías principales que se usarán en el curso

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

La librería Pandas facilita mucho el trabajo de manipulación y visualización de datos permitiendo


definir y operar sobre tablas (dataframes) con una sintaxis muy parecida a SQL. Incorpora
numerosas funciones para poder representar o transformar los conjuntos de datos de forma
rápida y sencilla. Su implementación es extremadamente óptima al incluir en su desarrollo código
generado en C.

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

Matplotlib es una librería para visualización de datos en 2D en Python, buscando facilitar la


representación gráfica. Existen otras librerías populares para realizar estas tareas, aunque en el
curso se usará principalmente esta por ofrecer una combinación de eficiencia y buen estilo gráfico
junto con facilidad de uso.

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)

¿Por qué Python?

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)

Figure 34 Uso de lenguajes de programación por la comunidad de Científicos de Datos 37

Figure 35 Aumento de popularidad de Python en 201838

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)

Figure 36 Comparativa de evolución de Python con otros lenguajes similares (R y Matlab)39

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

Aunque el presente curso se va a desarrollar enteramente en Python, existen otros lenguajes y


plataformas que permiten trabajar con implementaciones de algoritmos de ML. Algunas de ellas
son:

▪ R : R es un lenguaje orientado al análisis estadístico que dispone de numerosas librerías


de ML. Este es muy usado para todas estas aplicaciones tanto en la industria como en el
ámbito académico. El lenguaje de programación está disponible en https://www.r-
project.org/ y la IDE más popular, RStudio, se puede encontrar aquí
https://www.rstudio.com/

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)

▪ Spark MLib: Spark MLib es la librería de la plataforma de computación distribuida Spark


que permite utilizar dentro de la misma los distintos algoritmos de ML. La documentación
de la misma se encuentra en https://spark.apache.org/mllib/

▪ 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)

2. REGRESIÓN LINEAL SIMPLE, MÚLTIPLE Y LOGÍSTICA (I)

2.1 ¿Qué es el aprendizaje supervisado?

Como ya se fue adelantando en la Introducción, el aprendizaje supervisado hace referencia a un


conjunto de algoritmos de ML en los que se busca generalizar una ecuación que relacione una
serie de parámetros de entrada con valores asociados de uno o varios parámetros de salida, de
forma que cuando aparezcan conjuntos de datos de entrada nuevos el sistema pueda asociarles
un posible valor de dicha variable de salida.

Estos parámetros de entrada de las ecuaciones se denominan generalmente rasgos o


predictores (features). En el ejemplo siguiente se muestran datos ficticios de distintas empresas
y el beneficio asociado a las mismas. Un modelo de ML podría servir para que una empresa
pudiese predecir sus beneficios en función del reparto que tenga entre los gastos y la ciudad en
la que ubique su sede.

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)

2.2 Regresión vs. clasificación

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)

Dichas funciones de relación entre entradas-salidas se pueden visualizar como ecuaciones


dentro de un sistema de coordenadas tal que relacionan el valor de determinadas coordenadas
(rasgos) para, mediante la curva de la función, ver qué valor le correspondería a otra de las
coordenadas (variable predicha). Evaluando la función para las coordenadas de los predictores
se obtendría el valor de la coordenada de la predicción.

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)

En el caso de los modelos de clasificación, desde el punto de vista de representación gráfica,


corresponderían a unas ecuaciones que relacionan los valores de unas coordenadas
(predictores) con la coordenada que equivale a la variable predicha. En este caso la variable de
salida no correspondería al valor evaluado en la función, sino que más bien la función separaría
el espacio de los distintos valores de forma que dependiendo de la combinación de valores de
los predictores se obtendría una categoría u otra como muestra la imagen siguiente.

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

2.3 Regresión lineal simple, múltiple y logística: Intuición inicial

Los modelos de regresión representan dichas funciones de relación entrada-salida de la forma


más simple posible. Esta forma de relación simplificada asume que existe una relación lineal
entre la entrada y salida de datos y que por tanto corresponde a una recta dentro del espacio
cartesiano que se podría ajustar simplemente mediante la asignación adecuada de ciertos
valores a los coeficientes de dicha recta.

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)

2.4 Descripción matemática

Regresión lineal simple

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.

Así, esta ecuación lineal se puede representar gráficamente de la siguiente forma:

Ilustración 8 Para distintos puntos azules de entrenamiento se ajustarían los parámetros de la ecuación lineal 𝛽0 y 𝛽1

de manera que la recta se ajuste lo mejor posible a ellos.

© 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:

𝑛 𝑛

𝑅𝑆𝑆 = ⁡ ∑(𝑦̃𝑖 − ⁡ 𝑦𝑖 )2 = ⁡ ∑(𝛽0 + ⁡𝛽1 × 𝑥𝑖 − ⁡ 𝑦𝑖 ⁡)2


𝑖 𝑖

𝑏 ∗ = 𝑚𝑖𝑛(𝑅𝑆𝑆)

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.

Regresión lineal múltiple

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.

𝑦̃𝑖 = 𝛽0 + 𝛽1 × 𝑥1𝑖 ⁡ + 𝛽2 × 𝑥2𝑖 + 𝛽3 × 𝑥3𝑖 + ⋯ + 𝛽𝑛 × 𝑥𝑛𝑖

En caso de la regresión lineal múltiple la ecuación obtenida correspondería a un hiperplano, que


se podría observar gráficamente hasta el caso de 2 predictores como se muestra a continuación.

61 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Ilustración 11 Ejemplo de un hiperplano de regresión para 2 predictores y una variable de salida43

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).

Para el caso de, por ejemplo, la ecuación fuese:

𝑦̃ 𝑖 = 𝛽0 + 𝛽1 × 𝑥1𝑖⁡ + ⁡ 𝛽2 ⁡ × 𝑥2𝑖

El problema a minimizar y su solución sería:

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 ⋯ 𝑥𝑛𝑛

existentes en los datos de entrenamiento.

Con ello, el error sería44:

𝑛
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)

Operando la ecuación se llega a45:

𝐽(𝛽) = ((𝑋𝛽)𝑇 − 𝑦 𝑇 )(𝑋𝛽 − 𝑦) = (𝑋𝛽)𝑇 𝑋𝛽 − (𝑋𝛽)𝑇 𝑦 − 𝑦 𝑇 (𝑋𝛽) + 𝑦 𝑇 𝑦


= ⁡ 𝛽 𝑇 𝑋 𝑇 𝑋𝛽 − 2(𝑋𝛽)𝑇 𝑦 + 𝑦 𝑇 𝑦

Derivando esa ecuación respecto de 𝛽 se obtiene:

𝛿𝐽(𝛽)
= 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.

2.5 Interpretación de los coeficientes

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 × 𝑥𝑖

45 Se ignora el 1/2n en este punto ya que no aporta nada al proceso de optimización

© Structuralia 64
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Se tendría que por cada metro cuadrado que aumentase/disminuyese el precio


aumentaría/disminuiría en 2000 euros.

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.

46 Para más información sobre los contrastes de hipótesis se recomienda consultar


https://en.wikipedia.org/wiki/Statistical_hypothesis_testing

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.

2.6 Presupuestos en los modelos de regresión lineal

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

De forma general, la linealidad se puede comprobar usando distintos contrastes de hipótesis


como el contraste de Harvey-Collier, los cuales están implementados en distintas librerías de
software.

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.

▪ No hay autocorrelación en los residuos: Una particularidad de que no se cumpla la


relación lineal de los datos ocurre cuando aparecen fuertes correlaciones entre los
errores. Es decir, no solo existe un posible patrón sino que este además remarca una
relación con los valores que ha tenido previamente, viéndose, por ejemplo, que existen
patrones cíclicos.

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)

En estos casos se viola un presupuesto fundamental: los datos no son i.i.d.


(independientes e idénticamente distribuidos) con lo que algunos valores de una
determinada variable están correlacionados con otros valores previos de la misma.

o Idénticamente distribuidos hace referencia a que no existan tendencias


crecientes/decrecientes en los datos y que se pueda considerar que provienen de
una misma distribución.

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.

Por ejemplo, si la variable fuese el precio de la vivienda para distintos meses de


varios años se podría ver una evolución cíclica en relación a las subidas y
explosiones de la burbuja inmobiliaria y por lo tanto los datos no serían
independientes.

Para estos casos se recomienda usar otros algoritmos, como por ejemplo las series
temporales, que se verán en la última parte del curso.

De nuevo, la forma de comprobar esto es comprobar si existe autocorrelación con los


residuos viendo la lista de todos los residuos obtenidos y comprobando si los residuos de
una posición determinada dependen de residuos de posiciones previas.

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.

▪ Misma varianza en los residuos/errores (homocedasticidad): Otro factor que se debe


comprobar en relación a los residuos es que la distribución de estos debe tener una
misma varianza (homocedasticidad). Además de poderse ver visualmente, como en la
gráfica siguiente, existen, de nuevo, distintos test, como el de Breusch-Pagan o Goldfeld-
Quandt, implementados en librerías estadísticas en varios lenguajes de programación
que permiten comprobarlo de manera automática. En el caso de este test se hacen un
contraste de hipótesis diciendo que los datos son homocedásticos (H0) de manera que si
se obtiene un p-valor muy bajo se rechazará esa hipótesis y se dirá que se viola la
condición.

© 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.

▪ Distribución normal de los residuos: De forma general, el proceso de resolución del


problema de minimización del error cuadrático de los errores se resuelve asumiendo que
la distribución de los residuos/errores del modelo sigue una distribución normal y por lo
tanto su media es cero (o tiene un valor casi cero) y su varianza es constante. Por lo
tanto, es necesario comprobar que efectivamente se puede asumir que los errores
provienen de una distribución normal. De manera que, como indican las ecuaciones
siguientes, el término de error de sea un elemento aleatorio obtenido de una distribución
normal.

𝑦 − ⁡ 𝑦̃ = 𝑒⁡

𝑦𝑖 = 𝑏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

Ilustración 19 Otra manera de verlo, como se ha indicado, es con un Q-Q Plot54

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)

2.7 Otras consideraciones adicionales

▪ Tratamiento de valores atípicos:

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.

Cada problema es distinto y no siempre el origen de los valores atípicos responde al


mismo motivo. Puede que sean datos malformados y que por lo tanto se deban eliminar
(por ejemplo, una medición puntual de un sensor que es errónea. En este caso se
eliminaría y se trabajaría con el resto de medidas), o puede que sean datos que sí tienen
sentido, en cuyo caso se tendrá que ver si se imputarán con un valor máximo o mínimo
de referencia, se dejarán como están…

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:

1. Comprensión del motivo de que existan dichos valores

2. Eliminación de los valores atípicos (cuando sea pertinente)

3. Imputación de unos valores de referencia.

▪ Puntos palanca (high-leverage points):

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:

1. Comprender el motivo de que estén estos valores.

2. Eliminarlos o imputarles valores de referencia (cuando sea pertinente)

3. Usar una función de error más robusta (p.e. Huber58)

4. Usar algoritmos más robustos (p.e. RANSAC)

58 Fuente: https://en.wikipedia.org/wiki/Huber_loss

77 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

3. REGRESIÓN LINEAL SIMPLE, MÚLTIPLE Y LOGÍSTICA (II)

3.1 Regresión logística

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)

Ilustración 25 Ecuación de la función logística

De forma que se tendrían de ecuaciones para la probabilidad en el caso simple y múltiple lo


siguiente:

79 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Ilustración 26 Comparación de una ecuación logística frente a la de regresión lineal simple 59

La ecuación anterior se puede definir a su vez de la siguiente forma:

𝑝(𝑋)
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.

El ajuste de parámetros no se podría intentar hacer de forma análoga a como se ha hecho


previamente con el cálculo de derivadas parciales, ya que para ecuaciones no lineales, como
estas, se complica significativamente el proceso de derivación. Es más habitual, por lo tanto,
usar otros métodos como el de máxima verosimilitud (MLE, Maximum Likelihood Estimation).

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.

Considerando que los parámetros están contenidos en la variable Θ, la función de verosimilitud


es:

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:

Los parámetros estimados que maximizarían el problema anterior se expresarían de forma


genérica como:

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:

Así, los parámetros estimados se expresarían como:

© Structuralia 82
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Esta ecuación de verosimilitud se puede expresar de forma análoga de la siguiente forma:

Con:

Y la ecuación de verosimilitud anterior, si se resuelve, quedaría expresada como:

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)

La última consideración adicional a tener en cuenta es que como es un problema de clasificación,


para un determinado conjunto de parámetros de entrada la salida será o bien 0 o bien 1,
correspondiéndose a los valores de cota de la ecuación logística.

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.

3.2 Regresión logística multinomial

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.

Ilustración 27 Ejemplo de codificación en múltiples valores binarios

85 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

3.3 Regresión no lineal

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:

Las transformaciones principales que se pueden aplicar a los datos son:

▪ Tomar el logaritmo de los valores de salida.


(𝑋, 𝑌) → (𝑋, log(𝑌))

De esta manera la función, para un caso de una variable, pasaría a ser:

log(𝑌) = ⁡𝑎 + 𝑏 × 𝑋⁡ → 𝑌 = ⁡ 𝑒 𝑎+𝑏⁡×𝑋 ⁡ → 𝑌 = ⁡𝛼⁡ × ⁡ 𝛽 𝑋

▪ Tomar el logaritmo de los valores de entrada y salida:

(𝑋, 𝑌) → (log(𝑋) , log(𝑌))

Con ello:

log(𝑌) = 𝑎⁡ + 𝑏⁡ × log(𝑋) → 𝑌 = ⁡ 𝑒 𝑎 × ⁡ 𝑋 𝑏 = ⁡𝛼⁡ × ⁡ 𝑋 𝑏

© Structuralia 86
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

▪ Tomar el valor inverso de las variables de salida:

1
(𝑋, 𝑌) → (𝑋, )
𝑌

Con ello:

1 1
= 𝑎 + 𝑏⁡ × 𝑋⁡ → 𝑌 = ⁡
𝑌 𝑎 + 𝑏⁡ × 𝑋

Ilustración 28 Ejemplos para ver gráficamente el efecto de las transformaciones.62

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:

𝑦̃𝑖 = 𝛽0 + 𝛽1 × 𝑥𝑖⁡ + ⁡ 𝛽2 × 𝑥𝑖⁡ 2 + ⋯

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)

3.4 Sobreajuste (overfitting)

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 31 Ejemplo análogo al anterior con ecuaciones ilustrativas.66

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.

3.5 Regularización en los modelos de regresión

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)

En el caso concreto de la regresión ridge se añade un parámetro de regularización a la función


de coste (por ejemplo, la RSS en el caso de la regresión lineal) como se muestra a continuación:

El objetivo de esta regularización es rebajar la influencia de los coeficientes de manera que se


homogenice más la influencia de todos ellos y se puedan evitar potenciales sobreajustes debidos
a una sobrecarga de influencia sobre algunos coeficientes en concreto, ya que esto podría afectar
negativamente a la generalidad posterior del modelo. Esta reducción de la influencia de
coeficientes será mayor cuanto más se regularice/penalice la función de coste y por tanto cuanto
mayor sea el valor del parámetro λ. Se tendrá que encontrar un valor de λ óptimo minimizando
esa función de coste corregida de manera que se tenga la máxima generalidad posible sin perder
eficacia en el modelo.

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.

De forma general, un término de regularización se expresa de la siguiente forma en función de


las variables de entrada:

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).

De cara a la minimización, en el espacio de soluciones del término de regularización ésta será


mínima si los parámetros fuesen nulos (origen de coordenadas), pero dicha solución se sale del
espacio de soluciones de la ecuación de regresión. El punto donde será mínimo la solución de
mínimos cuadrados es precisamente donde interseccionan ambas gráficas. Comparando ambas
gráficas se puede ver que en L1 debido a que la forma de la misma es con aristas es mucho más
fácil que se dé una intersección con el espacio de soluciones rojo en uno de los ejes, lo que
implicaría que ese parámetro ajustado valiese 0 y por ello se haya descartado. Que un parámetro
con la gráfica en L2 llegase a valer 0 es algo mucho más complicado ya que implicaría una
intersección de ambos espacios que justo coincidiese con un eje.

99 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

3.6 Datos de entrenamiento (train), validación (val) y test

Una tarea importante en la construcción de modelos de ML es poder evaluar los modelos y


comprobar cómo pueden generalizar mejor. Esta evaluación de un modelo se debe llevar a cabo
sobre datos nuevos que el modelo no haya visto antes.

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.

Así, los conjuntos de datos habitualmente se descompondrán en:

▪ 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

import matplotlib.pyplot as plt

© Structuralia 100
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

import pandas as pd

#############################################################################
##

### Data Preprocessing

#############################################################################

# Cargar dataset

df = pd.read_csv('Salary_Data.csv')

# Visualizar los datos

df.plot(x='YearsExperience', y='Salary', title="Evolucion del Salario segun los


Años de Experiencia") # Se ve relacion lineal

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.

Un modelo de regresión simple tendrá la siguiente ecuación:

𝑦 = ⁡ 𝑏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).

# Separación en variables entrada/salida

X = df.iloc[:, :-1].values

y = df.iloc[:, 1].values

# Train/Test Split

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 1/3,


random_state = 0)

Y con ello se construye el modelo usando la librería de statsmodels.

import statsmodels.api as sm

model = sm.OLS(y_train, X_train).fit()

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.

En primer lugar, se puede ver un resumen del modelo de la siguiente forma:

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)

A continuación se pasan a comprobar los distintos puntos mencionados de las hipótesis de un


modelo de regresión lineal.

▪ Linealidad

Harvey-Colley

La comprobación de si hay una relación lineal entre la variable de entrada y de salida se


puede hacer utilizando el test de Harvey-Colley:

#### Linealidad

# Comprobacion de linealidad

import statsmodels.stats.api as sms

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.

▪ Normalidad de los residuos

Esta se comprueba de la siguiente forma:

#### Normalidad Residuos

# Obtencion residuos

from statsmodels.compat import lzip

residuos = model.resid

# Histogramas

plt.hist(residuos, range=(-45000, 45000))

© Structuralia 104
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 37 Histograma de los residuos

# Q-Q Plot

import scipy as sp

fig, ax = plt.subplots(figsize=(6,2.5))

_, (__, ___, r) = sp.stats.probplot(residuos, plot=ax, fit=True)

print(r**2)

Figure 38 Q-Q Plot residuos

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.

De forma complementaria, se podría comprobar con el test D’Agostino.

# Test D'Agostino

from scipy.stats import normaltest

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:

El siguiente punto es comprobar la homocedasticidad de los residuos. Esta se puede


comprobar con el test de Goldfeld-Quandt:

### Comprobacion Homocedasticidad

# Goldfeld-Quandt test

name = ['F statistic', 'p-value']

test = sms.het_goldfeldquandt(model.resid, model.model.exog)

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.

La homocedasticidad también se puede comprobar visualmente representando como se


distribuyen los residuos frente al valor del predictor.

© 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)

Figure 39 Residuos vs Predictor

Claramente se ve que no hay hetrocedasticidad, pero aparece igualmente una situación


potencialmente alarmante; aunque se haya pasado el test de linealidad entre los datos y
la salida, los residuos no tienen una distribución aleatoria, con lo que se debería buscar
alguna forma de mejorar el modelo.

▪ Autocorrelación residuos:

Se puede comprobar si existe o no autocorrelación dentro de los datos usados aplicando


el test de Durbin-Watson a los residuos obtenidos:

### Autocorrelación errores

from statsmodels.stats.stattools import durbin_watson

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:

### Comprobacion de influencia de posibles outliers

from statsmodels.stats.outliers_influence import OLSInfluence

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

from statsmodels.graphics.regressionplots import plot_leverage_resid2,


influence_plot

fig, ax = plt.subplots(figsize=(8,6))

fig = plot_leverage_resid2(model, ax = ax)

influence_plot(model)

Figure 40 Diagrama de influencia

© Structuralia 108
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 41 Puntos palanca influyentes

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.

En el diagrama de influencia no se aprecia nada en el cuadrante superior derecho, pero en


el de los residuos al cuadrado se observa como la observación 7 (x=10.5) influye
sensiblemente en la generalidad del modelo como es un problema ejemplo se va a dejar
aunque se debería tener precaución con ella.

Con todo ello se procederían a crear las predicciones del modelo y a visualizar los resultados
obtenidos:

# Predicciones del modelo

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

from sklearn.metrics import mean_squared_error, r2_score

r2 = r2_score(y_test, y_pred)

mae = mean_squared_error(y_test, y_pred)

print("r2: ", r2, "mae: ", mae)

r2: 0.8111 mae: 158298192.7350

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

# Visualizing the Training results

plt.scatter(X_train, y_train, color = 'red') #Pinto en rojo los valores reales


de train como puntos

plt.plot(X_train, model.predict(X_train), color = 'blue') #Pinto en azul y en


forma de linea la predicción sobre mis valores de train ya que aplico la
regresión sobre esos mismos valores de train, mi modelo entrenado sobre esos
valores

plt.title('Salary vs Esperience (Training Set)')

plt.xlabel('Years of Experience')

plt.ylabel('Salary')

plt.show()

© Structuralia 110
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 42 Recta de regresión en relación a los datos de entrenamiento

# Visualizing the Test results

plt.scatter(X_test, y_test, color = 'red') #Pinto ahora los puntos de test sobre
el mismo modelo que he construido para validarlo

plt.plot(X_train, model.predict(X_train), color = 'blue') #Pinto en azul y en


forma de linea la predicción sobre mis valores de train ya que aplico la
regresión sobre esos mismos valores de train, mi modelo entrenado sobre esos
valores

plt.title('Salary vs Esperience (Test Set)')

plt.xlabel('Years of Experience')

plt.ylabel('Salary')

plt.show()

111 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 43 Recta de regresión en relación a los datos de test

Se podría intentar mejorar el modelo utilizando una constante junto con el predictor y ajustando
por lo tanto la ecuación:

𝑦 = ⁡ 𝑏1 ⁡ × 𝑥

Repitiendo los pasos anteriores se obtiene lo siguiente:

▪ 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:

Figure 44 Histograma residuos

Figure 45 Q-Q Plot residuos

113 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

El valor obtenido de r2 con el QQ Plot es de 0.9596, y el p-valor de D’Agostino es de 0.260, con


lo que los residuos siguen teniendo distribución normal.

▪ Homocedsticidad residuos:

Figure 46 Residuos vs Predictor

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:

En este caso el diagrama de influencia y los puntos palanca son:

© Structuralia 114
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Figure 47 Diagrama de influencia

Figure 48 Puntos palanca

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)

La evaluación del modelo da como resultado:

r2: 0.9749 mae: 21026037.3295

Donde se puede comprobar como el modelo ha crecido enormemente en su capacidad de


explicabilidad (siendo esta ahora del 97.49%).

La visualización sobre los datos de test quedaría de la siguiente forma:

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)

Para cargar este dataset se haría lo siguiente:

import numpy as np

import pandas as pd

import statsmodels.api as sm

from sklearn import datasets # datasets disponibles en sklearn

data = datasets.load_boston() # carga del dataset BOSTON

# Informacion del dataset

print(data.DESCR)

# Variables independientes (entrada)

df = pd.DataFrame(data.data, columns=data.feature_names)

Las variables que aparecen en este dataset son:

▪ y = MEDV: Valor medio de casas ocupadas por sus propietarios en 1000 dólares.

▪ X1 = CRIM: representa el crimen per cápita por ciudad.

▪ X2 = ZN: la proporción de zonas residenciales en un área determinada.

▪ X3 = INDUS: la proporción de acres dedicada a negocios al por menor en la ciudad.

▪ X4 = CHAS: variable binaria (=1 si las vías cruzan el río y 0 en otro caso).

▪ X5 = NOX: concentración de óxido nítrico (partes por millón).

▪ X6 = RM: número medio de habitaciones por vivienda.

▪ X7 = AGE: proporción de edificios ocupados por sus propietarios, construidos antes de


1940.

▪ X8 = DIS: representa la distancia ponderada a cinco centros de empleo en Boston.

▪ X9 = RAD: índice de accesibilidad a las autopistas radiales.

117 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

▪ X10 = TAX: valor total de la tasa de impuestos por 10.000 dólares.

▪ X11 = PTRATIO: representa el ratio alumno-profesor por ciudad.

▪ X12 = B: valor definido como 1000(Bk - 0.63)2 donde Bk es la proporción de


afroamericanos en la ciudad

▪ X13 = LSTAT: porcentaje de clase baja en la población

Si se usan todas las variables para construir el modelo:

# Variable de salida

target = pd.DataFrame(data.target, columns=["MEDV"])

y = target["MEDV"]

### Modelo con todas las variables

#X = df[["RM", "LSTAT"]]

X = df # todas las variables

# Train/Test

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2,


random_state = 0)

© 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:

# Correlación para todos los datos

import seaborn as sns

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)

Viendo el resumen del modelo:

model = sm.OLS(y, X).fit()

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:

# Se descartan INDUS, NOX, AGE

X = df.copy()

X.drop(['INDUS', 'NOX', 'AGE'], axis=1, inplace=True)

# Train/Test

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2,


random_state = 0)

model = sm.OLS(y, X).fit()

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

from sklearn.metrics import mean_squared_error, r2_score

r2 = r2_score(y_test, y_pred)

mse = mean_squared_error(y_test, y_pred)

© Structuralia 122
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

print("r2: ", r2, "mse: ", mse)

r2: 0.598011306669134 mae: 32.733311818464934

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.

El mismo modelo se puede construir usando la librería de scikit-learn de la siguiente forma:

### Modelo con scikit-learn

# Feature scaling

from sklearn.preprocessing import StandardScaler

sc_X = StandardScaler()

X_train = sc_X.fit_transform(X_train)

X_test = sc_X.transform(X_test)

sc_y = StandardScaler()

y_train = sc_y.fit_transform(y_train.values.reshape(-1, 1))

# Modelo

from sklearn.linear_model import LinearRegression

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

from sklearn.metrics import mean_squared_error, r2_score

r2 = r2_score(y_test, y_pred)

mae = mean_squared_error(y_test, y_pred)

print("r2: ", r2, "mae: ", mae)

Escalado de variables (feature scaling)

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).

3.9 3.9. Ejemplo 3

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)

Los datos sobre los clientes son:

▪ 'User ID': Un ID para cada cliente

▪ 'Gender': El género del cliente (Male/Female)

▪ 'Age': La edad del cliente (variable numérica entera)

▪ 'EstimatedSalary': Salario aproximado del cliente

Y la variable a predecir es:

▪ 'Purchased': Su valor es 0 si no han comprado o 1 si sí lo han hecho

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.

### Preprocesado de los datos

# Librerías

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# Dataset

dataset = pd.read_csv('Social_Network_Ads.csv')

X = dataset.iloc[:, [2,3]].values # Age y EstimatedSalary

y = dataset.iloc[:, 4].values

# Train/Test set

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20,


random_state = 0)

125 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

# Feature scaling

from sklearn.preprocessing import StandardScaler

sc_X = StandardScaler()

X_train = sc_X.fit_transform(X_train)

X_test = sc_X.transform(X_test)

# Entrenamiento del modelo

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state = 0)

classifier.fit(X_train, y_train)

Se obtienen los siguientes resultados:

### Prediccion y evaluación

# Predicciones

y_pred = classifier.predict(X_test)

# Matriz de confusion

from sklearn.metrics import confusion_matrix

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)

Figure 49 Matriz de confusión

127 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

4. MÁQUINAS DE VECTORES SOPORTE (SVM)

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.

Clasificadores SVM lineales

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.

Para este caso se podría tener, por ejemplo:

Figure 50 Conjunto de datos linealmente separable70

70 Fuente: https://en.m.wikipedia.org/wiki/Support_vector_machine

© Structuralia 128
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Este problema se ve que es linealmente separable, aunque existen potencialmente infinitas


rectas frontera de decisión que se podrían utilizar para realizar la separación:

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).

Si los puntos anteriores a clasificar pertenecen a dos clases (yi = 1, yi = -1):

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:

𝑦𝑖 (𝑤 ⃗⃗⃗𝑖 − 𝑏) ≥ 1⁡𝑐𝑜𝑛⁡𝑦𝑖 = ⁡ {1, −1}


⃗⃗ ⁡𝑥

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

▪ Sujeto a 𝑦𝑖 (𝑤 ⃗⃗⃗𝑖 − 𝑏) ≥ 1⁡𝑐𝑜𝑛⁡𝑦𝑖 = ⁡ {1, −1}⁡


⃗⃗ ⁡𝑥

Este problema de optimización se podría resolver construyendo la función Lagrangiana de dicho


problema de optimización y derivándola respecto a los dos parámetros variables que se tienen
que ajustar, el valor de la constante b y el coeficiente del hiperplano w. Para más detalles sobre
cómo se resuelve este problema y qué valores se obtienen para b y w se recomienda la lectura
de [5].

De forma resumida se tiene que la función Lagrangiana definiría el siguiente problema de


optimización (conocida como problema primal):

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)

Y derivando parcialmente respecto de w y b se llega a las ecuaciones (con l el número de puntos


de entrenamiento):

Estas ecuaciones se podrían sustituir en la expresión de minimización original para obtener lo


siguiente (una función denominada problema dual):

Figure 53 Sustitucion en las ecuaciones originales72

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

▪ Con 𝜉⁡ ≥ 0 siendo 𝜉 las variables de holgura

Así, se busca:
1
▪ Minimizar 2
⁡× ||𝑤||2 + 𝐶⁡ ∑𝑛𝑖=1 𝜉𝑖 con C una constante para ponderar la relación entre el

término del error y el de la distancia máxima.

▪ Sujeto a 𝑦𝑖 (𝑤 ⃗⃗⃗𝑖 − 𝑏) ≥ 1 − ⁡ 𝜉𝑖 ⁡𝑐𝑜𝑛⁡𝑦𝑖 = ⁡ {1, −1}, 𝜉𝑖 ≥ 0⁡


⃗⃗ ⁡𝑥

La resolución de este problema pasaría de nuevo por el uso de la función Lagrangiana y


obteniendo las derivadas parciales para w y b pero ahora también para 𝝃. De nuevo se remite a
[5] si se quiere profundizar en la resolución matemática de este problema.

© Structuralia 134
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Clasificadores SVM no lineales

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

Como ya se apuntó en el capítulo de los modelos de regresión lineal, en numerosas ocasiones


es necesario utilizar modelos no lineales para definir una frontera de separación del espacio
adecuada y poder abordar con ello problemas complejos de clasificación.

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.

Esta idea se puede entender con el ejemplo siguiente:

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

una ecuación parabólica como se muestra a continuación.

© 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:

▪ Partiendo de un conjunto de datos {(𝑥𝑖 , 𝑦𝑖 )}𝑛𝑖=1

▪ Input space: el espacio de los distintos xi

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)

▪ Feature space: El espacio de los ∅(𝒙𝒊 )

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:

▪ Kernel lineal: 𝐾(𝑥, 𝑧) = ⁡ 𝑥 𝑇 𝑧

▪ Kernel polynomial: 𝐾(𝑥, 𝑧) = (𝑐 + ⁡ 𝑥 𝑇 𝑧)𝑑


2
▪ Kernel radial RBF76: 𝐾(𝑥, 𝑧) = ⁡ 𝑒 −𝛾||𝑥−𝑧||

▪ Kernel sigmoid: 𝐾(𝑥, 𝑧) = 𝑡𝑎𝑛ℎ(𝛾𝑥 𝑇 𝑧 + 𝑟)

Por ejemplo, para un kernel polinomial cuadrático (grado 2) se pasaría de un sistema de


dimensión 2 a otro de dimensión 3.

𝑧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.

76 RBF: Radial Basis Function

© 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:

Figure 59 Conjunto de datos no linealmente separable77

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:

▪ f1=x1, f2=x2, f3=x1x2, f4=x12, f5=x22 …

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 lo que se tendría:

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:

▪ f1 = similarity (x, l(1))

▪ f2 = similarity (x, l(2))

▪ f3 = similarity (x, l(3))

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

En cambio, si el punto está muy alejado del landmark:

▪ 𝑓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)

▪ Para el punto x1:

Con ello se estaría prediciendo que ese punto pertenecería a la clase y=1.

▪ Para el punto x3:

Con ello se estaría prediciendo que ese punto pertenecería a la clase y = 0.

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)

Figure 61 Ejemplo de distintas fronteras de decisión según los kernels usados 79

SVM para regresión: SVR

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:

Figure 62 Representación de un ajuste de SVR80

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.

Clasificadores SVM para problemas multiclase

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.

Hay dos formas principales de hacerlo:

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)

Ilustración 39 Esquema One-Against-One82

One-against-the-rest:

▪ Se entrena un único clasificador para cada una de las clases.

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.

▪ Se elige la clase con más probabilidad de todas

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)

Ilustración 40 Esquema One-Against-The-Rest83

Notas finales

Parámetros del modelo

En resumen, los parámetros de entrada de un modelo SVM para clasificación son:

▪ 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 = ⁡ λ

o Un valor elevado de C reduce el sesgo, aumenta la varianza y hace que el modelo


sea más propenso al overfitting.

o Un valor bajo de C aumenta el sesgo, reduce la varianza y hace que el modelo


sea más propenso al underfitting.

▪ 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

▪ No hay mínimos locales al ser un problema convexo

▪ Escala bien con datos de alta dimensión pues siempre dependerá de los vectores soporte
definidos.

▪ Se puede tener un compromiso entre complejidad/efectividad del clasificador o regresor


controlando los parámetros C y épsilon

▪ De igual forma, se puede controlar el sobreajuste

▪ Los resultados obtenidos son robustos

Figure 63 Ejemplo de modelos con overfitting, underfitting y ajuste aceptable.84

Desventajas

▪ No es fácil encontrar la relación óptima entre C y épsilon

▪ En algunas ocasiones no es trivial determinar la mejor transformación de los datos.

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

En primer lugar se construye un modelo de clasificación binaria (Purchased=0/1) para las


variables X0=Age y X1=EstimatedSalary usando un kernel lineal.

# Support Vector Machine (SVM)#

# Librerías

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

import math

# Dataset

dataset = pd.read_csv('Social_Network_Ads.csv')

X = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

# Train/Test

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20,


random_state = 0)

# Feature Scaling

from sklearn.preprocessing import StandardScaler

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)

######### Linear Kernel

# Entrenamiento del modelo - Kernel Linear

from sklearn.svm import SVC

classifier = SVC(kernel = 'linear', random_state = 0)

classifier.fit(X_train, y_train)

# Predicting the Test set results

y_pred = classifier.predict(X_test)

# Making the Confusion Matrix

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

##### Visualization

# Conversion a series y definir los valores de target

y_training = pd.Series(y_train)

X_training = X_train

target_names=['0','1']

# Definir los limites de la visualziacion

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]

# Indices de los labels

idxPlus=y_training[y_training==0].index

idxMin=y_training[y_training==1].index

# Representacion de los valores de cada clase con un color distinto b/r

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)

X,Y = np.mgrid[lbX1:ubX1:100j,lbX2:ubX2:100j] # meshgrid; matriz de 100x100 con


las divisiones entre los limites definidos

Z = classifier.decision_function(np.c_[X.ravel(),Y.ravel()]) # frontera

Z = Z.reshape(X.shape) # Se define la frontera como otro meshgrid de 100x100

plt.contourf(X,Y,Z > 0,alpha=0.4) # Dibujo del contorno

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:

Figure 64 Gráfico con la frontera de decisión de kernel lineal

Figure 65 Matriz de confusión para el caso de kernel lineal

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.

# Entrenamiento del modelo - Kernel RBF

classifier = SVC(kernel = 'rbf', random_state = 0)

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;

Figure 66 Frontera de decisión para un kernel RBF

Y la matriz de confusión sobre los datos de test es:

Figure 67 Matriz de confusión para un kernel RBF

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:

Figure 68 Distintas ecuaciones de regresión según el kernel usado86

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

5.1 Intuición inicial

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í

El problema de regresión parte, como va siendo costumbre, de la idea del problema de


clasificación solo que en vez de asignar a cada punto una clase según la sección del espacio en
la que caiga, se le asigna la media o mediana de los valores de los datos que están contenidos
en esa región.

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)

Un último detalle es comentar la nomenclatura usada en estos sistemas, usando de referencia


el ejemplo siguiente:

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.

Los elementos principales del árbol son:

▪ Nodos interiores: Atributos/features utilizadas pertenecientes a los datos de


entrenamiento. Por ejemplo, en el caso anterior, cielo es un atributo (cómo está el cielo)
o humedad (cuál es la humedad del ambiente).

▪ 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.

(Cielo = Soleado ^ Humedad = Alta -> Jugar_Tenis = No)

\/ (Cielo = Soleado ^ Humedad = Normal -> Jugar_Tenis = Sí)

\/ (Cielo = Nublado -> Jugar_Tenis = No)

\/ (Cielo = Lluvioso ^ Viento = Fuerte -> Jugar_Tenis = No)

\/ (Cielo = Lluvioso ^ Viento = Débil -> Jugar_Tenis = Sí)

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 (+/-):

ID3 (Datos Train, Target/Variable Salida, Features de las variables de entrada):

1. Se crea un nodo raíz (root node)

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

5.2. Se crea un árbol con un nodo = A (etiquetado con A)

5.3. Para cada valor posible vi de A:

5.3.1. Se añade un nuevo arco bajo el nodo, etiquetado con vi

161 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

5.3.2. Datos_Train(vi) es el subconjunto de datos que tiene el valor vi en el atributo A

5.3.3. Si Datos_Train(vi) == Vacío:

▪ Se pone debajo de este arco un nodo etiquetado con la clase más común de
entre los datos de train

5.3.4. Si Datos_Train(vi) != Vacío:

▪ Debajo de este arco se crea un sub-árbol ID3 (Datos_Train(vi), Target,


Features – {A})

5.3.5. Fin

5.3.6. Retorno al nodo raíz

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.

La forma de cuantificar estas separaciones se mide con la fórmula de la entropía:

𝐻(𝑋) = ⁡ − ∑ 𝑝(𝑥𝑖 ) × 𝑙𝑜𝑔2 𝑝(𝑥𝑖 )⁡


𝑖=1

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)

Ilustración 49 Para este ejemplo el cálculo de entropía sería:

𝐻(𝑋) = ⁡ − ∑ 𝑝(𝑥𝑖 ) × 𝑙𝑜𝑔2 𝑝(𝑥𝑖 ) = ⁡ −0.5⁡ × 𝑙𝑜𝑔2 (0.5) ⁡ − 0.5⁡ × 𝑙𝑜𝑔2 (0.5) = 1⁡
𝑖=1

Ilustración 50 Para este caso la entropía sería:

𝐻(𝑋) = ⁡ − ∑ 𝑝(𝑥𝑖 ) × 𝑙𝑜𝑔2 𝑝(𝑥𝑖 ) = ⁡ −1⁡ × 𝑙𝑜𝑔2 (1) ⁡ − 0⁡ × 𝑙𝑜𝑔2 (0) = 0⁡


𝑖=1

La entropía tendrá un valor entre 1 (entropía máxima, caso de máxima incertidumbre) y 0


(entropía mínima, caso de máxima información). El caso de mejor separación del espacio es
aquél que proporcione, después de separar los datos, la menor entropía.

© 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:

▪ La entropía esperada resultante después de usar una feature A en el árbol es:

|𝐷𝑣 |
𝐻⁡𝑒𝑠𝑝𝑒𝑟𝑎𝑑𝑎 = ⁡ ∑ ⁡ × 𝐻(𝐷𝑣 )
|𝐷|
𝑣⁡𝜖⁡𝑉𝑎𝑙𝑜𝑟𝑒𝑠(𝐴)

▪ La ganancia de información esperada después de usar una feature A en el árbol es:

|𝐷𝑣 |
𝐺𝑎𝑛𝑎𝑛𝑐𝑖𝑎(𝐷, 𝐴) = 𝐻(𝐷) − ⁡ ∑ ⁡ × 𝐻(𝐷𝑣 )
|𝐷|
𝑣⁡𝜖⁡𝑉𝑎𝑙𝑜𝑟𝑒𝑠(𝐴)

▪ Con Dv el subconjunto de ejemplos de D con valor de la feature A=v. Es decir, la


entropía esperada se calcula en función de la entropía de los puntos del subconjunto
Dv y las categorías a las que estos pertenecen, y luego se pondera este resultado en
función de los puntos del subconjunto frente a los del problema original. Por otro lado,
la ganancia se calcula en función de la entropía que se tuviese en el conjunto original
menos la nueva entropía (esperada) del subconjunto Dv. De esta forma, la partición en
función feature A que más ganancia produzca (es decir, que menor entropía esperada
tenga) será la que elija el sistema para la partición mencionada en el punto 5.3. del
algoritmo ID3.

Ejemplo

En el siguiente ejemplo se plantea un sistema de decisión para una clasificación de si jugar o no


al tenis (clasificación binaria) en función de 4 variables de entrada (Cielo, Temperatura,
Humedad, Viento) que son variables categóricas que tendrán entre 2 o 3 etiquetas, según el
caso. Se partirá de un conjunto de datos histórico con el tiempo que se ha tenido en 14 días
pasados, datos que se usarán para entrenar el modelo. Los datos se han obtenido de [8].

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)

Ilustración 55 Árbol de decisión final

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.

▪ No se necesita hacer un escalado de las variables de entrada.

Desventajas

▪ Al no tener retrocesos o re-comprobaciones sobre las decisiones tomadas en un paso


previo, este algoritmo es susceptible de acabar atrapado en óptimos locales; es decir, en
una solución que aunque óptima pueda estar alejada de la solución que es mejor para
los datos disponibles de forma global.

▪ 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:

o Haberse clasificado mal algunos de los datos de entrada

o Haber realizado el entrenamiento del sistema con conjuntos de datos pequeños

© 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.

Mejoras en el modelo: poda de árboles

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:

Algoritmo de poda de árboles:

1. Se divide el conjunto de datos de entrada en train y test

2. Árbol actual = árbol elegido por ID3 usando los datos de train

3. Media = proporción de datos de test que el Árbol actual clasifica correctamente

4. Continuar = True

5. Mientras Continuar:

1) Por cada nodo interior N del árbol:

i. Se poda temporalmente el árbol en el nodo N y se sustituye por un nodo


terminal (hoja) etiquetado con la clasificación mayoritaria para ese nodo

ii. Medir, con este Árbol modificado, la proporción de datos de test que se
clasifican correctamente -> Media1

2) Sea K el nodo que tras la poda produce mejores resultados:

i. Si Media1 (scoring de este árbol modificado) > Media (scoring del árbol
original) -> Árbol actual = Árbol podado en K

ii. Si no -> Continuar = False

6. Devolver Árbol actual

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.

5.3 Random Forest

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)

Ilustración 56 Esquema de un Random Forest88

En general, el pseudocódigo que seguirían estos sistemas es:

1. Se define el número de árboles a usar

2. Para cada árbol:

▪ Se cogen aleatoriamente89 k datos del training set

▪ Se construye un árbol de decisión con esos k datos

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)

5.4 Ensemble Learning

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.

Ilustración 57 Bagging frente a Boosting90

5.5 Ejemplo 1: Árbol de decisión

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.

# Decision Tree Classifier

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 matplotlib.pyplot as plt

import pandas as pd

import math

# Dataset

dataset = pd.read_csv('Social_Network_Ads.csv')

X = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

# Splitting the dataset into the Training set and Test set

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30,


random_state = 0)

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.

# Feature Scaling -> No hace falta, ya que no se basa en distancias Euclideas

# pero se puede utilizar para agilizar los cálculos

from sklearn.preprocessing import StandardScaler

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)

Una vez hecho esto se procede a entrenar el modelo:

# Entrenamiento del modelo

from sklearn.tree import DecisionTreeClassifier

classifier = DecisionTreeClassifier(criterion = 'entropy', # criterio usado

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.

Entrenado el modelo se puede proceder a realizar predicciones:

# Prediccion

y_pred = classifier.predict(X_test)

# Matriz de confusión

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

© Structuralia 178
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Ilustración 58 Matriz de confusión

Y con ello se pueden visualizar las fronteras de decisión91:

### Visualización

def visualize_classifier(model, X, y, ax=None, cmap='rainbow'):

ax = ax or plt.gca()

# Plot the points

ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=cmap,

clim=(y.min(), y.max()), zorder=3)

ax.axis('tight')

ax.axis('off')

xlim = ax.get_xlim()

ylim = ax.get_ylim()

xx, yy = np.meshgrid(np.linspace(*xlim, num=200),

np.linspace(*ylim, num=200))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)

91 Función de visualización obtenida de: https://jakevdp.github.io/PythonDataScienceHandbook/05.08-


random-forests.html

179 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

# Create a color plot with the results

n_classes = len(np.unique(y))

contours = ax.contourf(xx, yy, Z, alpha=0.3,

levels=np.arange(n_classes + 1) - 0.5,

cmap=cmap, clim=(y.min(), y.max()),

zorder=1)

ax.set(xlim=xlim, ylim=ylim)

plt.title('Decision Tree Classifier')

plt.show()

# Train

visualize_classifier(classifier, X_train, y_train)

# Test

visualize_classifier(classifier, X_test, y_test)

Ilustración 59 Fronteras de decisión para train

© Structuralia 180
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

Ilustración 60 Fronteras de decisión para test

5.6. Ejemplo 2: Random Forest

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 matplotlib.pyplot as plt

import pandas as pd

import math

# Dataset

dataset = pd.read_csv('Social_Network_Ads.csv')

X = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

# Train/Test

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30,


random_state = 0)

181 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

# Feature Scaling -> No hace falta, ya que no se basa en distancias Euclideas

# pero se puede utilizar para agilizar los cálculos

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)

# Entrenamiento del modelo

from sklearn.ensemble import RandomForestClassifier

classifier = RandomForestClassifier(n_estimators = 500, criterion = 'entropy',

max_leaf_nodes = None, # si se quiere


definir un maximo de hojas por nodo

min_samples_split = 2, # numero minimo de


datos para hacer un split

max_features = None, # si se quiere definir


un limite de features usadas

random_state = 0)

classifier.fit(X_train, y_train)

# Prediccion

y_pred = classifier.predict(X_test)

# Matriz de confusión

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

© Structuralia 182
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

# Feature importance

# Permite ver la importancia relativa de las variables de entrada y ver si

# alguna de ellas no es significativamente relevante

importance = classifier.feature_importances_

print(importance)

### Visualización

def visualize_classifier(model, X, y, ax=None, cmap='rainbow'):

ax = ax or plt.gca()

# Plot the points

ax.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=cmap,

clim=(y.min(), y.max()), zorder=3)

ax.axis('tight')

ax.axis('off')

xlim = ax.get_xlim()

ylim = ax.get_ylim()

xx, yy = np.meshgrid(np.linspace(*xlim, num=200),

np.linspace(*ylim, num=200))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)

# Create a color plot with the results

n_classes = len(np.unique(y))

contours = ax.contourf(xx, yy, Z, alpha=0.3,

levels=np.arange(n_classes + 1) - 0.5,

cmap=cmap, clim=(y.min(), y.max()),

183 © Structuralia
Data Mining, Machine Learning y Deep Learning - Aprendizaje supervisado (I)

zorder=1)

ax.set(xlim=xlim, ylim=ylim)

plt.title('Random Forest Classifier')

plt.show()

# Train

visualize_classifier(classifier, X_train, y_train)

# Test

visualize_classifier(classifier, X_test, y_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)

Ilustración 62 Fronteras de decisión sobre los datos de train

Ilustración 63 Frontera de decisión sobre los datos de test

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

También podría gustarte