Está en la página 1de 101

Ciencia del Dato

Fundamentals.

Profesora: Francisca Novoa Winder.


Programa Curso
1.- Aprendizaje Supervisado.

1. Conceptos básicos.
2. Árboles de decisión.
3. Entropía.
4. Información Gain.
5. Tipos de atributo.
6. Overfitting.
7. Evaluación: F-Score, curvas ROC, AUC y Lift (se verá aparte).
8. Clasificación Bayesianna.
9. Máquina de soporte vectorial.
10. K-vecinos más cercanos.
Programa Curso
2.- Aprendizaje no Supervisado.

1. Conceptos básicos.
2. K-means.
3. Clustering jerárquico.
Programa Curso
3.- Métricas.

1. Entropía.
2. Purity.
3. Accuracy.
4. Fuzzy c-means.
Programa Curso
4.-Aprendizaje Reforzado.

1. Definición.
2. Características.
3. Ventajas, Desventajas, Funcionamiento, Usos.
Aprendizaje Supervisado.
Aprendizaje Supervisado.
¿Qué es?
El aprendizaje supervisado corresponde a aquel tipo de modelo estadístico en los que se generan funciones a partir de un conjunto de ejemplos de
los cuales conocemos la salida deseada. Dicho de una forma más clara, en el aprendizaje supervisado el usuario humano, dispone de varios ejemplos
respecto de los cuales ya conoce su respuesta (en base a la historia) y los utiliza para entrenar el modelo, con el fin de dar (o aproximar) la respuesta
para todos los objetos que se nos presenten. La salida de la función puede ser un valor numérico (como en los problemas de regresión) o una etiqueta
de clase (como en los de clasificación).

¿Cuál es su objetivo?
El objetivo del aprendizaje supervisado es el de crear una función capaz de predecir el valor correspondiente a cualquier objeto de entrada válida
después de haber visto una serie de ejemplos, los datos de entrenamiento. Para ello, tiene que generalizar a partir de los datos presentados a las
situaciones no vistas previamente.
¿Cómo Funciona?

P a r a c o m pr e nde r de m a ne r a c la r a e l f u n c i o n a m i e n t o d e l
aprendizaje supervisado, pensemos en el siguiente ejemplo:
1.- Tenemos cuatro tipos distintos de fruta: 1 Manzanas que
pueden ser verdes y rojas; 2 Cítricos que pueden ser naranjas,
pomelos y limones; 3 Sandías y 4 Plátanos. Estos elementos
constituirán las etiquetas de frutas ya existentes y que conocemos
en base a la historia y con los que entrenaremos nuestro algoritmo
de aprendizaje supervisado (o automático). El algoritmo generará
un modelo que clasifique frutas, en razón de los 4 distintos grupos
que le enseñamos. Finalmente, podremos proporcionarle nuevos
conjuntos de datos, que nunca haya visto, en donde hay frutas
conocidas y otras nuevas, para que las clasifique según lo
aprendido en la fase de entrenamiento. Mientras más grupos de
frutas le enseños, mejor las clasificará.
Aprendizaje Supervisado.
¿Cuáles son sus ventajas?
1. Es posible crear un único algoritmo de tipo general, que pueda ser aplicado a la generación de conocimiento. Dicho de otro modo,
podemos diseñar un mecanismo muy bien definido, que dependa del tipo de problema al que debemos dar solución.
2. Este tipo de algoritmo nos da un porcentaje de seguridad aceptable respecto de lo que puede y no puede hacer.
3. En la fase de entrenamiento, es posible poder medir el porcentaje de acierto del algoritmo, pudiendo calibrarlo si fuese necesario, hasta
llegar a un porcentaje aceptable, hito que nos permite detener el entrenamiento.

¿Cuáles son sus desventajas?


1. En este caso, el proceso de entrenamiento, es lento y no es infalible, puesto que dependerá en gran medida de la elección de los casos
de entrenamiento, para que la generalización del algoritmo sea la adecuada.
2. Se hace imprescindible un arduo trabajo preliminar con el fin de preparar los casos que se usarán para el entrenamiento, los que pueden
ser bastantes (cientos, miles, millones) dependiendo de la complejidad del problema a resolver.
¿En Cuántos Tipos se Clasifica?
Utiliza dos técnicas:

1. Clasificación.

Utilizada para datos de tipo categórico, en los cuales los datos pueden separarse en clases de tipo específico.
Se usa cuando los datos pueden ser: etiquetados, categorizados o divididos en grupos o clases concretos.

Ejemplo: Correo electrónico legítimo o SPAM, tumor benigno o maligno, Género masculino o femenino, contextura delgada o gruesa, etc.

Correo Calificación crediticia


electrónico
Imágenes
médicas Formas
Reconocimiento del
Aprendizaje Supervisado.
¿En Cuántos Tipos se Clasifica?
1. Clasificación
Entre los algoritmos más comunes para clasificar, tenemos:

Arboles de Decisión.

Un Árbol de Decisión (o Árboles de Decisiones) es un método analítico que a través de una representación esquemática de las alternativas
disponibles, facilita la toma de mejores decisiones, especialmente cuando existen riesgos, costos, beneficios y múltiples opciones a considerar.
También es usado en modelos de regresión.

K-Vecino más Cercano.

El algoritmo clasifica cada dato nuevo en el grupo que corresponda, según tenga k vecinos más cerca de un grupo o de otro. Es decir, calcula la
distancia del elemento nuevo a cada uno de los existentes, y ordena dichas distancias de menor a mayor para ir seleccionando el grupo al que
pertenecer. Este grupo será, por tanto, el de mayor frecuencia con menores distancias.

Máquina de Soporte Vectorial.

Dado un conjunto de puntos, subconjunto de un conjunto mayor (espacio), en el que cada uno de ellos pertenece a una de dos posibles categorías, un
algoritmo basado en SVM construye un modelo capaz de predecir si un punto nuevo (cuya categoría desconocemos) pertenece a una categoría o a la
otra.
Aprendizaje Supervisado.
¿En Cuántos Tipos se Clasifica?
1. Clasificación
Entre los algoritmos más comunes para clasificar, tenemos:

Clasificación Bayesiana.

En términos simples, un clasificador de Naive Bayes asume que la presencia o ausencia de una característica particular no está relacionada con la
presencia o ausencia de cualquier otra característica, dada la clase variable. Por ejemplo, una fruta puede ser considerada como una manzana si es roja,
redonda y de alrededor de 7 cm de diámetro. Un clasificador de Naive Bayes considera que cada una de estas características contribuye de manera
independiente a la probabilidad de que esta fruta sea una manzana, independientemente de la presencia o ausencia de las otras características.

Análisis Discriminante.

Es una técnica estadística que se utiliza para clasificar a distintos individuos en grupos, o poblaciones, alternativos a partir de los valores de un conjunto
de variables sobre los individuos a los que se pretende clasificar. Cada individuo puede pertenecer a un solo grupo.

Regresión Logística.

Es un tipo de análisis de regresión utilizado para predecir el resultado de una variable categórica (una variable que puede adoptar un número limitado
de categorías) en función de las variables independientes o predictoras.
Aprendizaje Supervisado.
¿En Cuántos Tipos se Clasifica?
2. Regresión.

Utilizada para valores de tipo continuo.


Se usa para cuando se trabaja con intervalo de datos, si la naturaleza de la respuesta es un número real.

Ejemplo: Cambio de temperatura o fluctuaciones en la demanda de energía, etc.

Variaciones Fuga de clientes

Cambios de
energéticas
temperatura Calificación crediticia
Desgaste de
materiales
Entre los algoritmos más comunes para clasificar, tenemos:

Modelo de Regresión Lineal.

En estadística la regresión lineal o ajuste lineal es un modelo matemático usado para aproximar la relación de dependencia entre una variable
dependiente Y, las variables independientes Xi y un término aleatorio ε
Aprendizaje Supervisado –
K-Vecino más Cercano.
Los Vecinos Más Cercanos o K-NN (K Nearest Neighbors) es un método de clasificación supervisada (Aprendizaje, estimación basada en un conjunto
de entrenamiento y prototipos) que sirve para estimar la función de densidad F(x/Cj) de las predictoras x por cada clase Cj.

¿Cómo Funciona?
Este es un método de clasificación no paramétrico. Que estima el valor de la función de densidad de probabilidad o directamente la probabilidad a
posteriori de que un elemento x pertenezca a la clase Cj a partir de la información proporcionada por el conjunto de prototipos. En el proceso de
aprendizaje no se hace ninguna suposición acerca de la distribución de las variables predictoras.

En el reconocimiento de patrones, el algoritmo K-NN es usado como método de clasificación de objetos basados en un entrenamiento mediante
ejemplos cercanos en el espacio de los elementos K-NN es un tipo de “Lazy Learning”, donde la función se aproxima solo localmente y todo el
computo es diferido a la clasificación.

Los ejemplos de entrenamiento son vectores en un espacio característico multidimensional, cada ejemplo esta descrito en términos de P atributos
considerando q clases para la clasificación. Los valores de los atributos del i-esimo ejemplo (donde 1 <= i <= n) se representan por el vector ࣪ P-
dimensional Xi = (X1i,X2i,…,Xpi) E X.

El espacio es particionado en regiones por localizaciones y etiquetas de los ejemplos de entrenamiento. Un punto en el espacio es asignado a la clase
! si esta es la clase más frecuente entre los k ejemplos de entrenamiento más cercano. Generalmente se usa la distancia euclidiana.

La fase de entrenamiento del algoritmo consiste en almacenar los vectores característicos y las etiquetas de las clases de los ejemplos de
entrenamiento. En la fase de clasificación, la evaluación del ejemplo (del que no se conoce su clase) es representada por un vector en el espacio
característico. Se calcula la distancia entre los vectores almacenados y el nuevo vector, y se seleccionan los K ejemplos más cercanos. El nuevo
ejemplo es clasificado con la clase que más se repite en los vectores seleccionados.

Este método supone que los vecinos más cercanos nos dan la mejor clasificación y esto se hace utilizando todos los atributos; el problema de dicha
suposición es que es posible que 8 se tengan muchos atributos irrelevantes que dominen sobre la clasificación: dos atributos relevantes perderían
peso entre un conjunto de atributos irrelevantes.

Para corregir el posible sesgo se puede asignar un peso a las distancias de cada atributo, dándole así mayor importancia a los atributos más
relevantes. Otra posibilidad consiste en tratar de determinar o ajustar los pesos con ejemplos conocidos de entrenamiento. Finalmente, antes de
asignar pesos es recomendable identificar y eliminar los atributos que se consideran irrelevantes
Aprendizaje Supervisado –
K-Vecino más Cercano.
En síntesis, el método K-NN se resumen en dos algoritmos:

Algoritmo de entrenamiento.
Algoritmo de Clasificación.

Elección del K.

La mejor elección de K depende fundamentalmente de los datos; generalmente, valores grandes de K reducen el efecto de ruido en la clasificación,
pero crean límites entre clases parecidas. Un buen K puede ser seleccionado mediante una optimización de uso. El caso especial en que la clase es
predicha para ser la clase más cercana al ejemplo de entrenamiento (cuando K=1) es llamada Nearest Neighbor Algorithm, Algoritmo del vecino más
cercano. El desempeño de este algoritmo puede ser severamente degradada por la presencia de ruido o características irrelevantes, o si las escalas de
características no son consistentes con lo que uno considera importante.

Métricas de Distancia.

A continuación menciono las 4 Métricas de Distancias que se utilizaran para testear el modelo K-NN:

Distancia Euclidiana: Es la distancia en línea recta o la trayectoria más corta posible entre dos puntos.

Distancia Chebyshev: Es una métrica definida en un espacio vectorial donde la distancia entre dos vectores es el mayor de sus diferencias a lo largo
de cualquier dimensión de coordenadas.

Distancia Manhattan: La función de la distancia Manhattan calcula la distancia que se puede recorrer para llegar de un punto de datos a la otra si un
camino en forma de rejilla es seguido. La distancia Manhattan entre dos elementos es la suma de las diferencias de sus correspondientes componentes.

Distancia Kullback-Leibler: Es una medida no simétrica de la similitud o diferencia entre dos funciones de distribución de probabilidad P y Q. KL mide
el número esperado de extra bits requeridos en muestras de código de P cuando se usa un código basado en Q, en lugar de un código basado en P.
Generalmente P representa la "verdadera" distribución de los datos, observaciones, o cualquier distribución teórica. La medida Q generalmente
representa una teoría, modelo, descripción o aproximación de P.
Aprendizaje Supervisado –
K-Vecino más Cercano.
Validación del Estudio.

Los algoritmos de Máquinas de Aprendizaje o Machine Learning (ML) dividen su clasificación en tareas binarias, multi-clase, multi-etiquetada y
jerárquica. Para ello consideraremos una serie de indicadores derivados de la matriz de confusión que corresponden a las características específicas de
los datos.

Las Maquinas de Aprendizaje supervisadas permite el acceso a las etiquetas de los datos durante las etapas de entrenamiento. Consideremos etiquetas
categóricas cuando los datos de entrada son ࣲX1,….,Xnࣲ tienen que ser asignados en clases predefinidas C1,…Cl. Para nuestro estudio utilizaremos la
clasificación de Multi-Clase.

Multi-Clase: La entrada debe ser clasificada en uno y solo uno, las κ clases no se superponen. Los problemas Multi-Clase incluyen la identificación de
dígitos manuscritos en un conjunto de datos, en el reconocimiento de patrones. En cuanto al caso binario, la categorización Multi-Clase puede ser
objetiva o subjetiva, definida o ambigua.

Medidas de desempeño para la clasificación.

La exactitud de una clasificación puede ser evaluado calculando el número de ejemplos de la clase correctamente reconocidos (true positives), el
número de ejemplos correctamente reconocidos que no pertenecen a la clase (true negatives), los ejemplos que fueron incorrectamente asignados a la
clase (false positives) y los que no fueron reconocidos como ejemplos de la clase (false negatives). Estos cuatro cargos constituyen una matriz de
confusión.

Clases de Datos Clasificado como Clasificado como


Positivo Negativo tp fn
Positivos Verdadero positivo (tp) Falso Negativo (fn) fp tn
Negativos Falso Positivo (fp) Verdadero Negativo
(tn)
Aprendizaje Supervisado –
K-Vecino más Cercano.
Validación del Estudio.

