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
X = Conjunto de objetos
Y = Conjunto de etiquetas o respuestas
y: X -> Y = Valores conocidos de la funcion
\(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.
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
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
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.
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.
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.
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.
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.
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")
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
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)
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)
~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
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
testPredRpart <- predict(ArbolRpart, newdata = testData, type = "class")
on el test validamos la capacidad de predicción de nuestro arbol
table(testPredRpart, testData$Cancelación)
Matriz de confusion resultante
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
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 %