¿Que es un Algoritmo de clasificacion supervisada?

Los algoritmos de clasificación supervisada se utilizan en problemas en los cuales se conoce a priori el número de clases y los reconocimientos de patrones representantes de cada clase. Básicamente consiste en que, para clasificar automáticamente una nueva muestra, se tiene en cuenta la información que se pueda extraer de un conjunto de objetos disponibles divididos en clases y la decisión de una regla de clasificación o clasificador.

Clasificacion Supervisada - Reconocimiento de patrones

A la hora de elegir un algoritmo también es importante tener en cuenta que tipo de aprendizaje se está utilizando dentro del machine learning, es decir, si se está hablando de aprendizaje supervisado o no supervisado. De acuerdo con el tipo de aprendizaje se utilizan diferentes algoritmos.

Una de las modalidades de aprendizaje del machine learning, es la de aprendizaje supervisado. A través de esta, se entrena un algoritmo otorgándole las preguntas,que se denominan características, y las respuestas conocidas como etiquetas. Lo anterior se realiza con el fin de que el algoritmo las combine y se puedan hacer predicciones. La técnica es comúnmente utilizada para deducir una función a partir de los datos de entrenamiento, que consisten en partes de objetos dentro de los cuales uno de los componentes son los datos de entrada y el componente restante son los resultados deseados.

El objetivo fundamental del aprendizaje supervisado es la creación de funciones con la posibilidad de predecir valores correspondientes a objetos de entrada luego de haberse familiarizado con una serie de ejemplos que son los datos de entrenamiento

Asi de esta forma podriamos plantear:

                                            X = Conjunto de objetos
                                      Y = Conjunto de etiquetas o respuestas
                                    y: X -> Y = Valores conocidos de la funcion

Tanto asi que entonces:

\(y^i=y(x^i),i =1,...,i\)

El problema es encontrar la hipótesis h que permita acercar el conjunto de objetos al de respuestas. Por ejemplo, es posible contar con información de casas (conjunto de ejemplos), y los precios que le incumbe a cada una (respuesta). Con base en ello, se quiere aprender alguna regla de correspondencia entre casas y sus precios que permita predecir el costo cuando se tenga información de casas nuevas.

El aprendizaje supervisado consta de dos pasos esenciales:

  1. El entrenamiento, donde se utiliza el conjunto de entrenamiento con un
     algoritmo que permita crear una hipótesis.
  2. La prueba, en donde se utiliza la hipótesis obtenida en el paso anterior para
     generar nuevas predicciones con objetos nuevos.Y = Conjunto de etiquetas o respuestas
     

Pasos esenciales de algoritmos supervisados

Funcion del algoritmo de clasificacion:

Los algoritmos de clasificación se utilizan cuando el resultado deseado es una etiqueta discreta. Es decir, son útiles cuando la respuesta a la pregunta sobre la empresa se aloja dentro de un conjunto finito de resultados posibles. Como, por ejemplo, la determinación de si un correo electrónico es deseado o no deseado, en dicho caso solo se tienen dos opciones y se conoce como clasificación binaria.

Por otra parte, la clasificación de múltiples categorías logra capturar todo lo demás. Es muy útil para segmentar al cliente, categorizar imágenes y audios y analizar texto para optimizar el sentimiento del cliente.

Los algoritmos enfocados a la clasificación trabajan generalmente sobre la información entregada por un conjunto de muestras, patrones, ejemplos o prototipos de entrenamiento que son tomados como representantes de las clases, y los mismos conservan una etiqueta de clase correcta. A este conjunto de prototipos correctamente etiquetados se les llama conjunto de entrenamiento, y es el conocimiento disponible para la clasificación de nuevas muestras. El objetivo de la clasificación supervisada es determinar, según lo que se tenga conocimiento, cual es la clase a la que debería concernir una nueva muestra, teniendo en cuenta la información que se pueda extraer

Objetivos de la clasificacion