Los algoritmos de Máquinas de Aprendizaje o Machine Learning (ML) dividen su clasificación en tareas binarias, multi-clase, multi-etiquetada y
jerárquica. Para ello consideraremos una serie de indicadores derivados de la matriz de confusión que corresponden a las características específicas de
los datos.

Las Maquinas de Aprendizaje supervisadas permite el acceso a las etiquetas de los datos durante las etapas de entrenamiento. Consideremos etiquetas
categóricas cuando los datos de entrada son X1,….,Xn tienen que ser asignados en clases predefinidas C1,…,Cl. Para nuestro estudio utilizaremos la
clasificación de Multi-Clase.

Multi-Clase: La entrada debe ser clasificada en uno y solo uno, las κ clases no se superponen. Los problemas Multi-Clase incluyen la identificación de
dígitos manuscritos en un conjunto de datos, en el reconocimiento de patrones. En cuanto al caso binario, la categorización Multi-Clase puede ser
objetiva o subjetiva, definida o ambigua.

Medidas de desempeño para la clasificación.

La exactitud de una clasificación puede ser evaluado calculando el número de ejemplos de la clase correctamente reconocidos (true positives), el
número de ejemplos correctamente reconocidos que Elno pertenecen
patrón que seaestá
la clase (true negatives),
buscando los ejemplos
y que se desea quees
clasificar fueron incorrectamente
el círculo asignados
verde. Para k = 3 esteaes
la
clase (false positives) y los que no fueron reconocidos como ejemplos de la clase (false negatives). Estos cuatro cargos constituyen una matriz
clasificado con la clase triángulo, ya que hay solo 1 cuadrado y 2 triángulos y se considera el de
confusión. número mayor de elementos, dentro del círculo que los contiene. Si k = 5 este es clasificado con la
clase cuadrado, ya que hay 2 triángulos y 3 cuadrados, dentro del círculo externo.
Ejemplo. K=5

K=3
Aprendizaje Supervisado –
K-Vecino más Cercano.
Ejemplo en R.

Carga de paquetes y librerías necesarios.

install.packages(c("car","lubridate","readr","sqldf"))

Carga de las librerías necesarias.

library(class) ## contiene la function knn

Consideraciones antes de comenzar.

Como se calcula la similitud con respecto a la distancia, debemos tener en mente que las distancias entre variables deben ser comparables. Si usamos
un rango de medida en una variable y otro muy distinto en otra, las distancias no están normalizadas y estaremos comparando peras con manzanas.

Para realizar un análisis con knn tenemos siempre de normalizar los datos, re-escalar todas las variables para que las distancias sean equiparables.
Este proceso se suele llamar: estandarización de los datos.

Otro importante asunto es que hay que eliminar los NA de los datos, pues afectan a los cálculos de distancia.

Por último, este modelo es válido solo para casos con pocas dimensiones en los datos, pocos grados de libertad. Cuando se incrementa la dimensión
espacial de los datos, la complejidad y el cálculo se hacen inviables.

Definimos el data set con el que vamos a trabajar. De igual modo, podríamos importar un archivo csv, Excel o bien conectarnos por medio de
ODBC a una base de datos.

tabla_alumnos<-data.frame(trabajo=c(10,4,6,7,7,6,8,9,2,5,6,5,3,2,2,1,8,9,2,7))
tabla_alumnos$examen<- c(9,5,6,7,8,7,6,9,1,5,7,6,2,1,5,5,9,10,4,6)
Aprendizaje Supervisado –
K-Vecino más Cercano.
Calculamos el interés de los alumnos en la clase, donde 1 es el máximo interés y 3 es el mínimo interés.

tabla_alumnos$interes<- c(1,2,1,1,1,2,2,1,3,3,3,2,3,3,2,2,1,1,3,3)
str(tabla_alumnos)

El resultado es:

'data.frame': 20 obs. of 3 variables:


$ trabajo: num 10 4 6 7 7 6 8 9 2 5 ...
$ examen : num 9 5 6 7 8 7 6 9 1 5 ...
$ interes: num 1 2 1 1 1 2 2 1 3 3 ...

Agrupamos a los alumnos que tuvieron mayor nota lo que puede representar mayor interés en la clase.

aggregate(examen ~ interes, data = tabla_alumnos, mean)

interes examen
1 1 8.285714
2 2 5.666667
3 3 3.714286

Mostremos los datos hasta este punto.

head(tabla_alumnos)

trabajo examen interes


1 10 9 1
2 4 5 2
3 6 6 1
4 7 7 1
5 7 8 1
6 6 7 2
Aprendizaje Supervisado –
K-Vecino más Cercano.
Creamos un vector de etiquetas, el cual deberá coincidir con la variable de interés del alumno por la clase. Clasificamos la próxima señal,
cuyos datos se guardarán en next_sign.

nuevo_alumno<-data.frame(trabajo=c(2,9),examen=c(3,8))

Aplicamos el modelo K-n vecino más cercano.

VecinoMasCercano <-knn(train = tabla_alumnos[-c(3)], test = nuevo_alumno, cl = tabla_alumnos$interes)


VecinoMasCercano

[1] 3 1
Levels: 1 2 3

Como ejercicio adicional, podemos incrementar el número de vecinos que se analizan con el parámetro k.
VecinoMasCercano <-knn(train = tabla_alumnos[-c(3)], test = nuevo_alumno, cl = tabla_alumnos$interes, k = 4)

[1] 3 1
Levels: 1 2 3

Graficamos.

plot(VecinoMasCercano)

Estandarización del Modelo.

Para otros casos en los que las variables no tengan la misma escala, es preferible para mejorar el modelo normalizar las columnas de datos numéricos.
Esto puede hacerse con muchas funciones predefinidas como por ejemplo la función scale() o data.Normalization() esta del paquete clusterSim. Hay
que tener en cuenta que cuando normalizamos los valores de hechos que pasamos a predict(), deben ser normalizados con el mismo algoritmo.

Normalizamos la tabla de datos.


tabla_alumnos.nor<-scale(tabla_alumnos)
Aprendizaje Supervisado –
K-Vecino más Cercano.
El resultado sería.

## num [1:20, 1:3] 1.659 -0.529 0.201 0.565 0.565 ...


## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr [1:3] "trabajo" "examen" "interes"
## - attr(*, "scaled:center")= Named num [1:3] 5.45 5.9 2
## ..- attr(*, "names")= chr [1:3] "trabajo" "examen" "interes"
## - attr(*, "scaled:scale")= Named num [1:3] 2.743 2.553 0.858
## ..- attr(*, "names")= chr [1:3] "trabajo" "examen" "interes“

Extraemos los atributos de centro y scala de la transformación

attr(tabla_alumnos.nor,"scaled:center")

# trabajo examen interes


## 5.45 5.90 2.00

attr(tabla_alumnos.nor, "scaled:scale")

## trabajo examen interes


## 2.7429335 2.5526044 0.8583951

Transformamos un una nota examen de 9 para pronostico posterior es la 2 col


nota.t<-scale(9,
attr(tabla_alumnos.nor,"scaled:center")[2],
attr(tabla_alumnos.nor, "scaled:scale")[2])

nota.t # valor de nota exam =9 transformado


Aprendizaje Supervisado –
K-Vecino más Cercano.
El resultado es.

## [,1]
## [1,] 1.214446
## attr(,"scaled:center")
## examen
## 5.9
## attr(,"scaled:scale")
## examen
## 2.552604
Aprendizaje Supervisado –
Clasificación Bayesiana
En un sentido amplio, los modelos de Naive Bayes son una clase especial de algoritmos de clasificación de Aprendizaje Automático, o Machine
Learning, tal y como nos referiremos de ahora en adelante. Se basan en una técnica de clasificación estadística llamada “teorema de Bayes”. Es un
modelo de predicción basado en la probabilidad Bayesiana. El modelo es muy simple, pero poderoso, en cuanto que es resultado directo de los datos y
su tratamiento con simple estadística bayesiana de la probabilidad condicionada. Hay que tener en cuenta que se asume, por simplificación que las
variables son todas sucesos independientes.

El paradigma clasificatorio en el que se utiliza el teorema de Bayes en conjunción con la hipótesis de independencia condicional de las variables
predictoras dada la clase se conoce bajo diversos nombres que incluyen los de idiota Bayes (Ohmann y col. 1988), Näive Bayes (Kononenko, 1990),
simple Bayes (Gammerman y Thatcher, 1991) y Bayes independiente (Todd y Stamper, 1994). A pesar de tener una larga tradición en la comunidad de
reconocimiento de patrones (Duda y Hart, 1973) el clasificador Näıve Bayes aparece por primera vez en la literatura del aprendizaje automático a finales
de los ochenta (Cestnik y col. (1987)) con el objetivo de comparar su capacidad predictiva con la de métodos más sofisticados. De manera gradual los
investigadores de esta comunidad de aprendizaje automático se han dado cuenta de su potencialidad y robustez en problemas de clasificación
supervisada. Por lo tanto, vamos a efectuar una revisión del paradigma Näıve Bayes, el cual debe su nombre a las hipótesis tan simplificadoras
–independencia condicional de las variables predictoras dada la variable clase– sobre las que se construye dicho clasificador.
¿Cómo Funciona?
Proporcionan una manera fácil de construir modelos con un comportamiento muy bueno debido a su simplicidad. Lo consiguen
proporcionando una forma de calcular la probabilidad ‘posterior’ de que ocurra un cierto evento A, dadas algunas probabilidades de eventos
‘anteriores’.
El modelo bayesiano de probabilidad condicionada se representa como: 

P(A|B)=P(A∩B)/P(B)P(A|B)=P(A∩B)/P(B)

Es decir, la probabilidad de que se de el caso A dado B es igual a la


probabilidad de la intersección de A con B (A∩B) partido la probabilidad
de B.

Estirando esta formulación llegaríamos al teorema de Bayes cuya


expresión más típica es la siguiente:

P(A|B)=P(B|A)∗P(A)/P(B)
Aprendizaje Supervisado –
Clasificación Bayesiana
Algoritmo Naive Bayes Supervisado.

A continuación se listan los pasos que hay que realizar para poder utilizar el algoritmo Naive Bayes en problemas de clasificación como el mostrado en
el apartado anterior.

1.Convertir el conjunto de datos en una tabla de frecuencias.


2.Crear una tabla de probabilidad calculando las correspondientes a que ocurran los diversos eventos.
3.La ecuación Naive Bayes se usa para calcular la probabilidad posterior de cada clase.
4.La clase con la probabilidad posterior más alta es el resultado de la predicción.

Puntos fuertes y débiles de Naive Bayes.

Los puntos fuertes principales son:

•Un manera fácil y rápida de predecir clases, para problemas de clasificación binarios y multiclase.
•En los casos en que sea apropiada una presunción de independencia, el algoritmo se comporta mejor que otros modelos de clasificación, incluso con
menos datos de entrenamiento.
•El desacoplamiento de las distribuciones de características condicionales de clase significan que cada distribución puede ser estimada
independientemente como si tuviera una sola dimensión. Esto ayuda con problemas derivados de la dimensionalidad y mejora el rendimiento.

Los puntos débiles principales son:

•Aunque son unos clasificadores bastante buenos, los algoritmos Naive Bayes son conocidos por ser pobres estimadores. Por ello, no se deben tomar
muy en serio las probabilidades que se obtienen.
•La presunción de independencia Naive muy probablemente no reflejará cómo son los datos en el mundo real.
•Cuando el conjunto de datos de prueba tiene una característica que no ha sido observada en el conjunto de entrenamiento, el modelo le asignará una
probabilidad de cero y será inútil realizar predicciones. Uno de los principales métodos para evitar esto, es la técnica de suavizado, siendo la
estimación de Laplace una de las más populares.
Aprendizaje Supervisado –
Clasificación Bayesiana
Ejemplo:

Consideremos el caso de dos compañeros que trabajan en la misma oficina: Alicia y Bruno.
Sabemos que:

•Alicia viene a la oficina 3 días a la semana.


•Bruno viene a la oficina 1 día a la semana.

Esta sería nuestra información “anterior”.


Inicialmente conocíamos las probabilidades P(Alicia) y P(Bruno), y después inferíamos las
Estamos en la oficina y vemos pasar delante de nosotros a alguien muy rápido, tan rápido
probabilidades de P(rojo|Alicia) y P(rojo|Bruno).
que no sabemos si es Alicia o Bruno.
De forma que las probabilidades reales son:
Dada la información que tenemos hasta ahora y asumiendo que solo trabajan 4 días a la
semana, las probabilidades de que la persona vista sea Alicia o Bruno, son:

•P(Alicia) = 3/4 = 0.75


•P(Bruno) = 1/4 = 0.25

Cuando vimos a la persona pasar, vimos que él o ella llevaba una chaqueta roja. También
sabemos lo siguiente:

•Alicia viste de rojo 2 veces a la semana.


•Bruno viste de rojo 3 veces a la semana.
Formalmente, el gráfico previo sería:
Así que, para cada semana de trabajo, que tiene cinco días, podemos inferir lo siguiente:

•La probabilidad de que Alicia vista de rojo es → P(Rojo|Alicia) = 2/5 = 0.4


•La probabilidad de que Bruno vista de rojo → P(Rojo|Bruno) = 3/5 = 0.6

Entonces, con esta información, ¿a quién vimos pasar? (en forma de probabilidad).

Esta nueva probabilidad será la información ‘posterior’.


Aprendizaje Supervisado –
Clasificación Bayesiana.
Ejemplo en R.

Carga de paquetes y librerías necesarios.

install.packages(c("car","lubridate","readr","sqldf", "naivebayes"))

Carga de las librerías necesarias.

library(naivebayes) ## contiene la function para clasificación Bayesiana

Consideraciones antes de comenzar.

La tabla_1 que vamos a crear contiene 3 variables: la hora del día, el lugar donde está Juan a esa hora, y otra columna que nos indica si es o no fin de
semana con un valor lógico (TRUE o FALSE).

Definimos el data set con el que vamos a trabajar. De igual modo, podríamos importar un archivo csv, Excel o bien conectarnos por medio de
ODBC a una base de datos.

# leemos la base de datos


