Hola, lectores. En este artículo, repasaremos un concepto importante del aprendizaje automático: R al cuadrado (R2) en la programación R.
Entonces, ¡¡comencemos!!
Importancia de la métrica del error R cuadrado
¡Primero entendamos la importancia de las métricas de error en el dominio de la ciencia de datos y el aprendizaje automático!
Las métricas de error nos permiten evaluar el rendimiento de un modelo de aprendizaje automático en un conjunto de datos particular.
Existen varios modelos de métricas de error dependiendo de la clase de algoritmo.
Contamos con la Matriz de Confusión para tratar y evaluar algoritmos de Clasificación, mientras que el R cuadrado es una métrica de error importante para evaluar las predicciones realizadas por un algoritmo de regresión.
R squared (R2)es una métrica de error de regresión que justifica el rendimiento del modelo. Representa el valor de cuánto las variables independientes son capaces de describir el valor de la variable de respuesta/objetivo.
Así, un modelo R-cuadrado describe qué tan bien se explica la variable objetivo mediante la combinación de las variables independientes como una sola unidad.
El valor de R cuadrado varía entre 0 y 1 y está representado por la siguiente fórmula:
R2= 1- SSres / SStot
Aquí,
- SSres: La suma de los cuadrados de los errores residuales.
- SStot: Representa la suma total de los errores.
Recuerde siempre: cuanto mayor sea el valor R cuadrado, mejor será el modelo previsto.
I. R-cuadrado en R con regresión lineal
En este ejemplo, hemos implementado el concepto de métrica de error cuadrado R en el modelo de regresión lineal.
- Inicialmente, cargamos nuestro conjunto de datos utilizando la función read.csv().
- El siguiente paso es separar los datos en conjuntos de datos de prueba y de entrenamiento. Esto se logra mediante
createDataPartition()el método. - Antes de modelar, hemos especificado las funciones personalizadas para nuestras métricas de error como se ve en el siguiente ejemplo.
- El último paso es aplicar el modelo de regresión lineal usando
lm()la función y luego llamamos a la función R cuadrada definida por el usuario para evaluar el rendimiento del modelo.
Ejemplo:
#Removed all the existing objectsrm(list = ls())#Setting the working directorysetwd("D:/Ediwsor_Project - Bike_Rental_Count/")getwd()#Load the datasetbike_data = read.csv("day.csv",header=TRUE)### SAMPLING OF DATA -- Splitting of Data columns into Training and Test dataset ###categorical_col_updated = c('season','yr','mnth','weathersit','holiday')library(dummies)bike = bike_databike = dummy.data.frame(bike,categorical_col_updated)dim(bike)#Separating the depenedent and independent data variables into two dataframes.library(caret)set.seed(101)split_val = createDataPartition(bike$cnt, p = 0.80, list = FALSE) train_data = bike[split_val,]test_data = bike[-split_val,]### MODELLING OF DATA USING MACHINE LEARNING ALGORITHMS ####Defining error metrics to check the error rate and accuracy of the Regression ML algorithms#1. MEAN ABSOLUTE PERCENTAGE ERROR (MAPE)MAPE = function(y_actual,y_predict){ mean(abs((y_actual-y_predict)/y_actual))*100}#2. R SQUARED error metric -- Coefficient of DeterminationRSQUARE = function(y_actual,y_predict){ cor(y_actual,y_predict)^2}##MODEL 1: LINEAR REGRESSIONlinear_model = lm(cnt~., train_data) #Building the Linear Regression Model on our datasetsummary(linear_model)linear_predict=predict(linear_model,test_data[-27]) #Predictions on Testing dataLR_MAPE = MAPE(test_data[,27],linear_predict) # Using MAPE error metrics to check for the error rate and accuracy levelLR_R = RSQUARE(test_data[,27],linear_predict) # Using R-SQUARE error metrics to check for the error rate and accuracy levelAccuracy_Linear = 100 - LR_MAPEprint("MAPE: ")print(LR_MAPE)print("R-Square: ")print(LR_R)print('Accuracy of Linear Regression: ')print(Accuracy_Linear)
Producción:
Como se ve a continuación, el valor R cuadrado es 0,82, es decir, el modelo ha funcionado bien con nuestros datos.
print("MAPE: ")[1] "MAPE: " print(LR_MAPE)[1] 17.61674 print("R-Square: ")[1] "R-Square: " print(LR_R)[1] 0.8278258 print('Accuracy of Linear Regression: ')[1] "Accuracy of Linear Regression: " print(Accuracy_Linear)[1] 82.38326
II. Valor R cuadrado utilizando la función summary()
Incluso podemos utilizar el summary() functionen R para extraer el valor R cuadrado después del modelado.
En el siguiente ejemplo, aplicamos el modelo de regresión lineal en nuestro marco de datos y luego lo usamos summary()$r.squaredpara obtener el valor r cuadrado.
Ejemplo:
rm(list = ls()) A - c(1,2,3,4,2,3,4,1) B - c(1,2,3,4,2,3,4,1) a - c(10,20,30,40,50,60,70,80) b - c(100,200,300,400,500,600,700,800) data - data.frame(A,B,a,b) print("Original data frame:n") print(data) ml = lm(A~a, data = data) # Extracting R-squared parameter from summary summary(ml)$r.squared
Producción:
[1] "Original data frame:n" A B a b1 1 1 10 1002 2 2 20 2003 3 3 30 3004 4 4 40 4005 2 2 50 5006 3 3 60 6007 4 4 70 7008 1 1 80 800[1] 0.03809524
Conclusión
Con esto llegamos al final de este tema. No dudes en comentar a continuación si tienes alguna pregunta.
Hasta entonces, ¡feliz aprendizaje!!