Algunos de los ejemplos de tareas de clasificación son:

  1. Predecir tumores malignos o benignos 
  2. Clasificar transacciones de tarjeta de crédito como legitimas o fraudulentas
  3. Clasificar estructuras secundarias de proteínas
  4. Categorizar artículos de noticias como financieros, clima, entretenimiento,deportes, entre otros. 
 

Arboles de decision

¿Que son los arboles de decision?

Se trata de un modelo de predicción, en el que se definen ciertas reglas para tomar una decisión cuando se llega a la parada final.

Estos árboles reflejan una relación entre una variable dependiente y unas independientes, se busca crear una función que permita predecir el valor de la variable objetivo para casos desconocidos.

Hay dos tipos de Árboles de Decisión: Árboles de Regresión que se usan cuando la variable objetivo es continua; y Árboles de Clasificación que se emplean cuando la variable objetivo es discreta, en esta oportunidad nos enfocaremos en este tipo.

Sobre los arboles de clasificacion y lo que son

Son estructuras con forma de árbol, sus ramas son conjuntos de decisiones, que a su vez generan reglas sucesivas para clasificar un conjunto de datos en subgrupos de datos excluyentes y exhaustivos. Las ramificaciones llevan a ciertos criterios que terminan en un una parada.

Estructura de composicion de los arboles de clasificacion:

  Nodo Raíz: Contiene todos los datos que se desean clasificar
  
  Nodos Intermedios: Son los que siguen del Nodo Raíz, permiten la selección de una categoría.
  
  Nodos Terminales o Nodos Hoja: Son la parada, no tienen descendencia, y representan una categoría específica 
                                 que se definió previamente en el dominio del problema.
                                 

Ventajas y desventajas de los arboles de clasificacion:

Las principales ventajas de este método son su interpretabilidad, pues nos da un conjunto de reglas a partir de las cuales se pueden tomar decisiones. Este es un algoritmo que no es demandante en poder de cómputo comparado con procedimientos más sofisticados y, a pesar de ello, tiende a dar buenos resultados de predicción para muchos tipos de datos.

Sus principales desventajas son que esté en tipo de clasificación “débil”, pues sus resultados pueden variar mucho dependiendo de la muestra de datos usados para entrenar un modelo. Además es fácil sobre ajustar los modelos, esto es, hacerlos excelentes para clasificar datos que conocemos, pero deficientes para datos conocidos.

Ejemplo ilustrativo

se utilizará una base de datos de los datos de una compañía de telefonía móvil, entre las variables se tienen: si el usuario está en inscrito en el plan internacional, la cantidad de minutos que consumen durante el dia, las reclamaciones y si han cancelado o no el servicio, lo que se busca es clasificar los clientes para responder diferentes preguntas.

Lo primero que se hará será cargar las librerías y el set de datos, los datos que se utilizaron están en r y se puede encontrar con el nombre “mlc_churn”

library(rpart)
library(tibble)
library(bitops)
library(rattle)
library(rpart.plot)

library(modeldata)
data("mlc_churn")

Ahora bien se procede a escoger las variables a analizar de la base de datos y a darles un nombre.

churn <- mlc_churn[,c(4,7,8,16,19,17,20)]
names(churn) <- c("Tiene plan internacional", "Minutos/día", "Llamadas/día", "Minutos internacionales", "Reclamaciones", "Llamadas internacionales","Cancelación")

Creacion de set de entrenamiento y set de test

se crea un set de entrenamiento y de test, para hacerlo se usa sample con lo cual se crea un vector que contendrá dos grupos rellenos con los números 1 y 2 tantos como el número de filas que tiene la variable, con el reemplazamiento lo que se indica es que los grupos pueden compartir elementos.El primer grupo contendra el 60% de los elementos y el segundo grupo el 40% con Traindata se incluyen las filas de nuestra dataframe que coincida con la posición del vector que contenga 1 en este caso seria el 60% en el primer caso y el 40% en el caso por los número 2

ind <- sample(2, nrow(churn), replace = TRUE, prob = c(0.6 , 0.4)) #60% entrenamiento, 40% test.
trainData <- churn[ind==1, ] #Entrenamiento
testData <- churn[ind==2, ] #Test