# tabla_1<-read.csv("tabla_1.csv",header = TRUE)
Aprendizaje Supervisado –
Clasificación Bayesiana.
## hora lugar finde
# vamos a crear el ejemplo de cero: CREAMOS UNA TABLA DE DATOS ## 1 8 casa TRUE
tabla_1<- ## 2 14 restaurante TRUE
data.frame(hora=c(8,14,24,8,14,24,8,14,24,8,14,24,8,14,24,8,14,24,24,24)) ## 3 24 casa TRUE
tabla_1$lugar<-c("casa","restaurante","casa", ## 4 8 trabajo FALSE
"trabajo","trabajo","casa", ## 5 14 trabajo FALSE
"trabajo","trabajo","casa", ## 6 24 casa FALSE
"casa","restaurante","casa",
"trabajo","trabajo","casa", Vemos como ejemplo el numero de registros de hora según el lugar.
"casa","restaurante","casa","cine","cine")
tabla_1$finde<-c(T,T,T, table(tabla_1$hora,tabla_1$lugar)
F,F,F,
F,F,F, ##
T,T,T, ## casa cine restaurante trabajo
F,F,F, ## 8 3 0 0 3
T,T,T, ## 14 0 0 3 3
T,F ## 24 6 2 0 0
)
Como vemos, es una tabla con 20 registros y 3 variables en columnas, sobre la que
str(tabla_1) queremos practicar pronósticos bayesianos de probabilidad condicionada. Cuando
cargamos el paquete y librería naivebayes, su objetivo era el de crear un modelo de
El resultado sería. pronóstico de la variable dependiente lugar a partir de las variables independientes
hora y finde. Este modelo nos diría por ejemplo la probabilidad de que: sabiendo la
## 'data.frame': 20 obs. of 3 variables: hora y si es o no fin de semana, Juan se encuentre en un lugar determinado. Como
## $ hora : num 8 14 24 8 14 24 8 14 24 8 ... vimos en las consideraciones previas, los modelos de pronostico bayesiano, y en
## $ lugar: chr "casa" "restaurante" "casa" "trabajo" ... particular naivebayes funcionan muy mal con datos numéricos continuos, y vamos a
## $ finde: logi TRUE TRUE TRUE FALSE FALSE FALSE ... ver la prueba, pues crearemos un modelo con la variable hora tal cual, y después
haremos el mismo modelo con la variable hora convertida en factor. Primero creamos
head(tabla_1) la formula de modelo con la función naive_bayes() y luego definimos un hecho, una
ocurrencia concreta de los parámetros y llamamos a la función predict(). Esta función
es común a la mayoría de los modelos de predictivos, y sus argumentos son el nombre
Con lo que resulta. del modelo y un hecho almacenado como data.frame. Si añadimos el argumento
type="prob nos da el resultado como pronostico probabilístico y si no, solo el
pronóstico más probable.
Aprendizaje Supervisado –
Clasificación Bayesiana.
Ejecutando predict(modelo) tenemos los resultados de pronostico para
Creamos el modelo de pronóstico. cada registro de datos.

m <- naive_bayes(lugar ~ hora+finde, data = tabla_1)#, laplace = 1) tabla_1$p=predict(m)


head(tabla_1)
Lo graficamos.
## hora lugar finde p
## 1 8 casa TRUE casa
## 2 14 restaurante TRUE restaurante
## 3 24 casa TRUE cine
## 4 8 trabajo FALSE trabajo
## 5 14 trabajo FALSE trabajo
## 6 24 casa FALSE cine

Pero si queremos un hecho concreto: creamos un hecho a priori sobre el que


queremos pronosticar el resultado como el modelo es lugar ~ hora+finde,
aportamos un dato de hora y otro de finde. En este caso queremos pronosticar
donde se encuentra Juan a las 14 horas un día laborable.

h<-data.frame(hora= 24, finde=T)


table(tabla_1$lugar,tabla_1$hora+tabla_1$finde)

##
## 8 9 14 15 24 25
## casa 03 0 0 3 3
## cine 00 0 0 1 1
## restaurante 0 0 0 3 0 0
## trabajo 3 0 3 0 0 0

Llamamos a la función de predicción.


predict(m,h)

## [1] cine
## Levels: casa cine restaurante trabajo
Aprendizaje Supervisado –
Clasificación Bayesiana.
Como hemos visto al transformar en factor la variable numérica
continua, hemos realizado un pronostico más acorde con los datos.

Corrección de Laplace.

En muchas ocasiones los datos no contienen muestras a priori de todas las


combinaciones de variables posibles, por lo que las probabilidades de
casos raros salen excesivamente bajas. Para corregir esto el modelo
naiveBayes tiene la opción de añadir en la fórmula el argumento de
laplace=1, en el que indicamos que, al menos, se debe contar con una
aparición de cada posible combinación de factores. Este parámetro se
puede aumentar a criterio del investigador, y permite incorporar casos raros
dentro del pronóstico que de otra forma, por la simplificación del modelo de
Bayes, darían probabilidad cero.

Por ejemplo en los datos de Juan y la ubicación según las horas, no


tenemos ningún registro de que vaya a trabajar en fin de semana, pero eso
no significa que no tengamos cierta probabilidad, lo que se podría solventar
añadiendo al modelo laplace=1.

Veamos los cambios al reformular el modelo con laplace. Gráficamente se


aprecia que, por ejemplo, la probabilidad de ir a restaurante entre semana
pasa de cero a una cantidad pequeña, y de trabajar el fin de semana igual
(pasa de cero a una proporción).

Cargamos la librería.
require(naivebayes) Cambiamos el modelo añadiendo laplace con al menos una ocurencia por
evento.
Modelo de pronostico sin Laplace.
m <- naive_bayes(lugar ~ hora+finde, data = tabla_1) m1 <- naive_bayes(lugar ~ hora+finde, data = tabla_1, laplace=1)
plot(m) plot(m1)
Aprendizaje Supervisado –
Clasificación Bayesiana. ## casa cine restaurante trabajo
## [1,] 0.8571429 0.1428571 2.165259e-12 NaN

predict(m1,h,type="prob")

## casa cine restaurante trabajo


## [1,] 0.8790698 0.1209302 1.91539e-39 4.420521e-77

¿ Dónde está Juan si son las 14 horas en fin de semana?


h$hora=8
h$finde=T
predict(m,h,type="prob")
Aprendizaje Supervisado –
Arboles de Decisión.
Un árbol de decisión es una estructura ramificada que muestra las diferentes opciones y sus consecuencias. Los puntos en los que hay que tomar
decisiones se muestran como nodos, las ramas unen estos nodos y las decisiones últimas son las hojas, donde el camino termina (también se
denominan nodos terminales). Nos ayudan a tomar la decisión “más acertada”, desde un punto de vista probabilístico, ante un abanico de posibles
decisiones. Permite desplegar visualmente un problema y organizar el trabajo de cálculos que deben realizarse.

¿Cómo Funciona?

Terminología.

Nodo de decisión: Indica que una decisión necesita tomarse


en ese punto del proceso. Está representado por un
cuadrado.

Nodo de probabilidad: Indica que en ese punto del proceso


ocurre un evento aleatorio. Está representado por un círculo.

Rama: Nos muestra los distintos caminos que se pueden


emprender cuando tomamos una decisión o bien ocurre
algún evento aleatorio.
Ejemplo: Conceder un Préstamo:
Pasos.

1. Definir el problema.
2. Dibujar el árbol de decisión.
3. Asignar probabilidades a los eventos aleatorios.
4. Estimar los resultados para cada combinación posible de
alternativas.
5. Resolver el problema obteniendo como solución la ruta
que proporcione la política óptima.
Aprendizaje Supervisado –
Arboles de Decisión.
Ejemplo:

Una compañía de seguros nos ofrece una indemnización por accidente de 210.000$. Si no aceptamos la oferta y decidimos ir a juicio podemos obtener
185.000$, 415.000$ o 580.000$ dependiendo de las alegaciones que el juez considere aceptables. Si perdemos el juicio, debemos pagar las costas que
ascienden a 30.000$. Sabiendo que el 70% de los juicios se gana, y de éstos, en el 50% se obtiene la menor indemnización, en el 30% la intermedia y
en el 20% la más alta, determinar la decisión más acertada.
Aprendizaje Supervisado –
Arboles de Decisión.
Ventajas.

•Toma las ventajas de la estructura consecutiva de las ramas del árbol de decisión, de tal forma que se identifican de manera inmediata el orden de
verificación de las condiciones y las acciones que se deben llevar a cabo.
•Las condiciones y las acciones del árbol de decisión se encuentran en ciertas ramas pero no en otras, a diferencia de las tablas de decisión, donde
todas forman parte de la misma tabla.
•Al compararse con las tablas los árboles de decisión se entienden con más facilidad en una organización y son apropiadas como un método de
comunicación.
•Plantea el problema para que todas las opciones sean analizadas.
•Analiza las consecuencias de llevar a cabo una alternativa.
•Facilita la interpretación de la decisión adoptada.
•Muestra un esquema de coste de las distintas alternativas
•Nos lleva a adoptar la mejor alternativa con la información existente

Desventajas.

•Las reglas de asignación son bastante sencillas a pequeñas perturbaciones en los datos.
•Dificultad para elegir un árbol óptimo.
•Ausencia de una función global de las variables y por lo tanto pérdida de la representación.
•Los árboles de decisión requieren un gran número de datos de los que muchas veces no disponemos.

Limitaciones.

•El método es valido si el decisor utiliza como criterio decisor maximizar el valor esperado.
•El método exige que el decisor pueda soportar el riesgo de ruina.
•En caso de que los resultados no sean temporalmente homogéneos habrán de ser actualizados una misma fecha.
Aprendizaje Supervisado –
Arboles de Decisión.
Ejemplo en R.

Existen varios paquetes de R que permiten hacer árboles de decisión.

rpart

La librería rpart hace árboles de decisión a partir de tablas. La función principal es rpart() que crea, a partir de un conjunto de datos, y de una fórmula de
predicción, un árbol de decisión que puede usarse para pronosticar con la función predict.

Para estos ejemplos vamos a inventar nuevamente unos datos. Tenemos una tabla en la que vienen la altura del padre, de la madre y de un hijo. Y
queremos ver su relación.

Carga de paquetes y librerías necesarios.

install.packages(c("car","lubridate","readr","sqldf", "knitr", "rpart.plot"))

Carga de las librerías necesarias.

library(rpart)
library(rpart.plot)
Aprendizaje Supervisado –
Arboles de Decisión.
Definimos el data set con el que vamos a trabajar. De igual modo, podríamos importar un archivo csv, Excel o bien conectarnos por medio de
ODBC a una base de datos.

# una tabla con alturas del padre la madre, el sexo del hijo y la altura
redondea5<-function(x,base=5){
as.integer(base*round(x/base))
}

a.padre<- redondea5(rnorm(1000, 168, 25),10)


a.madre<- redondea5(rnorm(1000, 150, 10),10)
s.hijo<-factor(rbinom(1000,1,0.5), levels=c(0,1),labels=c("M","F"))
# creo data.frame
t.alturas<-data.frame(a.padre,a.madre,s.hijo)
# Se calcula la altura del hijo con esta formula
t.alturas$a.hijo<-ifelse(t.alturas$s.hijo == "M",
(t.alturas$a.padre +t.alturas$a.madre)*rnorm(1,1,0.07)/2,
(t.alturas$a.padre +t.alturas$a.madre)*rnorm(1,1,0.05)/2)
t.alturas$a.hijo<-redondea5(t.alturas$a.hijo,10)
str(t.alturas)

Resultando.

## 'data.frame': 1000 obs. of 4 variables:


## $ a.padre: int 160 210 140 180 200 160 190 130 180 180 ...
## $ a.madre: int 140 160 160 150 160 150 140 150 160 140 ...
## $ s.hijo : Factor w/ 2 levels "M","F": 1 1 2 1 2 1 1 2 1 1 ...
## $ a.hijo : int 160 200 160 180 190 170 180 150 180 170 ...

knitr::kable(head(t.alturas,10), "markdown")
Aprendizaje Supervisado –
Arboles de Decisión.
Creamos un modelo de clasificación con rpart en el que intervengan
todas las variables, el coeficiente cp nos extiende o acorta el árbol,
simplifica resultados.

model.alturas1 <- rpart(a.hijo ~ .,


data = t.alturas, method = "class", cp = .02)

Pintamos el modelo.

rpart.plot(model.alturas1, fallen.leaves = FALSE,


main = "Arbol de decision de alturas hijo\n(en funcion altura
padres)\n",
shadow.col = "gray")

Hacemos un pronóstico.

h2<-data.frame(a.padre= c(190,150),a.madre= c(180,140),s.hijo=


c("M","M"))
predict(model.alturas1, h2,type = "class")

## 1 2
## 190 150
## Levels: 120 130 140 150 160 170 180 190 200 210
Aprendizaje Supervisado –
Arboles de Decisión.
Ejemplo en R.

Ejemplo 2

Vamos a ver otro ejemplo con los datos del Titanic que trae R por defecto.

Carga de paquetes y librerías necesarios.

install.packages(c("car","lubridate","readr","sqldf", "knitr", "rpart.plot"))

Carga de las librerías necesarias.

library(rpart)
library(rpart.plot)

Carga de los Datos.

data(ptitanic)

sobrevive.model <- rpart(survived ~ ., data = ptitanic, cp = .02) # cp = .02 for small


demo tree

Representamos el modelo.

rpart.plot(sobrevive.model,
main = "Supervivientes del Titanic \n (respuesta binaria)")
Aprendizaje Supervisado –
Arboles de Decisión.
Ejemplo en R.

Ejemplo 2

Representamos el modelo de otra forma.

rpart.plot(sobrevive.model, type = 2, clip.right.labs = FALSE,


branch = .6,
box.palette = c( "red","green"), # override default GnBu palette
main = "Supervivientes del Titanic \n")
Aprendizaje Supervisado –
Arboles de Decisión.
Overfitting.

Los árboles de decisión son bastante problemáticos con la sobrestimación de parámetros, pues la metodología obliga siempre a divisiones paralelas a los
ejes de variables y puede generar muchas ramas, pese a que el modelo puede ser muy sencillo. Son necesarias varias acciones previas siempre antes de
emprender la clasificación:

1. Simplificar los datos, normalizar o realizar acciones que agrupen los datos y eviten la multiplicación de casos cruzados. Por ejemplo el simple hecho de
redondear los valores numéricos a base 5 o 10 , puede eliminar de golpe miles de opciones irrelevantes.

2. Usar los parámetros de rpart para simplificar el modelo. Esto se hace con el argumento rpart.control(cp= 0.2, maxdepth = 30, minsplit = 20) de varias
formas:

cp es un control global que simplifica todo


maxdepth indica el máximo numero de ramas
minsplit indica el numero mínimo de ocurrencias de ese conjunto para considerarlo en un grupo.

3. Otro aspecto fundamental es que se recomienda dividir los datos de partida en dos conjuntos, uno con el 75% de los registros para entrenamiento y otro
con el 25% de los datos para test o comprobación del ajuste del modelo. Esto nos hace simplificar y no sobredimensionar el modelo.

La función sample() es muy útil en la tarea de seleccionar una muestra de test y otra de entrenamiento.

Ejemplo de división de una muestra (contamos el num de registro de la base de datos del titanic)

nrow(ptitanic)

## [1] 1309
Aprendizaje Supervisado –
Arboles de Decisión.
Calculamos el 75%. Creamos un modelo de supervivencia en el Titanic.

num_reg_entrena<-as.integer(0.75*nrow(ptitanic)) sobrevive.model <- rpart(survived ~ ., data = titanic_train, cp = .02)

Creamos una muestra aleatoria de registros de entrenamiento. Ahrora hacemos predicciones sobre el grupo de test.

v_titanic_train <- sample(nrow(ptitanic), num_reg_entrena) titanic_test$pred <- predict(sobrevive.model,titanic_test, type = "class")


head(titanic_test)
Creamos el conjunto de registros de entrenamiento.
## pclass survived sex age sibsp parch pred
titanic_train <- ptitanic[v_titanic_train,] ## 2 1st survived male 0.9167 1 2 survived
head(titanic_train) ## 5 1st died female 25.0000 1 2 survived
## 6 1st survived male 48.0000 0 0 died
## pclass survived sex age sibsp parch ## 7 1st survived female 63.0000 1 0 survived
## 562 2nd died male 59 0 0 ## 11 1st died male 47.0000 1 0 died
## 1077 3rd died female NA 0 0 ## 13 1st survived female 24.0000 0 0 survived
## 202 1st died male 54 0 0
## 329 2nd died male 34 1 0 Examinamos los resultados con la matriz de confusión.
## 1107 3rd died female 41 0 5
## 1219 3rd died male 30 0 0 table(titanic_test$pred,titanic_test$survived)

Creamos los datos de comprobación o test (notese el -). ##


## died survived
titanic_test <- ptitanic[-v_titanic_train,] ## died 193 66
## survived 10 59
Vamos a crear el modelo y entrenarlo.
Calculamos la bondad del modelo sobre el grupo de test.

100*mean(titanic_test$pred==titanic_test$survived)

## [1] 76.82927 (Como vemos el 77 % de ajuste es un valor alto, pero no


infalible.)
Aprendizaje Supervisado –
Arboles de Decisión.
Poda de los Arboles.

Dada la facilidad con la que un árbol se complica, muchos


paquetes tienen funciones especiales para cortar, limitar y
optimizar el tamaño y la forma de los arboles. Por ejemplo
c o n la libr e r ía r pa r t lo po de m o s ha c e r lim i t a n d o l a
profundidad del árbol y el número de divisiones máximo. El
proceso puede hacerse antes o después de crear el árbol,
en lo que llamamos pre y post poda de control. En concreto
la librería rpart contiene un parámetro que hemos estado
usando el cp, que controla la complejidad del árbol.

# Ejemplo de pre-poda en rpart


require(rpart)
control.poda <- rpart.control(maxdepth = 2, minsplit = 10)

Titanic.model <- rpart(survived ~ .,


data = titanic_train,
method = "class",
control = control.poda)

rpart.plot(Titanic.model)
# cambiando los parametros de poda el modelo es
diferente:
control.poda <- rpart.control(maxdepth = 4)
Titanic.model <- rpart(survived ~ .,
data = titanic_train,
method = "class",
control = control.poda)

rpart.plot(Titanic.model)
Aprendizaje Supervisado –
Arboles de Decisión.
Ejemplo de post poda.

EL parámetro cp, controla la post poda y podemos ver


su influencia dibujando la grafica de cp

plotcp(Titanic.model)

Y simplificar el modelo anterior ya calculado, como


apreciamos a partir de cp=0.1 el modelo se simplifica
mucho.

rpart.plot(prune(Titanic.model, cp = 0.10))
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
Una Máquina de Soporte Vectorial (SVM) aprende de la superficie decisión de dos clases distintas de los puntos de entrada. Como un clasificador de
una sola clase, la descripción dada por los datos de los vectores de soporte es capaz de formar una frontera de decisión alrededor del dominio de los
datos de aprendizaje con muy poco o ningún conocimiento de los datos fuera de esta frontera. Los datos son mapeados por medio de un kernel
Gaussiano u otro tipo de kernel a un espacio de características en un espacio dimensional más alto, donde se busca la máxima separación entre clases.
Esta función de frontera, cuando es traída de regreso al espacio de entrada, puede separar los datos en todas las clases distintas, cada una formando
un agrupamiento.
¿Cómo Funciona?

Una SVM primero mapea los puntos de entrada a un espacio de


características de una dimensión mayor (i.e.: si los puntos de entrada
están en entonces son mapeados por la SVM a ) y encuentra
un hyperplano que los separe y maximice el margen m entre las clases en
este espacio como se aprecia en la Figura 1.

Maximizar el margen m es un problema de programación cuadrática (QP)


y puede ser resuelto por su problema dual introduciendo multiplicadores
de Lagrange. Sin ningún conocimiento del mapeo, la SVM encuentra el
hyperplano óptimo utilizando el producto punto con funciones en el
espacio de características que son llamadas kernels. La solución del
hyperplano óptimo puede ser escrita como la combinación de unos
pocos puntos de entrada que son llamados vectores de soporte.

Actualmente hay muchas aplicaciones que utilizan las técnicas de las


SVM como por ejemplo las de OCR (Optical Character Recognition) por la
facilidad de las SVMs de trabajar con imágenes como datos de entrada.
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
Ejemplo:

Vamos a usar estos datos de ejemplo. Suponemos que los puntos azules
corresponden a la clase «azul» y los puntos rojos a la clase «rojo». Ahora
intentaremos dibujar una línea que separe los puntos azules de los rojos. De
esta forma, cuando haya un punto nuevo, podemos decir qué color va a tener,
dependiendo del lado de la línea en el que se encuentre.

Ejemplo 2.

La siguiente figura muestra otra forma equivocada de clasificar estos


puntos. Podemos decir que cualquier punto que esté por lo alto de la línea
será azul. Cualquiera que esté por debajo será rojo. Sin embargo, el nuevo
punto a la derecha, ha sido «incorrectamente» clasificado como azul.
Intuitivamente, diríamos que debería haber sido clasificado como rojo.

Formas Equivocadas de Clasificar.


A continuación veremos algunos ejemplos de formas equivocadas de clasificar.

Ejemplo 1.

En la siguiente figura, podemos decir que lo que esté a la izquierda de la línea, es


azul y lo que esté a la derecha, es rojo. Sin embargo, el punto nuevo abajo a la
izquierda es clasificado como azul. Intuitivamente, está mal clasificar este punto
nuevo como azul.
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
Clasificación óptima con máquinas de soporte vectorial.

La línea que mejor distingue las zona de los puntos azules de la zona de los puntos
rojos es la línea que maximiza el margen entre ambos. Las máquinas de vectores de
soporte son una técnica de machine learning que encuentra la mejor separación
posible entre clases. Con dos dimensiones es fácil entender lo que está haciendo.
Normalmente, los problemas de aprendizaje automático tienen muchísimas
dimensiones. Así que en vez de encontrar la línea óptima, el SVM encuentra el
hiperplano que maximiza el margen de separación entre clases.

Regularización.

Es bastante frecuente que los datos tenga ruido, que no estén etiquetados
perfectamente, o que el problema sea tan difícil que para unos pocos
puntos, sea muy complicado clasificarlos correctamente. Para estos casos,
podemos decirle al SVM (Support Vector Machine), que preferimos que
generalice bien para la mayoría de los casos, aunque algunos pocos casos
del conjunto de entrenamiento no estén perfectamente clasificados.
Recuerda que lo que normalmente vamos buscando es la construcción de
modelos de aprendizaje automático que generalicen bien. Para controlar la
cantidad de regularización, podemos usar el hiper parámetro C, que hace
las veces del inverso del alfa como son las regularizaciones Ridge, Lasso y
ElasticNet.
Entonces, ¿Por qué se llaman Máquinas de Vectores de Soporte?

Se llama «máquina» en español por la parte de «machine» learning. Los vectores de


soporte son los puntos que definen el margen máximo de separación del hiperplano
que separa las clases. Se llaman vectores, en lugar de puntos, porque estos
«puntos» tienen tantos elementos como dimensiones tenga nuestro espacio de
entrada. Es decir, estos puntos multidimensionales se representan con vector
de n dimensiones.
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
El truco del kernel en SVM.

Hay veces en las que no hay forma de encontrar una hiperplano que permita separar dos clases. En estos casos decimos que las clases no son linealmente
separables. Para resolver este problema podemos usar el truco del kernel.

El truco del kernel consiste en inventar una dimensión nueva en la que podamos encontrar un hiperplano para separar las clases. En la siguiente figura vemos
cómo al añadir una dimensión nueva, podemos separar fácilmente las dos clases con una superficie de decisión.
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
Fortalezas.

1. El entrenamiento es relativamente fácil.


2. No hay óptimo local, como en las redes neuronales.
3. Se escalan relativamente bien para datos en espacios dimensionales altos.
4. El compromiso entre la complejidad del clasificador y el error puede ser controlado explícitamente.
5. Datos no tradicionales como cadenas de caracteres y árboles pueden ser usados como entrada a la SVM, en vez de vectores de características.

Debilidades.

1. Se necesita una “buena” función kernel, es decir, se necesitan metodologías eficientes para sintonizar los parámetros de inicialización de la SVM.
Aprendizaje Supervisado –
Máquina de Soporte Vectorial (SVM).
Ejemplo en R. Ejecución del modelo SVM.

Clasificar tipo de flor atendiendo a sus características físicas como pueden ser modelo <- svm(Species~., data=datos.entreno)
el ancho y alto de los pétalos y sépalos.
Predicción de los restantes.
Carga de paquetes y librerías necesarios.
prediccion <- predict(modelo,new=datos.test)
install.packages("MASS")
install.packages("e1071") Tabla de confusión. Se usa with para que aparezca el nombre de la
variable Species en ella # ya que en caso contrario no sale.
Carga de las librerías necesarias.
(mc <- with(datos.test,(table(prediccion,Species))))
library(MASS)
library(e1071) ## Species
## prediccion setosa versicolor virginica
Carga de los datos necesarios para el modelo. ## setosa 15 0 0
## versicolor 0 11 2
data(iris) ## virginica 0 1 16
datos <- iris
View(datos) % correctamente classificados.

Selección de una submuestra del 70% de los datos. (correctos <- sum(diag(mc)) / nrow(datos.test) *100)

set.seed(101) ## [1] 93.33333


tamano.total <- nrow(datos)
tamano.entreno <- round(tamano.total*0.7)
datos.indices <- sample(1:tamano.total , size=tamano.entreno)
datos.entreno <- datos[datos.indices,]
datos.test <- datos[-datos.indices,]
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Caso 1: Vecino más Cercano.

Problema.

Una empresa dispone de datos históricos de 15 clientes "buenos" y 15 "malos" y quiere realizar un credit scoring. Dispone de solo dos variables: los ingresos
mensuales y el nivel de estudios. Naturalmente los credit scoring reales utilizan miles de datos y muchas variables, esto es solo un ejemplo.

Solución (el ejemplo se desarrolló en Excel por contar con dos variables para entender como funciona el modelo. Si el número de variables fuera > 2,
se debe usar R).

Se trata de clasificar a Juan, un cliente potencial que ha solicitado un crédito, como "bueno" o "malo". Juan gana 1.800€ al mes y su nivel de estudios es
Bachiller.

Usaremos solamente dos variables:

1. Ingresos mes, en euros


2. Nivel de estudios, de 0 a 5
0=Sin estudios
1=Básico
2=Secundaria
3=Bachiller
4=Graduado Universidad
5=Máster

Y estos son los datos de 30 clientes (15 buenos y 15 malos):


Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Juan obtiene un sueldo de 1800€ al mes y su nivel de estudios es Bachiller, es decir está en el nivel
3 de estudios. Por lo tanto, necesitamos que el modelo que permite asignar los créditos (credit
scoring) clasifique a Juan como bueno o malo. Queremos entonces, que el modelo de credit
scoring clasifique a Juan como "bueno" o "malo".

Como disponemos de dos variables solamente (si hubiera más variables, no podríamos hacer este
tipo de gráfico), realizamos el gráfico de dispersión de la siguiente manera:

1. Seleccionar el rango: cliente, ingresos y estudios


2. Insertar gráfico -> XY Dispersión -> Solo marcadores
3. Se trata de hacer tres series: malos, buenos y Juan
4. Lo haremos en Diseño -> Seleccionar datos
5. Editamos la primera serie, "Malos"
6. En Nombre se escribe Malos
7. En valores X se seleccionan los ingresos de los malos
8. En valores Y se seleccionan los estudios
9. Lo mismo con Buenos y con Juan
10. Formato de serie, color rojo a los malos y resto

La ventaja en este caso, es que podemos ver claramente los vecinos de Juan, ya que como
estamos usando dos variables esto se hace posible. Si tuviéramos más variables, se necesita usar
un algoritmo automático en R. Pero recordemos que este caso permite entender cómo funciona K-
NN.

Finalmente, aplicamos el algoritmo KNN, el cual calcula la distancia entre Juan y sus vecinos. Si la
mayor parte de sus vecinos son buenos clientes lo más probable es que sea un buen cliente. Es
decir se basa en el refrán "Dime con quien andas y te diré quién eres". Para calcular la distancia
entre dos puntos A y B usamos el Teorema de Pitágoras.
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Si hubiera más de dos variables se calcula la distancia euclidiana, que es el caso general:

