Поиск по сайту:

R в квадрате в R - Как рассчитать R2 в R?


Здравствуйте, читатели! В этой статье мы рассмотрим важную концепцию машинного обучения — R в квадрате (R2) в R-программировании.

Итак, начнем!!

Важность метрики R-квадрата ошибки

Давайте сначала поймем важность метрик ошибок в области науки о данных и машинного обучения!

Метрики ошибок позволяют нам оценить производительность модели машинного обучения в конкретном наборе данных.

Существуют различные модели метрик ошибок в зависимости от класса алгоритма.

У нас есть матрица путаницы, чтобы иметь дело с алгоритмами классификации и оценивать их. В то время как R-квадрат является важной метрикой ошибки для оценки прогнозов, сделанных алгоритмом регрессии.

R в квадрате (R2) — это показатель ошибки регрессии, который оправдывает производительность модели. Он представляет собой значение того, насколько независимые переменные могут описать значение для переменной ответа/цели.

Таким образом, модель R-квадрата описывает, насколько хорошо целевая переменная объясняется комбинацией независимых переменных как единой единицы.

Значение R в квадрате находится в диапазоне от 0 до 1 и представлено следующей формулой:

R2= 1- SSres/SStot

Здесь,

  • SSres: сумма квадратов остаточных ошибок.
  • SStot: представляет общую сумму ошибок.

Всегда помните, чем выше значение R-квадрата, тем лучше прогнозируемая модель!

I. R-квадрат в R с линейной регрессией

В этом примере мы реализовали концепцию метрики квадратичной ошибки R в модели линейной регрессии.

  1. Сначала мы загружаем наш набор данных с помощью функции read.csv().
  2. Следующий шаг – разделение данных на наборы обучающих и тестовых данных. Это достигается с помощью метода createDataPartition().
  3. Перед моделированием мы указали пользовательские функции для метрик ошибок, как показано в приведенном ниже примере.
  4. Последний шаг — применить модель линейной регрессии с помощью функции lm(), а затем мы вызвали определяемую пользователем функцию R-квадрата для оценки производительности модели.

Пример:

#Removed all the existing objects
rm(list = ls())
#Setting the working directory
setwd("D:/Ediwsor_Project - Bike_Rental_Count/")
getwd()

#Load the dataset
bike_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_data
bike = 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 Determination
RSQUARE = function(y_actual,y_predict){
  cor(y_actual,y_predict)^2
}

##MODEL 1: LINEAR REGRESSION
linear_model = lm(cnt~., train_data) #Building the Linear Regression Model on our dataset
summary(linear_model)
linear_predict=predict(linear_model,test_data[-27]) #Predictions on Testing data

LR_MAPE = MAPE(test_data[,27],linear_predict) # Using MAPE error metrics to check for the error rate and accuracy level
LR_R = RSQUARE(test_data[,27],linear_predict) # Using R-SQUARE error metrics to check for the error rate and accuracy level
Accuracy_Linear = 100 - LR_MAPE

print("MAPE: ")
print(LR_MAPE)
print("R-Square: ")
print(LR_R)
print('Accuracy of Linear Regression: ')
print(Accuracy_Linear)

Выход:

Как видно ниже, значение R-квадрата равно 0,82, т. е. модель хорошо работает для наших данных.

> 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. Квадратное значение R с использованием функции summary()

Мы даже можем использовать функцию summary() в R для извлечения значения квадрата R после моделирования.

В приведенном ниже примере мы применили модель линейной регрессии к нашему фрейму данных, а затем использовали summary()$r.squared, чтобы получить значение r-квадрата.

Пример:

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 
   

Выход:

[1] "Original data frame:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] 0.03809524

Заключение

На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы.

А пока удачного обучения!! :)