Creacion de arbol de decision

se crea el árbol de decisión con rpart introducimos nuestra variable dependiente y la explicamos con una selección de todas las demás variables, con method indicamos que nuestra variable dependiente es una variable cualitativa y data indica nuestro juego de datos

ArbolRpart <- rpart(Cancelación ~ ., method = "class", data = trainData)

Revision de informacion y graficos de arbol de decision

revisamos la información y realizamos el gráfico vamos a imprimir el resultado de haber aplicado el algoritmo de árbol de decisión.

install.packages('rpart')
library(rpart)
ArbolRpart <- rpart(Cancelación ~ ., method = "class", data = trainData)
print(ArbolRpart)

Salida print(ArbolRpart)

es una función integrada que imprime su argumento y lo devuelve de forma invisible.la función print() acepta tres argumentos y no devuelve ningún valor.

Plot obtenido - Arbol de decision

Posteriormente Graficamos agregando a nuestro anterior codigo

rpart.plot(ArbolRpart, extra=4)

Salida print(ArbolRpart)

Observacion

~se puede evidenciar la representación gráfica de los datos lo primero a resaltar es que el 86% de las muestras no se van de la compañía y el 14% si, el siguiente nodo es sobre los minutos al dia que hablan las personas en ese caso si es mayor o igual a 254 se escoge el sí en ese caso la mayoría abandona la compañía en un 52% y si no es así nos vamos por el no y se interpreta sucesivamente cada rama del árbol

Para validar el modelo usamos las funciones printcp que significa parámetro de complejidad del árbol,Esta función proporciona las podas óptimas en función del valor de cp.

Podamos el árbol para evitar cualquier sobreajuste de los datos. La convención es tener un árbol pequeño y el que tenga el menor error de validación cruzada proporcionado por la función printcp(), es decir, ‘xerror’

printcp(ArbolRpart)

Salida del parametro de complejidad del arbol

Podado del Arbol

el siguiente paso será realizar la poda del arbol se hará a partir del punto donde el modelo incrementó su error para la poda del arbol se utilizara el comando prune.

pArbolRpart <- prune(ArbolRpart, cp = ArbolRpart$cptable[which.min(ArbolRpart$cptable[, "xerror"]), "CP"])
printcp(pArbolRpart)

para saber exactamente desde que punto se poda el arbol nos fiajremos en printcp esto no indicara a partir de x error el momento en el que el arbol deja de descender su error, en ese caso sería en el momento donde el error arroja 0.63 y luego 0.64 es decir que ha aumentado.Ese corte sería el ideal para la poda del árbol

Plotcp() proporciona una representación gráfica del resumen de errores con validación cruzada. Los valores de cp se trazan frente a la media geométrica para representar la desviación hasta que se alcanza el valor mínimo.En el grafico se puede evidencia una cercania del error hacia la media

plotcp(ArbolRpart)

Resumen de errores frente a la media geometrica

Validando la capacidad de prediccion de nuestro arbol

testPredRpart <- predict(ArbolRpart, newdata = testData, type = "class")

on el test validamos la capacidad de predicción de nuestro arbol

Matriz de confusion

table(testPredRpart, testData$Cancelación)

Matriz de confusion resultante

Observacion

El modelo ha dicho que si para 142 casos que realmente eran si, el modelo ha dicho que si en 21 casos en los que en verdad eran no. Por contra ha dicho que no para 137 casos que realmente eran si. Finalmente el modelo ha dicho que no para 1779 casos que realmente eran no

Estadistica del modelo - Porcentaje(%) acierto

Este apartado final lo que nos dice es sobre la efectividad colectiva del modelo, asi entonces logramos programar:

sum(testPredRpart == testData$Cancelación) / length(testData$Cancelación)*100

Asi entonces logramos obtener el siguiente resultado:

Efectividad del modelo

Asi podemos decir que nuestro modelo presenta una efectividad de los aciertos de 92.40 %