Si nos fijamos bien, hay un problema y es que el salario y el nivel de estudios están medidos en
escalas diferentes. El salario mensual son miles de euros y el nivel de estudios va de 1 a 5.
Entonces hay que normalizarlo, para que estén en la misma escala. Una forma es transformar tanto
los ingresos como el nivel de estudio a la escala [0-1]. Así al que gana más (Isabel) le ponemos un 1
y al que gana menos (Peter) un 0. Para esto usamos la fórmula X_Normalizada.

Al normalizar los datos, queda como se muestra a continuación:

Ahora entonces, estamos en condiciones de calcular la distancia con Juan de cada uno de los demás
clientes.
Debemos elegir el número de vecinos (K). Por ejemplo haremos K=7. Entonces el algoritmo selecciona los 7
vecinos más cercanos y contabiliza cuantos de ellos son "buenos" y cuantos son "malos". Finalmente una
condicional añade "bueno" si el número de vecinos buenos es mayor que el de malos o "malo" en caso
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Mostramos la tabla resultante en un formato entendible.

head(tabla_1)
Caso 2: Clasificación Bayesiana.
## hora lugar finde
Problema. ## 1 8 casa TRUE
## 2 14 restaurante TRUE
La empresa de telecomunicaciones XX, necesita contar con un modelo que ## 3 24 casa TRUE
permita predecir con certeza el lugar donde se encuentran sus clientes, con ## 4 8 trabajo FALSE
el fin de poder desplegar campañas que les puedan llegar a sus celulares al ## 5 14 trabajo FALSE
## 6 24 casa FALSE
momento de que entren a los lugares clave definidos por la compañía.
Veamos ahora el número de registros de acuerdo al lugar.
Solución.
table(tabla_1$hora,tabla_1$lugar)
Como contamos con más de dos variables, vamos a realizar este ejemplo en
##
R. ## casa cine restaurante trabajo
## 8 3 0 0 3
1.- Definimos un tabla (tabla_1) que contiene 3 variables: la hora del día, el ## 14 0 0 3 3
## 24 6 2 0 0
lugar donde está el cliente a esa hora, y otra columna que nos indica si es o
no fin de semana con un valor lógico (TRUE o FALSE). En R queda de la
Vamos cargar la librería naivebayes con objeto de crear un modelo de
siguiente manera:
pronóstico de la variable dependiente lugar a partir de las variables
tabla_1<-data.frame(hora=c(8,14,24,8,14,24,8,14,24,8,14,24,8,14,24,8,14,24,24,24)) independientes hora y finde. Este modelo nos diría por ejemplo la
tabla_1$lugar<-c("casa","restaurante","casa", probabilidad de que: sabiendo la hora y si es o no fin de semana, un cliente
"trabajo","trabajo","casa", se encuentre en un lugar determinado. Como vimos en las consideraciones
"trabajo","trabajo","casa",
"casa","restaurante","casa", previas, los modelos de pronostico bayesiano, y en particular naivebayes
"trabajo","trabajo","casa", funcionan muy mal con datos numéricos continuos, y vamos a ver la prueba,
"casa","restaurante","casa","cine","cine") pues crearemos un modelo con la variable hora tal cual, y después haremos
tabla_1$finde<-c(T,T,T,
F,F,F, el mismo modelo con la variable hora convertida en factor.
F,F,F,
T,T,T, Primero creamos la formula de modelo con la función naive_bayes() y luego
F,F,F,
T,T,T, definimos un hecho, una ocurrencia concreta de los parámetros y llamamos
T,F a la función predict(). Esta función es común a la mayoría de los modelos de
) predictivos, y sus argumentos son el nombre del modelo y un hecho
str(tabla_1)
almacenado como data.frame. Si añadimos el argumento type="prob nos da
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Cargamos la librería en R, que permite trabajar con el modelo


Bayesiano.

library(naivebayes)

Creamos el modelo de pronóstico.

m <- naive_bayes(lugar ~ hora+finde, data = tabla_1)#, laplace = 1)

Graficamos el modelo.

plot(m)

Ejecutamos un modelo predictivo, que nos proveerá los resultados de


pronostico para cada registro de datos.

tabla_1$p=predict(m)
head(tabla_1)

## hora lugar finde p


## 1 8 casa TRUE casa
## 2 14 restaurante TRUE restaurante
## 3 24 casa TRUE cine
## 4 8 trabajo FALSE trabajo
## 5 14 trabajo FALSE trabajo
## 6 24 casa FALSE cine

Luego, si necesitamos conocer un hecho concreto, creamos un hecho


a priori, sobre el que queremos pronosticar el resultado. Como el
modelo es lugar ~ hora+finde, aportamos un dato de hora y otro de
finde ya que en este caso queremos pronosticar donde se encuentra
Juan a las 14 horas un día laborable.
h<-data.frame(hora= 24, finde=T)
table(tabla_1$lugar,tabla_1$hora+tabla_1$finde)
Aprendizaje Supervisado – Aprende y Aplica
## 'data.frame': 20 obs. of 4 variables:
Análisis de Casos: ## $ hora : Factor w/ 3 levels "8","14","24": 1 2 3 1 2 3 1 2 3 1 ...
## $ lugar: chr "casa" "restaurante" "casa" "trabajo" ...
## $ finde: logi TRUE TRUE TRUE FALSE FALSE FALSE ...
##
## $ p : Factor w/ 4 levels "casa","cine",..: 1 3 2 4 4 2 4 4 2 1 ...
## 8 9 14 15 24 25
## casa 03 0 0 3 3
## cine 00 0 0 1 1 Calculamos de nuevo el modelo.
## restaurante 0 0 0 3 0 0
## trabajo 3 0 3 0 0 0 m <- naive_bayes(lugar ~ hora+finde, data = tabla_1)

Ejecutamos la función de predicción. Hacemos de nuevo la predicción.


predict(m,h)
predict(m,h)
## [1] casa
## [1] cine ## Levels: casa cine restaurante trabajo
## Levels: casa cine restaurante trabajo
predict(m,h, type="prob")
Luego con la probabilidad completa. ## casa cine restaurante trabajo
## [1,] 0.8571429 0.1428571 1.432592e-123 NaN
predict(m,h, type = "prob")

## [1,] 0.0006001881 0.9993923 7.515315e-06 NaN Debemos tener cuidado al crear el hecho, ya que debe ser acorde a los
datos. Si es factor, debe contener en levels los mismos que la tabla
La predicción que obtenemos con el modelo para (hora= 24, finde=T) es claramente origen, por ello lo creamos a partir de esta tabla mejor .
errónea, pues solo 1 de los 4 registros que tenemos a las 24 horas en fin de semana
es ir al cine, los otros 3 son estar en casa, por lo que algo falla en el modelo al ser el h<-tabla_1[1,c(1,3)]
h$hora="24"
evento más probable estar en casa. Este problema es habitual cuando usamos
h$finde=F
datos continuos, que nos generan distribuciones de probabilidad continuas. En este predict(m,h)
caso el evento de ir al cine tiene muy pocos datos, pero siempre a las 24 horas, por
lo que la media se mantiene en 24 h. Sin embargo el hecho estar en casa tienen ## [1] casa
muchos registros en diferentes horas, por lo que el valor medio de la hora es un ## Levels: casa cine restaurante trabajo
número intermedio 18,6 (ver el modelo m para más información). Para evitar
problemas debemos transformar las variables continuas en discretas y reducir al
Como hemos visto al transformar en factor la variable numérica
máximo los valores posibles realizando lo que denominamos una categorización continua, hemos realizado un pronostico más acorde con los datos.
previa de los datos. Por ejemplo convirtiendo los datos en factores.

Convertimos la variable continua numérica hora, en factor discreto.

tabla_1$hora<-as.factor(tabla_1$hora)
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Caso 3: Arboles de Decisión.

Problema.

Supongamos que una empresa puede elegir en el periodo 0 entre construir su nueva fábrica en la zona norte o sur. Para el primer caso, el coste es de US$
100.000, mientras que en el segundo es de US$ 105.000. En el siguiente periodo, una vez lista la fábrica y que la compañía es capaz de comenzar sus ventas,
debe escoger entre la estrategia comercial A o B. Asimismo, en ambo casos, podrá enfrentar una demanda alta, moderada o baja.

Solución.

Para evaluar la rentabilidad del proyecto en cada supuesto, asumimos una tasa anual equivalente de 0,15, así calculamos el valor actual neto (VAN) para todas
las combinaciones de decisiones y escenarios. En suma, se presentarán doce situaciones posibles como vemos en el siguiente cuadro.

*FC= Flujo de caja

Por ejemplo, imaginemos que el inversionista elige la zona norte y la estrategia A. Por
ende, si la demanda es alta, el VAN de los dos años del proyecto será:
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Resultado del árbol:

Caso 1: Arboles de Decisión. Para obtener un resultado del ejemplo anterior, hallamos el
promedio ponderado de los tres escenarios que se desprenden de
El árbol de decisión queda de la siguiente manera: c a da c o m bina c ió n po s i b l e d e z o n a s y e s t r a t e g i a s . E s t o ,
considerando la probabilidad de cada situación. Por ejemplo, si el
individuo elige la zona sur y la estrategia A, el valor esperado de su
i n v e r s i ó n s e r á :

Valor esperado = (0,3*97,46)+(0,4*8,61)+(0,3*-61,71)=US$ 14,17 mil

A continuación, siguiendo esa metodología, obtenemos los


siguientes resultados:

Por lo tanto, la alternativa más rentable para el inversor es


instalarse en la zona sur e implementar la estrategia B.
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos:

Caso 4: Máquina de Soporte Vectorial.

Problema.
Una prestigiosa empresa de bebidas, necesita predecir qué tipo de bebidas podría comprar más un consumidor (la cartera de clientes asciende a 1070), en
función del conjunto de predictores, basado en dos tipos de bebidas (Citrus Hill y Minute Maid Orange Juice). Cabe mencionar que las variables registran
distintas características del cliente y el producto.

Solución.

Antes de pasar a la solución, recordemos:

El entrenamiento de una máquina de vectores de soporte consta de dos fases:

1.Transformar los predictores (datos de entrada) en un espacio de características altamente dimensional. En esta fase es suficiente con especificar el
kernel; los datos nunca se transforman explícitamente al espacio de características. Este proceso se conoce comúnmente como el truco kernel.

2.Resolver un problema de optimización cuadrática que se ajuste a un hiperplano óptimo para clasificar las características transformadas en dos clases.
El número de características transformadas está determinado por el número de vectores de soporte.

Para construir la superficie de decisión solo se requieren los vectores de soporte seleccionados de los datos de entrenamiento. Una vez entrenados, el resto de
los datos de entrenamiento son irrelevantes. Entre los kernels populares que se emplean con las máquinas SVM se incluyen:
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Distribución variable respuesta.

Observaciones. library(ggplot2)

ggplot(data = OJ, aes(x = Purchase, y = ..count.., fill = Purchase)) +


1. La variable respuesta ha de estar codificada como factor. geom_bar() +
2. Un número alto de variables en relación al número de observaciones labs(title = "Distribución de 'Purchase'") +
scale_fill_manual(values = c("darkgreen", "orangered2"),
implicaría que es fácil encontrar un hiperplano que separe completamente labels = c("Citrus Hill", "Orange Juice")) +
las clases. theme_bw() + theme(plot.title = element_text(hjust = 0.5))

library(ISLR) Tabla frecuencias variable respuesta.

Estructura de los datos table(OJ$Purchase)

##
str(OJ) ## CH MM
## 653 417

Tabla proporciones variable respuesta.

library(dplyr)
prop.table(table(OJ$Purchase)) %>% round(digits = 2)

##
## CH MM
## 0.61 0.39

Para que los modelos generados sean útiles, el porcentaje de aciertos en cuanto a la
clasificación de las observaciones ha de superar un nivel mínimo, en este caso, el que se
obtendría si la predicción de todas las observaciones se correspondiera con la clase
mayoritaria. La clase mayoritaria (moda) en este caso es la bebida CH con el 61% de las
compras. Este será el nivel basal a superar por el modelo (este es el porcentaje mínimo de
Comprobamos valores faltantes en la variable respuesta aciertos si siempre se predijera CH). (Recalcular este valor con los datos de
sum(is.na(OJ$Purchase)). entrenamiento).

Antes de proceder a generar los modelos, dividimos el set de datos en un grupo de


## [1] 0 entrenamiento (para el ajuste de los modelos) y otro de test (para la evaluación de los
mismos). Esta división dependerá de la cantidad de observaciones con las que contemos
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Para ajustar un support vector classifier, el kernel indicado en la función svm()
ha de ser lineal. Obtendremos un valor de coste óptimo mediante validación
library(caret) cruzada utilizando la función tune() del paquete e1071:

Indices observaciones de entrenamiento. library(e1071)

set.seed(123) Optimización de hiperparámetros mediante validación cruzada 10-fold.


train <- createDataPartition(y = OJ$Purchase, p = 0.8, list = FALSE, times = 1)
set.seed(325)
Datos entrenamiento. tuning <- tune(svm, Purchase ~ ., data = datosOJ_train,
kernel = "linear",
ranges = list(cost = c(0.001, 0.01, 0.1, 1, 5, 10, 15, 20)),
datosOJ_train <- OJ[train, ]
scale = TRUE)
dim(datosOJ_train)

## [1] 857 18 Podemos acceder a los errores de validación con cada valor de coste con la
# Datos test función summary():

datosOJ_test <- OJ[-train, ] summary(tuning)


dim(datosOJ_test)

## [1] 213 18

Support vector classifier.

A la hora de ajustar un support vector classifier, es importante tener en cuenta


que el hiperparámetro C (cost) controla el equilibrio bias-varianza y la
capacidad predictiva del modelo, ya que determina la severidad permitida
respecto a las violaciones sobre el margen. En otras palabras, necesitamos
fijar un margen de separación entre observaciones a priori. Por ello es
recomendable evaluar distintos valores del mismo mediante validación
cruzada y escoger el valor óptimo.

IMPORTANTE: Estandarizar los predictores cuando no estén medidos en la


misma escala, para que los de mayor magnitud no tengan mayor influencia
que el resto. Un argumento disponible en la función svm() para ello es scale =
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: El número de vectores soporte es de 345, 173 de la clase CH y 172 de la
clase MM. Podemos obtener los índices de las observaciones que se
names(tuning) corresponden con los vectores soporte:

## [1] "best.parameters" "best.performance" "method" "nparcomb" Muestra de 50 de los 345.


## [5] "train.ind" "sampling" "performances" "best.model“
head(modelo_svc$index)
ggplot(data = tuning$performances, aes(x = cost, y = error)) +
geom_line() +
geom_point() + ## [1] 1 15 24 28 32 45
labs(title = "Error de validación ~ hiperparámetro C") +
theme_bw() +
theme(plot.title = element_text(hjust = 0.5)) El mejor modelo obtenido sería equivalente a ajustar:

modelo_svc <- svm(Purchase ~ ., data = datosOJ_train,


kernel = "linear",
cost = 15,
scale = TRUE)

Al tratarse de un problema con más de dos predictores, podemos


re p re s e nta r e l m o d e l o u s a n d o l a f u n c i ó n p l o t ( ) , p e r o c r e a n d o
representaciones entre pares de predictores (teniendo en cuenta que
plot.svm solo representa predictores continuos). Ejemplos:
El valor de coste que resulta en el menor error de validación (0,165) es 15.

Almacenamos el modelo optimo obtenido y accedemos a su información. plot(modelo_svc, datosOJ_test, SalePriceCH ~ PriceCH)

modelo_svc <- tuning$best.model


summary(modelo_svc)

plot(modelo_svc, datosOJ_test, SalePriceCH ~ SalePriceMM)


Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: fitControl <- trainControl(method = "cv",
number = 10,
classProbs = TRUE,
Evaluación del Modelo. search = "grid")

# Parametros del modelo disponibles


Error de test. getModelInfo(model = "svmLinear")[[2]]$parameters

predicciones = predict(modelo_svc, datosOJ_test) ## parameter class label


table(prediccion = predicciones, real = datosOJ_test$Purchase) ## 1 C numeric Cost
## real
## prediccion CH MM Valores del hiperparámetro C a evaluar.
## CH 108 17
## MM 22 66
grid_C <- data.frame(C = c(0.001, 0.01, 0.1, 1, 5, 10, 15, 20))
paste("Observaciones de test mal clasificadas:",
100 * mean(datosOJ_test$Purchase != predicciones) %>%
round(digits = 4), "%") Entrenamiento del SVM con un kernel lineal y optimización del
hiperparámetro C.
## [1] "Observaciones de test mal clasificadas: 18.31 %“.
set.seed(325) # misma semilla que en el ejemplo con el paquete e1071
modelo_svc <- train(Purchase ~ ., data = datosOJ_train,
Paquete Caret. method = "svmLinear",
trControl = fitControl,
preProc = c("center", "scale"), #estandarizacion de los datos
VM lineal: method = “svmLinear” tuneGrid = grid_C)
SVM polinómico: method = “svmPoly”
SVM radial: method = “svmRadial” Resultado del entrenamiento.

Si no se especifica, la métrica para la evaluación es el Accuracy. Podría modelo_svc


emplearse otra como por ejemplo “ROC”.

AJUSTE DEL MODELO.


Configuración del proceso de selección del modelo.
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Support vector machine.

Evolución del accuracy en función del valor de coste en validación Además del hiperparámetro de penalización C, en los modelos SVM es
cruzada. necesario especificar el hiperparámetro gamma (para kernel radial) o el grado
de polinomio (para kernel polinómico), los cuales también son importante
plot(modelo_svc) optimizar mediante validación cruzada.

Kernel polinómico.
Ajuste del modelo.

set.seed(325)
tuning <- tune(svm, Purchase ~ ., data = datosOJ_train,
kernel = "polynomial",
ranges = list(cost = c(0.001, 0.01, 0.1, 1, 5, 10, 15),
degree = c(2, 3)),
scale = TRUE)
EVALUACIÓN DEL MODELO.
summary(tuning)
confusionMatrix(predict(modelo_svc, datosOJ_test), datosOJ_test$Purchase)
Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: Modelo SVM kernel polinómico.

modelo_svmP <- svm(Purchase ~ ., data = datosOJ_train,


Con un kernel polinómico, los hiperparámetros óptimos que reducen el kernel = "polynomial",
error de validación son coste = 15, grado = 2. cost = 15,
degree = 2,
scale = TRUE)
ggplot(data = tuning$performances, aes(x = cost, y = error, col = as.factor(degree))) +
geom_line() + summary(modelo_svmP)
geom_point() +
labs(title = "Error de validación ~ hiperparámetro C y polinomio") +
theme(plot.title = element_text(hjust = 0.5)) +
theme_bw() + theme(legend.position = "bottom")

Evaluación del modelo.

confusionMatrix(predict(modelo_svmP, datosOJ_test), datosOJ_test$Purchase)


Aprendizaje Supervisado – Aprende y Aplica
Análisis de Casos: ## 11 1.000 0.10 0.1774008 0.02768103
## 12 5.000 0.10 0.1867305 0.03786742
## 13 10.000 0.10 0.1890698 0.03973010
## 14 15.000 0.10 0.1925445 0.03358402
paste("Observaciones de test mal clasificadas:", ## 15 0.001 1.00 0.3896990 0.02807724
100 * mean(datosOJ_test$Purchase != predict(modelo_svmP, datosOJ_test)) %>% ## 16 0.010 1.00 0.3896990 0.02807724
round(digits = 4), "%") ## 17 0.100 1.00 0.3430506 0.03950313
## 18 1.000 1.00 0.2042134 0.04046699
## [1] "Observaciones de test mal clasificadas: 18.31 %" ## 19 5.000 1.00 0.2169357 0.04204666
## 20 10.000 1.00 0.2227497 0.05107098
## 21 15.000 1.00 0.2250616 0.05621604
Kernel Radial. ## 22 0.001 5.00 0.3896990 0.02807724
Ajuste al modelo. ## 23 0.010 5.00 0.3896990 0.02807724
## 24 0.100 5.00 0.3827086 0.03008126
## 25 1.000 5.00 0.2321614 0.04716190
set.seed(325) ## 26 5.000 5.00 0.2461696 0.05457010
tuning <- tune(svm, Purchase ~ ., data = datosOJ_train, ## 27 10.000 5.00 0.2519699 0.06920434
kernel = "radial", ## 28 15.000 5.00 0.2507934 0.06874949
## 29 0.001 10.00 0.3896990 0.02807724
ranges = list(cost = c(0.001, 0.01, 0.1, 1, 5, 10, 15),
## 30 0.010 10.00 0.3896990 0.02807724
gamma = c(0.01, 0.1, 1, 5, 10)), ## 31 0.100 10.00 0.3896990 0.02807724
scale = TRUE) ## 32 1.000 10.00 0.2473324 0.05124194
## 33 5.000 10.00 0.2590014 0.06403488
summary(tuning) ## 34 10.000 10.00 0.2590150 0.06409830
## 35 15.000 10.00 0.2625171 0.06606382
##
## Parameter tuning of 'svm':
## Con un kernel radial, los hiperparámetros que reducen el error de
## - sampling method: 10-fold cross validation validación son coste = 5, gamma = 0,01.
##
## - best parameters:
## cost gamma ggplot(data = tuning$performances, aes(x = cost, y = error, color = factor(gamma))) +
## 5 0.01 geom_line() +
## geom_point() +
## - best performance: 0.1645554 labs(title = "Error de validación ~ hiperparámetro C y gamma") +
##
theme_bw() +
## - Detailed performance results:
## cost gamma error dispersion theme(plot.title = element_text(hjust = 0.5)) +
## 1 0.001 0.01 0.3896990 0.02807724 theme(legend.position = "bottom")
## 2 0.010 0.01 0.3896990 0.02807724
## 3 0.100 0.01 0.1878933 0.02846851 modelo_svmR <- svm(Purchase ~ . , data = datosOJ_train,
## 4 1.000 0.01 0.1657045 0.03115640 kernel = "radial",
## 5 5.000 0.01 0.1645554 0.02632608 cost = 5,
## 6 10.000 0.01 0.1692066 0.03088839 gamma = 0.01,
## 7 15.000 0.01 0.1727086 0.03067519
scale = TRUE)
## 8 0.001 0.10 0.3896990 0.02807724
## 9 0.010 0.10 0.3896990 0.02807724
## 10 0.100 0.10 0.1890834 0.05364587
# Modelo SVM con kernel radial modelo_svmR <- svm(Purchase ~ . , data = datosOJ_train, kernel = "radial", cost = 5, gamma = 0.01, scale = TRUE)

Aprendizaje Supervisado – Aprende y Aplica


Análisis de Casos: paste("Observaciones de test mal clasificadas:",
100 * mean(datosOJ_test$Purchase != predict(modelo_svmR, datosOJ_test)) %>%
round(digits = 4), "%")
Evaluación del Modelo.
## [1] "Observaciones de test mal clasificadas: 17.84 %"
Matriz de confusión y métricas en test.
confusionMatrix(predict(modelo_svmR, datosOJ_test), datosOJ_test$Purchase)
Aprendizaje Supervisado – Ponte a Prueba

Ejercicio 1.

La empresa aérea Speed S.A., está notando que sus clientes se cambian a la competencia, sin ninguna razón aparente. Al no contar con un modelo
automático que permita predecir la fuga de los clientes, no puede aplicar medidas de retención y fidelización de forma proactiva, actuando en base a la
reacción del momento cuando la fuga es detectada por alguna ejecutiva u otro funcionario de la línea aérea.

1.- Defina una solución basada en aprendizaje supervisado, que permita automatizar la detección de fuga. Use KDD y explique de forma detallada cada paso.
2.- Desarrolle un modelo en R usando Clasificación bayesiana, Arboles de Decisión y Máquina de Soporte Vectorial, que permita predecir la fuga de clientes.
3.- Compare el desempeño de cada modelo y aconseje el mejor, según los resultados de rendimiento.
Aprendizaje Supervisado –
Entropía.
Entropía proviene de la teoría de la información, es un indicador que nos permite analizar el grado de desorden en un conjunto de datos. Constituye una muy
buena herramienta para medir la homogeneidad de los datos. Está dado por

¿Cómo Funciona?
Permite elegir el mejor atributo para nuestro modelo, para lo cual dado un grupo de datos, debemos medir la calidad de
cada variable, lo que se hace de la siguiente manera:

1. En el contexto de clasificación automática, la calidad de una variable tiene que ver con la capacidad de separar los
elementos entre las distintas clases posibles una vez que la variable toma alguno de sus valores.

2. Por ejemplo, ¿distintos valores de la variable me mapean a distintos valores de la clase? Si existe una relación
directa entre los valores de la variable y posibles clases, significa que la variable es muy buena para clasificar.

3. La calidad de una variable entonces tiene que ver con cuán bien se separan las clases cada vez que instanciamos
ese atributo.

4. Las clases se separan bien cuando cada subgrupo generado por la división del atributo es homogéneo, es decir, en
cada subgrupo todos pertenecen a la misma clase.

5. La homogeneidad por lo tanto, debe ser medida en la columna de la clase de los datos, que corresponde al target
que queremos predecir.
Aprendizaje Supervisado –
Entropía.
Ejemplo 1:

En la figura tenemos la variable edad y vemos que toma dos valores posibles entre 18 a 25 y mayor que 25.

Marquemos con colores los distintos valores que puede tomar la variable. En los casos en que los clientes tienen entre 18 y 25 años, las clases que aparecen
si Frecuente y Ocasional, es decir el estar entre 18 y 25 años no nos deja claro a cuál clase pertenece el cliente. Por otro lado, si la edad es mayor que 25, las
clases quedan divididas de igual forma, es decir, cuando los clientes tienen más de 25 años tampoco nos queda claro a cuál clase pertenecen, por lo tanto, la
variable es mala para clasificar.
Aprendizaje Supervisado –
Entropía.
Ejemplo 2:

Analicemos la variable género, los valores posibles son Hombre y Mujer. Marquemos con colores los distintos valores que puede tomar la variable. Si
seleccionamos de los datos, los casos en que los clientes son mujeres, vemos que en ambos casos la clase a la que pertenecen es Ocasional, por lo tanto,
cuando el género del cliente es Mujer, es un buen predictor para los clientes de tipo Ocasional. Ahora si seleccionamos de los datos, los casos en que los
clientes son hombres, vemos que todos pertenecen a la clase frecuente, por lo tanto, los clientes hombres son un buen predictor para la clase Frecuente.

Finalmente, podemos concluir que la variable género es buena ya que cuando la instanciamos, genera un buen grado de homogeneidad de la clase.

Dado que ya notamos que la calidad de una variable tiene mucho que ver con la homogeneidad de la clase una vez que instanciamos la variable, necesitamos
una métrica de homogeneidad.
Veamos un ejemplo un poco más complejo: supongamos que tenemos dos clases posibles SI y
NO. Luego si existen 100 registros en nuestra base de datos, donde cada clase tiene la mitad de
Se necesita una los registros,
métrica de
homogeneidad del
subgrupo
Aprendizaje Supervisado –
Entropía.

Veamos un ejemplo un poco más complejo: supongamos que tenemos dos clases posibles SI y
NO. Luego si existen 100 registros en nuestra base de datos, donde cada clase tiene la mitad de
los registros y al revisar los casos en que A vale 0 (cero) nos encontramos con 48 filas que
pertenecen a la clase SI y 2 que pertenecen a la clase NO. Luego al mirar los casos en que A
vale 1, vemos que existen 2 casos en la clase SI y 48 en la clase NO, lo que indica que la
variable A logro separar bien las clases cuando esta fue instanciada

Revisemos ahora la variable B. Supongamos que al instanciar la variable B su valor 0 (cero), nos
da que 26 registros pertenecen a la clase SI y 24 registros a la clase NO. Esto no es bueno, ya
que significa que la variable B en su valor 0 no logró homogeneizar la clase, al revés, los dejó
aproximadamente mitad de una clase y mitad de la otra. Algo similar ocurre cuando la variable
se instancia en el valor 1, 24 casos quedan de la clase SI y 26 de la clase NO, acá de igual forma
la variable realizó una mala homogeneización de la clase. Finalmente, podemos decir que
nuevamente estamos frente al caso de una variable buena y una mala, pero aquí vemos que la
homogeneización toma valores intermedios, es decir, necesitamos de una medida que nos
entregue un valor de homogeneización para cada posible proporción de elementos que
pertenezcan a una clase y a la otra.
Aprendizaje Supervisado –
Entropía.
Dado que ya entendimos de los ejemplos que es necesario poder medir la homogeneidad de la clase cada vez
que instanciamos la variable que estamos evaluando, veamos el último ejemplo. Consideremos los datos que
aparecen en la tabla que se muestra.

Notemos que existen dos posibles clases Frecuente y Ocasional, luego marcamos las filas con diferentes
colores para que sea más fácil visualizarla.

Si queremos calcular la entropía de la clase aplicando la fórmula que vimos al inicio, debemos observar las
proporciones de casos que ocurren para cada uno de los posibles valores que toma la clase (Frecuente,
Ocasional). En el caso Frecuente, tenemos una sola fila de un total de 4 y en el caso de ocasional tenemos 3
filas de un total de 4.

Aplicando esas proporciones en la fórmula, vemos el siguiente resultado:

La entropía es igual a 1 en el caso en que tenemos un 50% de los datos perteneciendo a cada una de las dos
clases posibles
Aprendizaje Supervisado –
Ganancia de Información.
Corresponde a indicador final con el cual evaluamos la calidad de una variable para ser seleccionada durante la construcción de un modelo de calificación.
Dicho desde un punto de vista más aplicado a la fórmula que permite calcularla, la ganancia corresponde a la diferencia de entropía entre el estado actual y el
siguiente al aplicar un cierto atributo.

¿Cómo Funciona?

Primero que todo, debemos entender cómo elegir el mejor atributo usando la entropía. ¿Cómo
usamos entonces la entropía para evaluar la calidad de una variable y llegar finalmente a elegirla?
Dado que ya conocemos el concepto de entropía, veremos ahora entonces cómo usarla directamente
para poder calcular la calidad de una variable.

Recordemos que para evaluar la calidad de una variable, mirábamos qué tan homogéneas van
quedando las clases de los grupos de datos que se arman, una vez que vamos instanciando la
variable en cada uno de sus posibles valores. En este ejemplo, al evaluar la variable género,
separamos los datos según sus valores y nos queda: la parte izquierda con 3 casos para Ocasional y
2 casos de la clase Frecuente, lo cual no es bueno ya que no es homogéneo. En la parte derecha,
quedan dos casos de la clase Ocasional y un caso de la clase frecuente, lo cual tampoco es tan
homogéneo.

Al evaluar la variable ingreso, dado que tiene tres valores posibles, procedemos a generar las tres
separaciones. Vemos que la parte que corresponde al valor <$100, tiene todos los casos de la misma
clase, lo que es muy bueno. La parte que tiene $100 – $200, tiene dos casos de la clase Frecuente y
un caso de la clase Ocasional, situación que no es homogénea. Finalmente la parte que corresponde
al valor > $200, tiene un caso de la clase ocasional y un caso de la clase frecuente, también una
situación muy desfavorable para poder llevar a cabo una buena clasificación.
Aprendizaje Supervisado –
Ganancia de Información.
Vemos entonces que para una misma variable, se van generando distintas calidades de separaciones para los distintos valores que la variable puede tomar.
Esto sugiere entonces el uso de un promedio ponderado de homogeneidad para cada variable que considere la homogeneidad, es decir, la entropía de la
clase en cada valor que toma la variable ponderado por la cantidad relativa de filas en las que la variable toma ese valor. Teniendo entonces esto claro,
podemos recordar lo que es la ganancia de información: que es el indicador que mide la calidad de una variable. Lo que hace en palabras simples es calcular
cuánto se reduce la entropía de la clase que corresponde al primer término del lado derecho de la ecuación cuando vamos instanciando la variable A en
cuestión.

Si miramos el segundo término del lado derecho de la ecuación, vemos que lo que hace es calcular la entropía de la clase
en cada una de las tablas de datos que van quedando una vez que vamos instanciando la variable en cuestión. Una vez
calculadas todas las entropías, saca un promedio ponderado y los ponderadores del promedio, simplemente asignan un
peso relacionado con el número de filas en que la variable toma ese valor (el valor B en particular) dividido por el total de
filas.

Podemos ver también a la ganancia de información como la diferencia en la entropía de la clase una vez que bajamos en el
árbol por el atributo que estamos evaluando.
Aprendizaje Supervisado –
Ganancia de Información.
Ejemplo:

Vamos a calcular la ganancia de información de la variable género, usando la tabla de datos que vemos a la derecha
del texto. Siguiendo la ecuación que vimos para ganancia de información, lo primero que debemos hacer es calcular la
entropía de la clase, es decir, cuán homogénea es la distribución de la clase antes de instanciar cualquier variable.

En este caso podemos ver que hay 8 filas, de las cuales 5 de ellas pertenecen a la clase Ocasional y 3 a la clase
Frecuente y su entropía corresponde a 0.95, valor que vemos como resultado de aplicar la fórmula ubicada debajo de la
tabla 2. Posterior a esto, debemos calcular el segundo término de la ecuación que corresponde a la definición de la
ganancia de información.

Para obtener este valor, debemos instanciar la variable género en sus posibles valores y medir la entropía de la clase
según las filas que quedan una vez que instanciamos la variable. Vemos entonces que la instanciar la variable en el
valor Hombre, nos quedan dos casos de la clase Ocasional y un caso de la clase Frecuente, por lo tanto, la entropía
se obtiene reemplazando las proporciones 2/3 y 1/3 en la fórmula, con lo que obtenemos 0.91
Aprendizaje Supervisado –
Ganancia de Información.
Ahora instanciamos la variable género en el valor mujer y vemos que quedan tres casos en la clase Ocasional y
dos casos en la clase Frecuente, por lo tanto, calculamos la entropía con las proporciones 3/5 y 2/5, esta entropía
resulta ser de 0.97.

Finalmente entonces para obtener la ganancia de información de la variable género, debemos obtener primero el
promedio ponderado de las dos entropías que calculamos anteriormente, donde cada ponderador tiene que ver
con el número de filas que se consideraron para calcular cada entropía.

Finalmente entonces, la
En el caso de la entropía igual a 0.91 en el ganancia de información
que se usaron 3 de las 8 filas y en el caso de la variable género nos
de la entropía igual a 0.97 se usaron 5 de da el valor de 0.0025.
las 8 filas. Estos cálculos se señalan con
círculos verdes en la fórmula.

El primer término del lado derecho, es


simplemente la entropía inicial de la clase,
ya la calculamos y vale 0.95 (señalada con
círculo verde.
Aprendizaje Supervisado –
Ganancia de Información.
Ejemplo en R.

edad <-c(rep("joven",5),rep("medio",5),rep("mayor",5))
tieneTrabajo <- c("F","F","V","V","F","F","F","V","F","F","F","F","V","V","F")
tieneCasa <- c("F","F","F","V","F","F","F","V","V","V","V","V","F","F","F")
c a l i f i c a c i o n < -
c("normal","bueno","bueno","normal","normal","normal","bueno","bueno","excelente","excelente" ,"excelente","bueno","bueno","excelente","normal")
clase <- c("no","no","si","si","no","no","no","si","si","si","si","si","si","si","no")

datos.aux <- cbind(edad,tieneTrabajo,tieneCasa,calificacion, clase)


datos <- data.frame(datos.aux)
datos

install.packages("RWekajars", dependencies = TRUE)


install.packages("RWeka", dependencies = TRUE)
install.packages("FSelector", dependencies = TRUE)
library(RWekajars)
library(RWeka)
library(FSelector)

ig <- information.gain(clase~., datos)


ig
Aprendizaje Supervisado –
Tipos de Atributos.
¿Qué es un atributo en Minería del Dato?

Atributo se puede definir como una característica que define un elemento. Ejemplo color de cabello, sexo, experiencia (poca, media, mucha) o estado civil, Se
puede asignar numero a cada categoría.

¿Cuáles son los tipos de atributos usados en Minería del Dato?

Atributos Cualitativos: son aquellos que pueden expresarse sólo en forma de características o propiedades.
Ejemplo:
1) Estado civil :
• soltero
• casado
• viudo
• separado

2) Satisfacción con un producto:


• muy insatisfecho
• regularmente insatisfecho
• neutral
• satisfecho
• muy satisfecho

3) Tamaño de un tablero :
• grande
• mediano
• Pequeño
Aprendizaje Supervisado –
Tipos de Atributos.
2.- Atributos Cuantitativos, son aquellas variables que pueden expresarse en forma numérica. Se dividen en discretos y continuos.

2.1.- Atributos Cuantitativos Discretos, son respuestas numéricas que surgen de un proceso de conteo, siendo siempre un número entero.

Ejemplos :

1) Número de asignaturas inscritas en el primer semestre.


2) Número de integrantes del grupo familiar.
3) Número de salas de clases del IPVG.

2.2.- Atributos Cuantitativos Continuos, son respuestas numéricas que surgen de un proceso de medición, las cuales pueden tomar valores entre dos
números enteros.

Ejemplo :
1) Estatura
2) Temperatura
3) Peso
Aprendizaje Supervisado –
Caso de Negocio Entropía y Ganancia de Información.
La FP XX necesita realizar un modelo predictivo hacia sus clientes. Al contratar a un experto, éste comenta que si bien la empresa posee datos de entrada para realizar el modelo,
se debe analizar la entropía y ganancia de información sobre las variables para determinar si aportarán de manera significativa al modelo. Vamos a calcular entonces, la ganancia
de información de la variable ingreso.

Separamos entonces los datos instanciando cada valor que puede tomar esta variable. Para el caso en que la variable ingreso toma el valor <$100, vemos que nos quedan todos
los datos en la clase Ocasional, por lo tanto la entropía es 0 (cero).

En el caso en que la variable ingreso toma el valor entre $100 y $200, vemos que nos quedan dos casos en la clase Frecuente y un caso en la clase
Ocasional, por lo que la entropía se calcula con las proporciones 1/3 y 2/3. Finalmente para el caso en que la variable ingreso vale >$200, tenemos un caso
para la clase ocasional y un caso para la clase frecuente, por lo tanto la entropía se calcula con las proporciones 1/2 y 1/2, lo que genera una entropía igual
a 1.
Aprendizaje Supervisado –
Para obtener la ganancia de información de la variable ingreso, aplicamos la misma ecuación que ya conocemos., reemplazando la entropía inicial en el
primer término del lado izquierdo de la ecuación y el promedio ponderado de las entropías que recién calculamos, eso en el segundo término del lado
derecho de la ecuación. El resultado, es una ganancia de información de 0.35 para la variable ingreso.

Para elegir la mejor variable entre todas, debemos escoger la que tiene la ganancia de información más alta.
Aprendizaje Supervisado –
Ejercicios.
Realice el análisis de entropía y ganancia de información sobre los siguientes datos. Se les pide a ustedes como conocedores de esta materia realizar la
evaluación de cada variable en cada una de las siguientes tablas, descubriendo la mejor en cada caso.
Aprendizaje No Supervisado.
Aprendizaje No Supervisado
Qué es.
Hasta aquí nos hemos concentrado en predecir el valor de una variable de respuesta Y, continua (regresión) o
categoría (clasificación), para un conjunto dado de variables predictoras X = (X1, . . . , Xp).
Se dice que este problema es de aprendizaje supervisado ya que a partir de una muestra de entrenamiento
donde se conocen los valores de (X, Y) se construye una función que permite predecir el valor desconocido
de Y para una nueva observación X.
En el caso de aprendizaje no supervisado se dispone ´únicamente de valores de X. Esto es, por ejemplo, que
no hay etiquetas de clase que identifiquen las observaciones.
Aprendizaje no supervisado es un método de Aprendizaje Automático donde un modelo se ajusta a las
observaciones. Se distingue del Aprendizaje supervisado por el hecho de que no hay un conocimiento a priori.
En el aprendizaje no supervisado, un conjunto de datos de objetos de entrada es tratado. Así, el aprendizaje
no supervisado típicamente trata los objetos de entrada como un conjunto de variables aleatorias, siendo
construido un modelo de densidad para el conjunto de datos.
Aprendizaje No Supervisado
Cuál es el Objetivo.

El aprendizaje no supervisado se puede usar en conjunto con la Inferencia bayesiana para producir


probabilidades condicionales (es decir, aprendizaje supervisado) para cualquiera de las variables aleatorias
dadas. El Santo Grial del aprendizaje no supervisado es la creación de un código factorial de los datos, esto
es, un código con componentes estadísticamente independientes. El aprendizaje supervisado normalmente
funciona mucho mejor cuando los datos iniciales son primero traducidos en un código factorial.

El aprendizaje no supervisado también es útil para la compresión de datos: fundamentalmente, todos los
algoritmos de compresión dependen tanto explícita como implícitamente de una distribución de
probabilidad sobre un conjunto de entrada.
Aprendizaje No Supervisado
Cómo Funciona.
El proceso general que se debe seguir al desarrollar un modelo de aprendizaje no supervisado se puede
resumir en el siguiente cuadro:
Aprendizaje No Supervisado
Ventajas.

1. Dada su capacidad de evolución, es ideal para ser utilizado en situaciones no previstas.


2. Suelen requerir menores tiempos de entrenamiento que las supervisadas.
3. No requiere ser entrenado previamente.
4. Se elimina la necesidad de realizar una clasificación manual en los casos de entrenamiento.
5. No existe un algoritmo general, su implementación estará condicionada a cada problema.
6. No existe seguridad sobre el comportamiento del clasificador, evoluciona con cada nuevo caso.

Desventajas.

1. No existe un esquema o receta único y general para guiar su implementación.


2. Denotará una manera distinta frente a cada problema, lo que puede traer serios problemas.
Aprendizaje No Supervisado
Clasificación.
El aprendizaje no supervisado se puede clasificar en dos categorías:

Aprendizaje no supervisado paramétrico.

En este caso, suponemos una distribución paramétrica de datos. Supone que los datos de muestra
provienen de una población que sigue una distribución de probabilidad basada en un conjunto fijo de
parámetros. Teóricamente, en una familia normal de distribuciones, todos los miembros tienen la misma
forma y están parametrizados por la media y la desviación estándar, eso significa que, si conoce el promedio
y la desviación estándar y que la distribución es normal, conoce la probabilidad de cualquier observación
futura. El aprendizaje no supervisado paramétrico implica la construcción de modelos de mezclas gaussianas
y el uso del algoritmo de maximización de expectativas para predecir la clase de la muestra en cuestión. Este
caso es mucho más difícil que el aprendizaje supervisado estándar porque no hay etiquetas de respuesta
disponibles y, por lo tanto, no hay una medida exacta de precisión disponible para verificar el resultado.

Aprendizaje no supervisado no paramétrico.

En esta versión, los datos se agrupan en grupos, donde cada grupo dice algo acerca de las categorías y
clases presentes en los datos. Este método se usa comúnmente para modelar y analizar datos con pequeños
tamaños de muestra. A diferencia de los modelos paramétricos, los modelos no paramétricos no requieren
que el modelador haga suposiciones sobre la distribución de la población, y a veces se los conoce como un
Aprendizaje No Supervisado
Agrupamiento o Clustering en el aprendizaje no supervisado.

El agrupamiento puede considerarse el problema de aprendizaje no supervisado más importante, entonces,


como cualquier otro problema de este tipo, se trata de encontrar una estructura en una colección de datos
sin etiqueta. Una definición amplia de clustering podría ser, el proceso de organizar objetos en grupos cuyos
miembros son similares de alguna manera. Un clúster es, por lo tanto, una colección de objetos que son
similares entre ellos y son diferentes a los objetos que pertenecen a otros clústeres.
Aprendizaje No Supervisado
Los algoritmos de agrupación se pueden clasificar como se detalla a continuación:

Agrupamiento exclusivo: los datos se agrupan de manera exclusiva, de modo que si un cierto punto de
datos pertenece a un grupo definido, entonces podría no ser incluido en otro clúster.

Superposición de clústeres: usa conjuntos difusos para agrupar datos, de modo que cada punto puede
pertenecer a dos o más clústeres con diferentes grados de membresía. En este caso, los datos se asociarán
con un valor de membresía apropiado.
 
Agrupamiento jerárquico: se basa en la unión entre los dos clústeres más cercanos. La condición de inicio
se realiza estableciendo cada punto de datos como un clúster, después de algunas iteraciones alcanza los
clústeres finales deseados.

Agrupación probabilística: utiliza un enfoque probabilístico.


Aprendizaje No Supervisado
Los algoritmos de agrupamiento más comunes incluyen:

Agrupación de clústeres k-Means: divide datos en clústeres distintos según la distancia al centroide de un


clúster.
 
Agrupamiento jerárquico: crea una jerarquía multinivel de clústeres mediante la creación de un árbol de
clústeres.

Mezclas de modelos gaussianos: clústeres de modelos como una mezcla de componentes de densidad


normal multivariante.
Aprendizaje No Supervisado
El aprendizaje no supervisado pretende descubrir patrones previamente desconocidos en los datos, pero la
mayoría de las veces estos patrones son aproximaciones pobres de lo que puede lograr el aprendizaje
supervisado. Por ejemplo, los algoritmos no supervisados segmentarán a los clientes en grupos grandes en
lugar de tratarlos como individuos y permitir que las empresas entreguen comunicaciones altamente
personalizadas. La definición del aprendizaje no supervisado es que no se sabe cuál será el resultado para un
modelo predictivo, lo que significa que el aprendizaje supervisado es más aplicable a contextos del mundo
real. El mejor momento para utilizar el aprendizaje no supervisado es cuando no tiene datos sobre los
resultados deseados, como determinar un mercado objetivo para un producto completamente nuevo que tu
empresa nunca haya vendido anteriormente, sin embargo, si solo estás tratando de obtener una mejor
comprensión de la base de consumidores existente, el aprendizaje supervisado es la técnica óptima.

Aplicaciones de los algoritmos de aprendizaje no supervisado.

Los algoritmos de agrupamientos se pueden aplicar en muchos campos, por ejemplo:

Marketing: encontrar grupos de clientes con un comportamiento similar dada una gran base de datos de
clientes que contienen sus propiedades y registros de compras anteriores.
Biología: clasificación de plantas y animales dadas sus características.
Seguro: identificar fraudes.
Estudios de terremotos: aglomeración de epicentros de terremotos observados para identificar zonas
peligrosas.
Aprendizaje No Supervisado
K-means.

K-means es un algoritmo de aprendizaje no supervisado que tiene como finalidad agrupar elementos en k grupos
basándose en sus características. El agrupamiento se realiza minimizando la suma de distancias entre cada objeto y el
centroide de su grupo o clúster. Se suele usar la distancia cuadrática.

Cómo Funciona.

El algoritmo consta de tres pasos:

Inicialización: una vez escogido el número de grupos, k, se establecen k centroides en el espacio de los datos, por
ejemplo, escogiéndolos aleatoriamente.

Asignación objetos a los centroides: cada objeto de los datos es asignado a su centroide más cercano.

Actualización centroides: se actualiza la posición del centroide de cada grupo tomando como nuevo centroide la
posición del promedio de los objetos pertenecientes a dicho grupo.

Se repiten los pasos 2 y 3 hasta que los centroides no se mueven, o se mueven por debajo de una distancia umbral en cada
paso.
El algoritmo k-means resuelve un problema de optimización, siendo la función a optimizar (minimizar) la suma de las
distancias cuadráticas de cada objeto al centroide de su cluster.

Puntos fuertes y débiles.


Los puntos fuertes principales son:
Aprendizaje No Supervisado
K-means.

Puntos fuertes y débiles.

Los puntos fuertes principales son:

Las principales ventajas del método k-means son que es un método sencillo y rápido. Pero es necesario decidir el valor
de k y el resultado final depende de la inicialización de los centroides. En principio no converge al mínimo global sino a un
mínimo local.
 
Fácil de entender, fácil de adaptar. Trabaja bien con conjuntos de datos grandes o pequeños, es eficiente y tiene buen
desempeño
 
Los puntos débiles principales son:

Necesita que el usuario defina el número de clústeres.


Aprendizaje No Supervisado
Clustering Jerárquico.
 
El Clustering Jerárquico (agrupamiento jerárquico o Hierarchical Clustering en inglés), es un método de data mining para
agrupar datos (en minería de datos a estos grupos de datos se les llama clústeres).

El algoritmo de clúster jerárquico agrupa los datos basándose en la distancia entre cada uno y buscando que los datos
que están dentro de un clúster sean los más similares entre sí. En una representación gráfica los elementos quedan
anidados en jerarquías con forma de árbol.
 
Cómo Funciona.

Se pueden definir dos tipos de clustering jerárquico dependiendo de la dirección en la que el algortimo ejecute el
agrupamiento:

Tipo Aglomerativo: Empezamos a agrupar desde cada elemento individual.

Al inicio cada punto o dato está en un clúster separado. A cada paso, los dos clústeres más cercanos se fusionan. Estas
fusiones de clústeres se siguen produciendo de forma sucesiva produciendo una jerarquía de resultados de Clustering. Al
final del proceso solo queda un único clúster que aglutina todos los elementos.

Divisible: Comenzamos a la inversa, partimos de un único clúster que aglomera todos los datos y vamos dividiendo en
clústeres más pequeños.
 
Puntos fuertes y débiles.
Los puntos fuertes principales son:
Aprendizaje No Supervisado
Puntos fuertes y débiles.

Los puntos fuertes principales son:


El número óptimo de clústeres se puede obtener por el mismo modelo, a través de su muy útil dendrograma.

Los puntos débiles principales son:


No es conveniente para grandes conjuntos de datos.
Métricas.
Aprendizaje No Supervisado
Métricas.

Entropía.

Entropía proviene de la teoría de la información, es un indicador que nos permite analizar el grado de desorden en un
conjunto de datos. Constituye una muy buena herramienta para medir la homogeneidad de los datos.
 
¿Cómo Funciona?

Permite elegir el mejor atributo para nuestro modelo, para lo cual, dado un grupo de datos, debemos medir la calidad de
cada variable, lo que se hace de la siguiente manera:
 
En el contexto de clasificación automática, la calidad de una variable tiene que ver con la capacidad de separar los
elementos entre las distintas clases posibles una vez que la variable toma alguno de sus valores.

Si existe una relación directa entre los valores de la variable y posibles clases, significa que la variable es muy buena para
clasificar.

La calidad de una variable entonces tiene que ver con cuán bien se separan las clases cada vez que instanciamos ese
atributo.

Las clases se separan bien cuando cada subgrupo generado por la división del atributo es homogéneo, es decir, en cada
subgrupo todos pertenecen a la misma clase.

La homogeneidad, por lo tanto, debe ser medida en la columna de la clase de los datos, que corresponde al target que
Aprendizaje No Supervisado
Métricas.

Purity.
La pureza es una medida del grado en que los grupos contienen una sola clase. Su cálculo puede pensarse de la siguiente
manera: Para cada grupo, cuente el número de puntos de datos de la clase más común en dicho grupo. Ahora tome la
suma de todos los grupos y divida por el número total de puntos de datos.
 
¿Cómo Funciona?
En el contexto del análisis de agrupaciones, Purity es un criterio de evaluación externa de la calidad de los grupos. Es el
porcentaje del número total de objetos (puntos de datos) que se clasificaron correctamente, en el rango de unidades [0...1].
Aprendizaje No Supervisado

donde N = número de objetos (puntos de datos), k = número de grupos, ci es un grupo en C y tj es la


clasificación que tiene el recuento máximo para el grupo ci
Cuando decimos "correctamente", eso implica que cada grupo ci ha identificado un grupo de objetos como
la misma clase que la verdad fundamental ha indicado. Usamos la clasificación de verdad fundamental ti de
esos objetos como la medida de la corrección de la asignación, sin embargo, para hacerlo, debemos saber
qué grupo ci se asigna a qué clasificación de verdad fundamental ti. Si fuera 100% exacto, entonces cada ci
se mapearía exactamente a 1 ti, pero en realidad nuestro ci contiene algunos puntos cuya verdad
fundamental los clasifica como varias otras clasificaciones. Entonces, naturalmente, podemos ver que la
calidad de agrupamiento más alta se obtendrá utilizando el mapeo ci to ti que tiene la mayor cantidad de
clasificaciones correctas, es decir, ci∩ti. De ahí es de donde viene el máximo en la ecuación.
Para calcular la pureza, primero cree su matriz de confusión. Esto se puede hacer recorriendo cada grupo ci
y contando cuántos objetos se clasificaron en cada clase ti.
Aprendizaje No Supervisado
Accuracy.

Se define como la medida de un modelo predictivo que refleja la proporción de número de veces que el modelo es
correcto cuando se aplica a los datos. Es el porcentaje total de elementos clasificados correctamente. 
 
¿Cómo Funciona?

El escenario ideal que todos queremos es que el modelo dé 0 False Positives y 0 False Negatives.

Por ejemplo, para la imagen siguiente se ilustra el resultado de una función “confusion_matrix” de sklearn, utilizada
para un problema de clasificación en el que estamos prediciendo si una persona tiene cáncer o no.
Aprendizaje No Supervisado

La matriz de confusión en sí mismo no es una


medida de desempeño como tal, pero casi
Vamos a dar una etiqueta a nuestra variable de destino: todas las métricas de desempeño se basan en la
matriz de confusión y los números dentro de ella.
1: cuando una persona tiene cáncer
Por lo tanto, para nuestro ejemplo:
0: Cuando una persona NO está teniendo cáncer.
Precisión = (20 + 200) / (20 + 10 + 70 + 200) =
220/300.

Es la medida más directa de la calidad de los


clasificadores. Es un valor entre 0 y 1. Cuanto
más alto, mejor.
Aprendizaje No Supervisado
Fuzzy C-means.

En muchas situaciones cotidianas ocurre el caso que un dato está lo suficientemente cerca de dos clusters de tal
manera que es difícil etiquetarlo en uno o en otro, esto se debe a la relativa frecuencia con la cuál un dato particular
presenta características pertenecientes a clusters distintos y como consecuencia no es fácilmente clasificado; fuzzy c-
means (FCM) es un algoritmo que se desarrolló con el objetivo de solucionar tales inconvenientes. Este tipo de
algoritmos surge de la necesidad de resolver una deficiencia del agrupamiento exclusivo, que considera que cada
elemento se puede agrupar inequívocamente con los elementos de su cluster y que, por lo tanto, no se asemeja al
resto de los elementos.
 
¿Cómo Funciona?
El algoritmo FCM asigna a cada dato un valor de pertenencia dentro de cada cluster y por consiguiente un dato
específico puede pertenecer parcialmente a más de un cluster. A diferencia del algoritmo c-means clásico que trabaja
con una partición dura, FCM realiza una partición suave del conjunto de datos, en tal partición los datos pertenecen
en algún grado a todos los clústeres. una partición suave se define formalmente como sigue: Sea X conjunto de datos
y xi un elemento perteneciente a X. se dice que una partición P = {C1,C2,…,Cc} es una partición suave de X si y solo
si las siguientes condiciones se cumplen:
 
1) ∀xi ∈ X ∀Cj ∈ P 0 ≤ µCj(xi) ≤1
2) ∀xi ∈ X ∃Cj ∈ P tal que µCj(xi) > 0 Donde µCj(xi) denota el grado en la cual xi pertenece al cluster Cj
Aprendizaje No Supervisado

Una partición suave que cumple esta condición adicional es llamada una partición suave restringida. El algoritmo FCM
produce una partición suave restringida y para hacer esto la función objetivo J se extiende de dos maneras, por un lado,
en la ecuación.

se incorporan los grados de pertenencia difusos de cada dato en cada cluster, por otro lado se introduce un
parámetro adicional m que sirve de peso exponente en la función de pertenencia, así la función objetivo extendida
Jm es:

Donde P es una partición difusa del conjunto de datos X formada por C1, C2, … Ck. el parámetro m es un peso que
determina el grado en el cual los miembros parciales de un cluster afectan el resultado. Al igual que c-means clásico,
FCM también intenta encontrar una buena partición mediante la búsqueda de los prototipos vi que minimicen la
función objetivo Jm y adicionalmente, FCM también debe buscar las funciones de pertenencia µCi que minimicen a

También podría gustarte